Recv-Q&Send-Q

最近线上某些服务器老是报cpu load高,同机房其他机器却没有问题。排查发现以下异常

ss -nl

Recv-Q Send-Q                 Local Address:Port                   Peer Address:Port 
0      1024                               *:10009                             *:*     
0      100                        127.0.0.1:25                                *:*     
32     511                                *:443                               *:*     
0      32                                 *:8000                              *:*     
0      128                                *:10050                             *:*     
0      15                                 *:8006                              *:*     
0      1024                       127.0.0.1:9000                              *:*     
0      5                                  *:8649                              *:*     
3318   7680                               *:80                                *:*     
0      5                                  *:53                                *:*     
0      128                                *:22                                *:*

可以看到80端口的Recv-Q好大,并且观察一段时间发现他会涨到Send-Q一样大。其中在listen状态:

Recv-Q:代表建立的连接还有多少没有被accept

Send-Q:代表listen backlog值

其他状态:

Recv-Q:内核中的数据还有多少没有被应用程序读取

Send-Q:代表内核中发送队列里还有多少数据没有收到ack

本例可以看到nginx应为什么原因堵住了没有及时去accept新的连接,当然后来查看iostat排查到机器的写文件效率很低,nginx会在写access_log的时候堵住,大量时间用在了记日志上。


你可能感兴趣的:(nginx)