技术&日志

linux参数调优之swoole

连接数优化、系统内核调优

ulimit -n 文件最大打开数 单个进程能支持最大的 fd 取决于 ulimit -n 的值 参考资料

net.ipv4.tcp_mem  =   379008       505344  758016 
net.ipv4.tcp_wmem = 4096        16384   4194304
net.ipv4.tcp_rmem = 4096          87380   4194304
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216

sysctl -a 查看全部参数
sysctl -N [参数] 参数是否存在
sysctl -n [参数] 查看参数的值
sysctl -w arg=value # -w arg=value arg表示内核参数,value表示设置值。给内核参数临时设置一个值

net.ipv4.tcp_mem

#确定 TCP 栈应该如何反映内存使用;每个值的单位都是内存页(通常是 4KB)
#第一个值是内存使用的下限
#第二个值是内存压力模式开始对缓冲区使用应用压力的上限
#第三个值是内存上限。在这个层次上可以将报文丢弃,从而减少对内存的使用。对于较大的 BDP 可以增大这些值(但是要记住,其单位是内存页,而不是字节)

net.ipv4.tcp_rmem

#与 tcp_wmem 类似,不过它表示的是为自动调优所使用的接收缓冲区的值

net.ipv4.tcp_wmem = 30000000 30000000 30000000

#为自动调优定义每个 socket 使用的内存。
#第一个值是为 socket 的发送缓冲区分配的最少字节数
#第二个值是默认值(该值会被 wmem_default 覆盖),缓冲区在系统负载不重的情况下可以增长到这个值
#第三个值是发送缓冲区空间的最大字节数(该值会被 wmem_max 覆盖)

net.core.wmem_default = 11059200

#定义默认的发送窗口大小;对于更大的 BDP 来说,这个大小也应该更大

net.core.rmem_default = 10000000

#指定了接收套接字缓冲区大小的缺省值(以字节为单位)

net.core.rmem_max = 10000000

#指定了接收套接字缓冲区大小的最大值(以字节为单位)

net.core.wmem_max = 11059200

#定义发送窗口的最大大小;对于更大的 BDP 来说,这个大小也应该更大

net.ipv4.tcp_tw_reuse 在Ubuntu中这个参数值是0(r73)

是否socket reuse,此函数的作用是Server重启时可以快速重新使用监听的端口。如果没有设置此参数,会导致server重启时发生端口未及时释放而启动失败
表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭

net.ipv4.tcp_tw_recycle 在Ubuntu中没有发现这个参数(r73)

使用socket快速回收,短连接Server需要开启此参数。此参数表示开启TCP连接中TIME-WAIT sockets的快速回收,Linux系统中默认为0,表示关闭。打开此参数可能会造成NAT用户连接不稳定,请谨慎测试后再开启。
表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭

相关资料

内核参数调整之swoole
内核参数调整之easy-swoole
TCP/IP及内核参数优化调优
linux系统怎么查看及设置内核参数

tcp_tw_reuse、tcp_tw_recycle 使用场景及注意事项

发表评论