一、查看当前系统下所有连接状态的数
netstat -n|awk '/^tcp/{++S[$NF]}END{for (key in S) print key,S[key]}'
ESTABLISHED 38
TIME_WAIT 1000
二、看下我系统上默认的SYN队列大小
[root@log]# cat /proc/sys/net/ipv4/tcp_max_syn_backlog
262144
定义SYN队列大小:
echo 4096 > /proc/sys/net/ipv4/tcp_max_syn_backlog --定义是php配置的两倍,大于php的就行
三、看下我系统上默认的TIME_WAIT队列大小
cat /proc/sys/net/ipv4/tcp_max_tw_buckets
1000
定义TIME_WAIT的大小:
echo 4096 > /proc/sys/net/ipv4/tcp_max_tw_buckets
四、修改backlog参数
Kernel会为LISTEN状态的socket维护两个队列,一个是SYN RECEIVED状态,另一个是ESTABLISHED状态,而backlog就是这两个队列的大小之和。
当前Linux版本使用上面说法,有两个队列:具有由系统范围设置指定的大小的SYN队列 和 应用程序(也就是backlog参数)指定的accept队列。
五、查看系统默认数量:
cat /proc/sys/net/core/netdev_max_backlog
定义队列的数据包的最大数目
echo "4096" > /proc/sys/net/core/netdev_max_backlog #在每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目。
六、nginx 配置参数优化:
有代理就设置在代理上:没有代理就直接设置在web应用上(或者两个都设置)
upstream js_sdk {
#ip_hash;
server ******* weight=1 max_fails=3 fail_timeout=10s;
server ******* weight=1 max_fails=3 fail_timeout=10s;
keepalive 1000;
}
server {
listen 80 default backlog=1024;
listen 443 ssl default backlog=1024;
七、php优化:(-1 表示没有使用系统的 backlog )
vim /usr/local/php/etc/php-fpm.conf
listen.backlog = 2048 #每一个端口最大的监听队列的长度,需要配置nginx配置文件使用,如下(暂时只更改这里)
八、linux内核参进行优化:
vim /etc/sysctl.conf
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 4096 #对于还未获得对方确认的连接请求,可保存在队列中的最大数目。如果服务器经常出现过载,可以尝试增加这个数字。
net.core.somaxconn = 4096 #定义了系统中每一个端口最大的监听队列的长度,这是个全局的参数。backlog需要设置这个
使用命令使之生效:sysctl -p
linux的backlog设置
最新推荐文章于 2021-05-26 14:36:13 发布