首先说明一下我的Linux服务器配置:JDK1.8+Tomcat8
使用了SSL证书来使用HTTPS协议,同时在同一个项目里也有一个微信小程序的部分接口,这些接口处于没有被调用的情况
部署的项目是典型的JavaWeb项目+SSH框架+MySQL数据库
事情的经过是这样的。
首先我准备更新我部署在阿里云上面的项目,发现无论是我使用命令终端还是阿里云自带的远程终端都提示密码错误,检查服务器状态,发现服务器CPU在15天以前(可能更久)就一直处在100%的跑满状态。由于无法进入终端,标准的服务器排查程序无法进行,使用了重启服务器的操作,重启之后发现阿里云自带的远程终端可以上了,但是显示内核错误信息,如下图。
到了这里服务器已经崩了,联系了阿里的工程师共同处理,挂载livecd进入服务器查看,服务器内的lib lib64目录缺失了,导致系统异常,从测试服务器中拷贝lib 和lib64目录到服务器内,启动正常。
到了这里,基本上看似圆满解决了,我想查找问题原因,进入日志查看也没有发现任何问题,倒是一直在报一个异常java.lang.IllegalArgumentException: Invalid character found in method name. HTTP method names must be tokens,查阅资料后,我在server.xml配置中加入了这个属性maxHttpHeaderSize="8192",然后将更新后的项目部署上去,开启tomcat,然后关闭tomcat的时候,CPU监控突然飙升100%,即使已经确认tomcat已经关闭,使用top命令查看进程,发现了罪魁祸首:httpd进程。占了CPU100%,在强制性杀死httpd进程之后CPU才恢复正常。而且项目访问正常。
网上查了一下,这个进程是apache的,但是我是用的tomcat并没有使用apache。难道是因为同一个爸爸生的原因?
所以,我的问题是:1.造成这个问题的原因是什么?2.是否是我的操作出现了错误?3.如何避免这个问题。
万谢!
不是你猜想同一个爸爸原因,这一点是肯定的
参考http://bbs.csdn.net/topics/380028210
先查下 是哪个应用占用太多资源 比如会不会某个应用一直写log或者访问某接口等
不是,我没有装过apache,也没有应用访问接口,可是这个进程一直存在
启动命令:./RsVPJ -c httpd.conf
@男孩为何穿女装: 强制杀掉httpd进程,再重新启动,继续观察。
看下apache的日志,看样子像某个地方死循环了。