Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Tomcat提交的虚拟内存=大于x2 XmX设置_Java_Tomcat - Fatal编程技术网

Java Tomcat提交的虚拟内存=大于x2 XmX设置

Java Tomcat提交的虚拟内存=大于x2 XmX设置,java,tomcat,Java,Tomcat,我很难理解/忽略JVM当前的内存承诺(虚拟内存) 为了更好地了解情况: 我们正在运行一个封闭源代码的java应用程序。我们只是通过部署交付的.war文件来承载/运行应用程序。但总的来说,我们负责运行应用程序(这个结构虽然不太清楚,但不可协商;) 操作系统是RHEL7,TomcatV8。总的来说,我们正在运行几个Tomcat,前面有一个Apache2.2作为负载平衡器 我们经历了大规模的内存交换。似乎每次我们给服务器VM更多的RAM时,它都会立即被Tomcat消耗掉。目前,我们运行7个Tomca

我很难理解/忽略JVM当前的内存承诺(虚拟内存)

为了更好地了解情况:

  • 我们正在运行一个封闭源代码的java应用程序。我们只是通过部署交付的.war文件来承载/运行应用程序。但总的来说,我们负责运行应用程序(这个结构虽然不太清楚,但不可协商;)
  • 操作系统是RHEL7,TomcatV8。总的来说,我们正在运行几个Tomcat,前面有一个Apache2.2作为负载平衡器
  • 我们经历了大规模的内存交换。似乎每次我们给服务器VM更多的RAM时,它都会立即被Tomcat消耗掉。目前,我们运行7个Tomcat,总内存为48GB。计划升级到64GB甚至更高,但我担心这不会改变tomcats对内存的渴求

出于安全原因,我屏蔽了一些内部路径/IP/端口等

我确实知道jvm的内存消耗不仅仅是分配的堆空间,但在我的例子中,Xmx被设置为4096m,提交的内存大约为10GB——如jconsole屏幕截图所示,但也可以通过服务器上的top确认。 而这似乎是不对的。我的意思是-比堆空间多2倍以上

我也读过一些与内存相关的java内容,但如上所述,该应用程序是封闭源代码的,因此在调试/尝试这些内容时没有太多的余地, 由于我对tomcat还比较陌生,我想我最好转向一个更有经验的社区:)

以下是出现的主要问题:

  • 是否有某个我缺少的设置,它定义了最大值 tomcat的指定内存大小
  • 我们现在的行为正常吗
  • 我应该如何与开发人员讨论这个问题?我们已经做了堆转储,但它们并不像我们希望的那样有说服力。堆已正确设置,并且几乎始终处于50%左右的负载
我是不是遗漏了什么? 我知道从远处很难分辨,尤其是如果没有提供源代码的话。 但我们非常感谢您的帮助:)

谢谢!
Alex

您是否将更新的war文件重新部署到现有的Tomcat中(而不重新启动Tomcat本身)?嘿,Thilo,不,对于重新部署更新的.war文件,我们停止Tomcat,删除缓存目录(…/Tomcat/work/)以及/webapps目录中已部署的文件夹。然后复制新的.war文件,相应地设置权限并部署。