somaxconn
- 该参数应该是决定一个服务能够同时处理多少个网络请求的核心参数.
- 一个程序能够支持多少个访问参数,是有两部分来决定, 第一部分是somaxconn ,第二部分是应用服务器启动时传递过来的backlog参数.比如nginx貌似就传递 511个backlog的参数过来. tomcat默认的参数数量是100个.
- 实际上应用服务器的最终参数是由min(somaxconn,应用服务器的backlog) 的较小的值来决定的
例如:
[root@centos76oracle19c ~]# ss -lnt
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 127.0.0.1:6379 *:*
LISTEN 0 128 *:111 *:*
LISTEN 0 128 *:80 *:*
LISTEN 0 128 *:6000 *:*
LISTEN 0 5 192.168.122.1:53 *:*
LISTEN 0 128 *:22 *:*
LISTEN 0 128 127.0.0.1:631 *:*
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 128 *:443 *:* :::*
LISTEN 0 128 :::111 :::*
LISTEN 1 100 :::5200 :::*
- 明显可以看到 5200 端口 java访问的数据是 100个 nginx的是 128个
- 查看 somaxcon的参数
[root@centos76oracle19c proc]# cat /proc/sys/net/core/somaxconn
128
修改参数的办法
1. 临时修改 echo 2048 > /proc/sys/net/core/somaxconn
2. 用旧修改 vim /etc/sysctl.conf
添加内容
net.core.somaxconn=2028
然后执行 sysctl -p 使之生效.
实际上可以使用 如下参数来修改 连接的backlog的数目
server:
port: 5200
tomcat:
maxThreads: 1000
acceptCount: 10000
查看结果为:
[root@centos7ver2009 ~]# ss -lnt |grep 5200
LISTEN 0 2048 [::]:5200 [::]:*
- 注意 因为我backlog 是限制到了 2048 所以会这样,如果我讲 2048 扩大十倍结果就会是10000了 因为他要取两者中较少的值.
tcp_max_syn_backlog
- 一般说法里面 socket max connection 的参数值来决定全连接, 也就是可以服务器可以提供服务的链接数目
- tcp_max_syn_backlog 的参数才是决定有多少个连接可以进入等待简历established 长久连接的连接数目
- 与之对应的tomcat 里面也有一个 accept-count 的参数也是来绝对等待连接的数目的.
修改方法类似:
1. 临时修改 echo 2048 > /proc/sys/net/ipv4/tcp_max_syn_backlog
2. 持久修改 vim /etc/sysctl.conf
net.ipv4.tcp_max_syn_backlog=2048
time wait 参数等.
- 改天再总结 书还没看..