1 访问过慢

现象: 突然f5 检查后端 Nginx 节点,大部分 Nginx 节点总是连接超时,而看监控 nginx 资源使用率都正常

1.1 尝试查看日志

1
2
3
...
... shm_add_node::ngx_slab_alloc_locked() failed: used_size[36127530], used_node[10178]
...

1.1.1 查看内存分配

其实不是这原因,以为请求分配不了内存,但这里写一下查询方法

1
2
3
4
cat /proc/buddyinfo
Node 0, zone DMA 1 0 0 0 2 1 1 0 1 1 3
Node 0, zone DMA32 25063 30201 27755 7226 864 202 138 123 105 0 0
Node 0, zone Normal 470959 338802 126112 42615 23679 12683 6284 1869 0 0 0

1.2 尝试查看与36127530相关的监控

这部只能用笨方法一个一个查询
image.png

1.3 查询什么导致 vts 内存增加

经过对比发现用问题的 Nginx 都是启动很久,导致 vts 内存不够,重启 Nginx 可临时解决

1.4 永久解决

现在定位到问题,尝试网上 vts 不释放内存问题,最后发现有一个这样的参数vhost_traffic_status_filter_max_node

1
2
3
4
5
6
7
8
9
http {
...
vhost_traffic_status_filter_max_node 10000 uris client::ports; # 重点这参数
...
server {
server_name example.org;
...
}
}