网站链接数居高不下导致服务器卡死的情况排查

最近系统突然出现卡顿的情况,通过终端检查发现一些链接数特别高,但是一直降不下来,中途也尝试过将apache的参数调整但是一直解决不了问题。

为了解决卡住的问题做过几次尝试:

排查1
1.检查服务器硬盘容量是否用完。结果剩余空闲空间占比为80%,正常。
2.检查服务器内存使用量,16G内存使用了15G。调整服务器内存到32G。
3.检查服务器网卡工作模式速度是否正常。结果网卡速度为1000兆,正常。
4.检查防火墙配置及生效策略情况。结果为正常。

排查2:检查Apache配置。
1.检查apache配置中工作模式为 prefork 模式,调整客户端连接数最大值到20000,大约三个小时左右会用满,按这个结果意味着根本原因不在这里。
2.排查apache配置中keepAlive配置,默认是关闭的。我打开配置后,排查并没有好转。理论上所有链接超时后之后应该是会断开的。
3.排查TCP连接情况:watch -n 1 -d “ss|grep http”
通过分析链接数情况,了解大部分应该是门禁设备导致的,印象中之前链接数应该是很低的,为何突然最近出现问题,让我回想起前两天调整过数据库服务器防火墙策略。

排查3:检查apache网站的访问日志和错误日志。
通过排查apache错误日志,发现存在大量的数据库连接报错(此时此刻应该想到前两天防火墙策略调整的时间点刚好契合)。配合前面的门禁设备链接数不下降的问题,确认应该是门禁设备一直尝试提交数据但是数据库服务器没有回应,所以链接数一直增加。

通过排除数据库防火墙导致连接失败的问题,随之tcp连接数超高的问题也解决了。

总结:通过不停地尝试解决,从最基本的配置参数查起,再到错误日志,结合最近网络或者是防火墙的调整,大概能知道问题在哪里。