公司有一个服务器,部署在LightSail上,Docker,通过容器部署了Kafuka,MongoDB,Tomcat,MySQL等等的服务器,虽然部署了很多东西,但是使用频率并不高,CPU占用率常年5%一下,但是有个奇怪的问题,每隔一个月,或者一个月不到老是会连不到,等发现都是要使用的时候,才发现挂掉了,重启之后又很正常,完全不知道什么原因。

  昨天,18:00又挂了,因为时间捕捉到了,所以调查了下问题,其实还是不能确定,这里笔记记录一下,帮助以后进一步分析问题,解决问题。

  首先肯定是怀疑我们的程序,Web站点是不是造成问题的根源,理论上在容器里面,即使挂掉也不应该会导致整个服务器挂,但是还是调查了几个相关容器的Log,这个特定时间节点前后没有发现什么异常。

  通过询问OpenAI,在服务器上执行了,几个命令,来特定情况。

sudo journalctl --since "2024-06-12 07:00:00" --until "2024-06-12 16:00:00"
Jun 12 07:36:26 ip-172-26-9-228 systemd-networkd[330]: ens5: Could not set route: Connection timed out
Jun 12 07:36:27 ip-172-26-9-228 systemd-networkd[330]: ens5: Failed
Jun 12 07:38:10 ip-172-26-9-228 systemd[1]: snapd.service: Watchdog timeout (limit 5min)!
Jun 12 07:38:48 ip-172-26-9-228 systemd[1]: snapd.service: Killing process 20009 (snapd) with signal SIGABRT.

大概在07:36连不上的,感觉是网路层面的问题。直接费解了。

sudo journalctl -xe

进一步,输出详细错误,还是没有啥帮助

sudo grep "Jun 10 07:" /var/log/syslog

查看,这个时间点有什么奇怪的操作,其实并没有。

sudo grep "Jun 10 07:" /var/log/auth.log

异常的登录,还是没有。

who 
sudo apt-get install finger
finger

使用who,还有finger命令,分析登录用户,还是没有什么异常。

  最后没办法,查了下打开文件数

sudo lsof | wc -l

得到了一个恐怖的数字69000+,有点不可思议,考虑到系统限制似乎只有65000+,是不是这里的问题?

ulimit -n
65528

发现最大的占用(超过一半)来自于进程1880,使用命令查询到底是个啥

ps -p 1880 -o pid,ppid,cmd,%mem,%cpu
//获取完整的命令行
cat /proc/1880/cmdline

发现似乎是Kafuka的启动Java命令,目前调查就是到这里,由于目前基本不使用Kafuka了,所以暂时决定停掉这个容器,然后看看接下来还会不会发生类似 隔段时间重启的情况。祈祷问题已经解决。

最后修改日期: 2024年6月13日

作者