web服务器:/etc/sysctl.conf
net.core.somaxconn = 262144
net.core.netdev_max_backlog = 262144
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
net.ipv4.tcp_syncookies=1
net.ipv4.tcp_tw_reuse=1
net.ipv4.tcp_tw_recycle=1
net.ipv4.tcp_fin_timeout = 15
net.ipv4.tcp_max_tw_buckets=5000
net.ipv4.tcp_max_syn_backlog=8192
net.ipv4.ip_local_port_range = 1024 65000
fs.file-max = 51200
##########################################################################
1.net.core.somaxconn可以控制系统的并发连接数/proc/sys/net/core/somaxconn默认是128,在web服务器中遇到高并发的请时可能导致链接超时或者触发重传,从而影响用户体验。
这个值不能调高系统的最大连接数,但是能调高系统同时发起连接的tcp连接数,如果是由于系统网络并发连接过多导致连接不上,调高这个参数应该有效。
2.net.core.netdev_max_backlog表示在每个网络接口接受数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目。/proc/sys/net/core/netdev_max_backlog默认是1000。
3.kernel.msgmnb规定内核中每个消息队列中的最大字节限制/proc/sys/kernel/msgmnb默认16384。
4.kernel.msgmax规定系统中消息队列的最大数量/proc/sys/kernel/msgmax默认8192。
5.kernel.shmmax定义了共享内存段的最大尺寸,一般情况下可以设置最大共享内存为物理内存的一半。默认33554432
6.kernel.shmall表示系统一次可以使用的共享内存总量(以页为单位)。默认2097152
7.net.ipv4.tcp_syncookies表示是否打开SYN Cookie功能可以防止部分SYN攻击
8.net.ipv4.tcp_tw_reuse表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭。
9.net.ipv4.tcp_tw_recycle表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。
上面这两项都是为了加速回收处于TIME_WAIT状态的资源。
10.net.ipv4.tcp_fin_timeout表示如果套接字由本地要求关闭,这个参数决定了它保持在Fin_Wait_2状态的时间。/proc/sys/net/ipv4/tcp_fin_timeout默认160秒。
这个可以减少在异常情况下服务器从FIN-WAIT-2转到TIME_WAIT的时间。
11.net.ipv4.tcp_max_tw_buckets表示系统同时保持TIME_WAIT套接字的最大数量,如果超过这个数字,TIME_WAIT套接字将立刻被清除并打印警告信息。/proc/sys/net/ipv4/tcp_max_tw_buckets默认262144
12.net.ipv4.ip_local_port_range表示对外连接的开放端口范围默认是32768-61000
13.fs.file-max指定了系统可以分配的文件句柄的最大数目(通过ulimit -n可查看默认的打开数量1024)也可以通过修改/etc/security/limits.conf添加 * hard nofile 51200
/proc/sys/fs/file-max表示的是系统级别的能够打开的文件句柄的数量,而ulimit -n控制进程级别能够打开的文件句柄的数量。
注:tcp_tw_reuse开启和tcp_tw_recycle开启的情况下有可能在高并发的情况下会引起时间戳过期,系统丢失tcp请求。