记录一次访问量瞬间增加,导致请求卡住的问题排查过程

2023-02-17 15:15:18 浏览数 (1)

2022.11.07号下班路上突然收到许多用户反馈,说小程序进不去了。然后自己试了一下,打开一直转圈,于是快马加鞭赶回家,打开了电脑。

基本情况

  1. 文件收集小程序:帮助用户更加方便的收集各种类型的文件,同时上传之后的文件可以在线预览。
  2. 服务器为腾讯云2核4G6M的轻量云,同时还运行着其它的一些服务。
  3. 主要消耗的是上行带宽,下行主要消耗来自于文件在线预览,这部分通过内网反代理,由另外一台低配服务器负责。

问题排查

打开电脑,尝试连接SSH,连接时间比正常情况下要多不少。等待的过程中同时登录腾讯云后台,排查之后发现情况如下:

  1. 内存占用30%多,CPU负载正常,磁盘读写正常。
  2. 腾讯云后台下行带宽正常,上行一直处于峰值。

按理说照这个情况服务器应该游刃有余,然后通过腾讯云服务器日志的历史记录和小程序后台数据比对,发现变化:

  1. TCP连接数10s内400 ,比往日多2倍多,CPU负载波动幅度较大。
  2. 小程序的实时访问次数达10w ,比往日同期最高都多了1倍多。

通过负载看不出大的问题,继续排查。

1.php-fpm进程数

通过Top命令发现php-fpm进程比平时多了很多,大概数了一下有70多个,达到设置的上限150个还差不少。

代码语言:javascript复制
# top  #查看进程运行情况
# ........

2.TCP连接数

ss命令用来显示处于活动状态的套接字信息,看了一下跟腾讯云显示的差不多

代码语言:javascript复制
$ s -ss #套接字信息
$ netstat -n | awk '/^tcp/ {  S[$NF]} END { for(a in S) print(a,S[a])}'  #百度找的
....

3.Nginx允许连接数

顺带检查了一下,TCP连接数10s才400多,Ngixn上限设置的5w多...

代码语言:javascript复制
# worker_connections 51200;

4.mysql连接数

代码语言:javascript复制
show status like  'Threads%';    //查看连接数
show processlist; //查看连接数

总数40多个,大部分处于空闲休眠,活跃的也没几个。顺带看了一下设置的连接数上限,450,够用

0 人点赞