前言
早上一个用户微信反馈,悠悠拍卖行的验证码不能出现。一开始我以为网络的问题,让他重启下软件,结果还是无法解决,于是开电脑,访问服务器,发现服务的容器退出了。发现问题还好,但是找到问题出现的时间和日志是个重点,特此记录下本次问题的过程。
过程
-
查看docker的退出时间
docker ps -a
发现是6个小时之前退出的。 -
查看docker的自身日志
docker logs --tail=100 xxx容器id
没发现什么错误提示。 -
进入容器内部,查看tomcat的日志
docker exec -it xxx容器id /bin/bash
继续没有结果。
org.apache.coyote.http11.Http11Processor.service Error parsing HTTP request header
Note: further occurrences of HTTP request parsing errors will be logged at DEBUG level.
java.lang.IllegalArgumentException: Request header is too large
- 查看容器所在服务器本身的目录
目录 /var/log
-
排序日志
[root@centos03 log]# ls -lat -
确定应该查看哪个日志文件
我的服务是tomcat容器,服务器的内存只有2G,因此猜测是内存溢出,进程被关。
该日志通常位于 messages中 -
定位内存溢出的日志
[root@centos03 log]# tail -n 1000 messages | grep out
[root@centos03 log]# tail -n 1000 messages | grep out
Oct 5 03:04:56 centos03 kernel: [<ffffffff9f998146>] out_of_memory+0x4b6/0x4f0
-
猜测原因
此时内存超出,需要考虑程序自身的行为。定时任务有3个,服务器物资统计、定时同步封号数据、删除过期数据。但是时间不符合。
结合应用的时间点,应该是同步封号数据出现问题。
应该是程序正在执行一些计划任务,此时又出现同步数据的操作。导致内存溢出。 -
解决
最终的定位问题应该是上传文件过大引发的。目前修改程序的文件大小限制。限制为10MB
提交后等待观察。
网友评论