美文网首页
tomcat容器异常退出的解决过程

tomcat容器异常退出的解决过程

作者: 有时右逝 | 来源:发表于2020-10-05 11:00 被阅读0次

    前言

    早上一个用户微信反馈,悠悠拍卖行的验证码不能出现。一开始我以为网络的问题,让他重启下软件,结果还是无法解决,于是开电脑,访问服务器,发现服务的容器退出了。发现问题还好,但是找到问题出现的时间和日志是个重点,特此记录下本次问题的过程。

    过程

    • 查看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
    提交后等待观察。

    相关文章

      网友评论

          本文标题:tomcat容器异常退出的解决过程

          本文链接:https://www.haomeiwen.com/subject/gmzouktx.html