Linux服务器同时运行多个Tomcat - Out of memory 问题

       网上已经有很多介绍如何在服务器同时安装并且运行多个Tomcat服务器的文章,主要是对系统环境变量和Tomcat的Conf目录下的的配置文件进行修改,在此就不再赘述,但是有个问题需要我们注意下:那就是因为系统内存不足,刚刚启动的Tomcat服务进程被系统Kill掉,导致客户端或浏览器的请求超时或失败。

       笔者在Linux服务器上安装多个Tomcat后,  也正常进行了相关配置,正常启动其中一个Tomcat服务后,在浏览器输入IP地址,  页面正常显示,笔者内心一阵欣喜,还挺顺利的嘛^_^。但是继续输入startup命令,启动第二个tomcat后,奇怪的现象就出现了,在远程终端输入类似 'ls', 'cd' 之类的简单的命令后,控制台迟迟没有任何反应,给人的感觉就像是主机卡死了一样,同样用手机客户端请求服务端接口或页面也会出现超时错误,这个卡死的状态有时候需要等待10几分钟才能恢复,让人有些崩溃。

       笔者随后进行了一系列的检测,各个Tomcat的端口号已经进行了修改,端口号不存在相互占用的情况,另外也查看了Tomcat的日志记录,并没有发现任何异常,Tomcat自身启动慢的问题也已排除,最后又查了一遍Nginx的相关配置,仍然没有解决问题, 一时之间,百思不得其解!心想要是代码的业务逻辑有问题还好解决,但对Linux系统、Tomcat服务器,我也只会基础的配置和使用,并没有很深入的学习过,一时也没有头绪不晓得怎么入手解决!一看时间已经快到晚上12点了,试来试去也没有结果,想想还是洗洗睡吧!

       早上起来,大概是昨晚睡得还可以,于是神清气爽地在电脑前坐下,继续解决昨天的这个奇怪问题,不出意外仍然卡在昨天那个死节上,不过快到中午的时候,脑子终于灵光一闪:既然该查的问题都查了,服务器仍然卡的要死,那是不是应该查看下系统内存是否有问题呢?一查果然找到的问题的根结所在:

启动tomcat服务器前的内存情况截图:

启动两个tomcat后的 内存情况截图:

       从上面的截图,可以明显看到, free一栏对应的内存从 407340K 下降到了 64684K ,如果这个时候发起客户端请求或执行某些操作,就会导致内存不足,从而杀死刚启动的Tomcat进程,那么我们如何知道内存已经回收了刚刚启动的Tomcat服务进程呢?

       在正常启动完两个Tomcat后(Tomcat 1的端口号是11001, Tomcat 2的端口号是11002),可以通过命令 netstat -alnp | grep 11001 和 netstat -alnp | grep 11002 查看到占用这两个端口的进程号分别是:22666 和 22602。

       接下来发起客户端的请求,等到那个卡死的现象出现又恢复正常后,在终端输入命令:tail -1000f /var/log/messages 查看系统日志,截图如下:可以看到Out of memory: Kill process 22602 (java) score 229 or sacrifice child, 进程 22602 对应的 Tomcat 服务因为内存不足被回收了。

       最后,系统为什么要先杀死Tomcat进程,而不是其他进程呢?原因是系统发现剩余内存过小时会自动优先清理占用内存较大的进程,Tomcat进程因为占用内存较大,所以经常会被系统清除掉。现在我们重新启动一个新的Tomcat服务,  在控制台输入输入’top‘命令,可以查看到目前暂用内存大小的排序情况, 从下面的截图,可以看到排在第一位就是Tomcat进程,占用的内存比率(%MEM) 是24.8%,因此就会优先被系统回收了。 

       如果你的系统内存本来就不大,例如笔者的内存配置是1G,在系统上安装运行越来越多软件同时,也要随时警惕因为内存不足导致的异常状况发生。至此,问题的症结已经找到,但是新的烦恼又来了,笔者又得开始准备升级内存的💰了 ~_~ 

参考文章:

linux内存不足导致tomcat宕机_zerolick的博客-CSDN博客

linux内存不足导致tomcat自动关闭_daxiong0816的博客-CSDN博客_linux tomcat自动停止

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

思涛的博客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值