当前位置:论坛首页 > Linux面板 > 求助

【已解答】高并发情况下,网站监控报表是否有可能导致ng...

发表在 Linux面板2023-4-10 10:38 [复制链接] 1 3263

本帖最后由 堡塔运维香菜卷 于 2023-4-10 12:03 编辑

我有一个服务器,服务器上只有一个网站利用到了nignx,  并发可能在几十左右,cpu负载一直在10%左右。但是过了一段时间,cpu突然就从10%变成了100%。
在问题发生时,网站一直在转圈圈,网络出入、带宽降至0(排除DDOS),内存、TCP连接数等都出于正常状态(缓慢下降)。利用  netstat -s | egrep "listen|LISTEN"  查看 溢出数量,发现一直在增长,证明tcp没能建立连接。通过top查看,是nginx  100%,利用jstack 查看 java程序,当时所有的java线程都处于等待状态,于是可以认定为是nginx占用了cpu,导致网站迟迟无法响应,重启nginx后正常。


事后复盘时,下意识的觉得,是tcp连接数满了,导致nginx建立tcp失败,但是调大了tcp_max_syn_backlog, net.core.somaxconn, tcp_max_tw_buckets, tcp_tw_reuse, ip_local_port_range等参数,仍然会在一段时间之后,cpu从10%突然飙升100%。且通过腾讯云服务器的监控,此时的tcp连接数仅2000左右,远远没达到峰值。


在第二次事故发生时,利用  netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'  查看 建立连接的数量,发现事故发生时,相比于正常情况,各个数量均在下降,证明tcp链接无法建立,所以排除了tcp队列满导致的溢出。

解决办法:事后利用宝塔云防火墙,封禁请求较高的IP,网站一直就无事发生。但我一直疑惑,那段时间nginx在忙个啥,又不转发请求,又不建立连接,还一直抢夺cpu。直到发现了这个帖子,【已解答】nginx CPU100% 爆 负载100% - Linux面板 - 宝塔面板论坛 (bt.cn)  让我发现利用nginx不止有我的java,还有网站监控报表。于是我将防火墙关闭,将监控报表关闭,目前为止没有出现问题。
我无法完全肯定是报表的问题,并且也没办法把机器给到你们测试,只能给一份反馈,给你们做一个参考。
报表:7.2.2

系统:CentOS 7.9.2009 x86_64(Py3.7.9)
宝塔面板:7.9.3
使用道具 举报 只看该作者 回复
发表于 2023-4-10 12:02:59 | 显示全部楼层
您好,感谢您的反馈。但是网站监控报表这个功能是不会插入到nginx的服务里面的,他获取的是您的站点的请求日志然后再进行一个统计并可视化展示,您也可以尝试更新一下插件使用。
使用道具 举报 回复 支持 反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

普通问题处理

论坛响应时间:72小时

问题处理方式:排队(仅解答)

工作时间:白班:9:00 - 18:00

紧急运维服务

响应时间:3分钟

问题处理方式:宝塔专家1对1服务

工作时间:工作日:9:00 - 18:30

宝塔专业团队为您解决服务器疑难问题

点击联系技术免费分析

工作时间:09:00至18:30

快速回复 返回顶部 返回列表