Java 当进程达到一定内存大小时,在Linux中重新启动服务
我知道这不是一个好的解决方案,但是我们有一个在tomcat上运行的第三方产品的问题,它经常抛出堆空间错误。我想知道是否有一种方法可以监控某个进程所消耗的内存(不是使用PID而是进程名),如果超出了限制,则重新启动tomcat服务 我试着给它分配更多的内存,但这只会减慢进程Java 当进程达到一定内存大小时,在Linux中重新启动服务,java,linux,tomcat,heap-memory,Java,Linux,Tomcat,Heap Memory,我知道这不是一个好的解决方案,但是我们有一个在tomcat上运行的第三方产品的问题,它经常抛出堆空间错误。我想知道是否有一种方法可以监控某个进程所消耗的内存(不是使用PID而是进程名),如果超出了限制,则重新启动tomcat服务 我试着给它分配更多的内存,但这只会减慢进程 感谢记住ps在实际使用的内存(它显示分配的内存)方面本质上是不精确的,使用ps和jps的组合,您可能会得到一个“足够好”的度量: ps u -p `jps -v | grep "<yourname>" | awk
感谢记住
ps
在实际使用的内存(它显示分配的内存)方面本质上是不精确的,使用ps
和jps
的组合,您可能会得到一个“足够好”的度量:
ps u -p `jps -v | grep "<yourname>" | awk '{print $1}'`
其中,VSZ
(或虚拟大小)是您需要的数字
欢呼,< /P>如果OOM有一些规则,你可以考虑使用T.X代码> CRON/CODE >每一个T-X时间单位重新启动它。我们尝试过,但是没有模式,数百个用户在8小时内随机连接。它可以检测OOM异常并自动重新启动包装好的服务。但我想找到更好的解决办法。
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 6816 0.6 7.1 1454376 281436 pts/2 Sl+ Feb03 102:20 /usr/bin/java -Xmx1024M -Xms512M -jar /opt/minecraft/minecraft_serv