系统优化-方法论-排查系统吞吐下降的问题

接文章[/系统优化-案例分析-网络丢包分析]

当服务的请求数变大时候,我们往往发现系统吞吐下降。排查思路如下:

优化连接数

用ss命令发现estab的很少,timewait很多。

1
2
3
ss -s
查看
TCP: 53 (estab 9, closed 38, orphaned 0, synrecv 0, timewait 38/0), ports 0

通过dmsg命令,查看系统的error信息排查是否是conntrack的问题。通过修改参数来解决。

1
2
3
4
5
6
7
8
9
dmsg |tail

#查看最大值
sysctl net.netfilter.nf_conntrack_max
#查看当前值
sysctl net.netfilter.nf_conntrack_count

#设置最大值
sysctl -w net.netfilter.nf_conntrack_max

排查应用问题

比如nginx和tomcat等我们可以查看应用错误的原因,因为大部分采用master+worker的方案,我们可以增加worker的进程

排查tcp方面的原因

用netstat -s|grep tcp 查看丢包原因,如果发现丢包原因是socket overflowed,则用ss -ltnp命令看下Linsterner端口的队列情况,增大backlog相关的参数。

1
ss -ltnp

优化端口范围

如果出现类似这样的错误,我们可以看下是否是端口范围过小导致没法创建新连接

1
2
3
(99: Cannot assign requested address)

sysctl net.ipv4.ip_local_port_range