我正在处理一个系统,该系统在其自己的JVM中为每个客户运行一个Java应用程序。我们现在有大约六台专用服务器,它们现在总共运行近100个JVM,并且有一组用于管理这些JVM的自定义脚本。这种设置在这一点上真正展现了它的时代:管理许多JVM正在成为监控/管理的噩梦,并且我们一直在处理堆大小问题。我们希望采用更现代化的方法,并在每台物理机器的一台应用程序服务器上运行大量应用程序。但是,保持应用程序的独立性在隔离方面具有明显的优势(例如,内存不足错误只会影响一个客户)。每个客户的软件堆栈的内存要求差异很大。多个JVM与单个应用程序服务器
我的问题:有没有办法让这里两全其美,并在一个JVM(应用程序服务器)中运行多个应用程序,并仍保持某种级别的隔离?或者这仅仅是现代生活中的事实,你现在需要管理一组应用程序的内存需求?除了应用服务器或Java EE容器(例如Wildfly或Spring),我还有其他解决方案吗?看起来这个系统是另一个时代的坚持!
现代方法越来越多地使用虚拟化主机上的每个应用程序JVM。对于您需要的规模,我强烈建议您查看Cloud Foundry以抽象出您正在讨论的大部分管理。 – chrylis 2014-10-02 02:00:59
与chrylis的评论类似,现代方法不使用应用程序服务器。多租户也是死的,因为为什么有这样的麻烦,当你可以使用像Docker这样的虚拟机或容器来给你真正的分离? – SteveD 2014-10-02 08:23:06
我认为你关注的是一个错误的问题:为什么你经常遇到堆大小问题?你的应用程序是否泄漏内存?你有无限的内存消耗吗?您的应用程序是否不适用于给定工作负载的稳定内存使用? – SteveD 2014-10-02 16:26:11