“高并发情况下Linux服务器内核配置”的版本间的差异
来自Alex's wiki
(→以下是《Nginx高性能Web服务器详解》中的建议配置(P67):) |
|||
(未显示3个用户的19个中间版本) | |||
第1行: | 第1行: | ||
− | 风行的配置: | + | |
+ | ==风行的配置:== | ||
<source lang=bash> | <source lang=bash> | ||
modprobe ip_tables | modprobe ip_tables | ||
第42行: | 第43行: | ||
相应的配置文件在 '''/etc/sysctl.conf'''<br /> | 相应的配置文件在 '''/etc/sysctl.conf'''<br /> | ||
使用 <font style="background:lightgray">#/sbin/sysctl -p</font> 命令使修改生效<br /> | 使用 <font style="background:lightgray">#/sbin/sysctl -p</font> 命令使修改生效<br /> | ||
− | 以下是《Nginx高性能Web服务器详解》中的建议配置(P67): | + | ==以下是《Nginx高性能Web服务器详解》中的建议配置(P67):== |
<nowiki> | <nowiki> | ||
#添加: | #添加: | ||
第49行: | 第50行: | ||
net.ipv4.tcp_max_orphans = 262144 | net.ipv4.tcp_max_orphans = 262144 | ||
net.ipv4.tcp_timestamps = 0 | net.ipv4.tcp_timestamps = 0 | ||
− | net.ipv4. tcp_synack_retries = 1 | + | net.ipv4.tcp_synack_retries = 1 |
− | net.ipv4. tcp_syn_retries = 1 | + | net.ipv4.tcp_syn_retries = 1 |
#修改 | #修改 | ||
net.ipv4.tcp_max_syn_backlog = 262144 | net.ipv4.tcp_max_syn_backlog = 262144 | ||
+ | </nowiki> | ||
+ | 另可以加以下配置(参考下一节的说明): | ||
+ | <nowiki> | ||
+ | net.ipv4.tcp_timestamps = 1 | ||
+ | net.ipv4.tcp_tw_reuse = 1 | ||
+ | </nowiki> | ||
+ | |||
+ | ==以下是[http://blog.csdn.net/hhy_huang/article/details/7386516?locationNum=4&fps=1 压力测试(实例)]这篇文章中的配置:== | ||
+ | 修改系统内核,增加系统允许的最大访问次数,最大程度发挥TT的效率,这里可以贴出E的参考方案,在50000次并发以上效果明显。<br /> | ||
+ | [http://www.cnblogs.com/lulu/p/4149312.html tcp_tw_reuse、tcp_tw_recycle 使用场景及注意事项] | [http://blog.csdn.net/bytxl/article/details/46437363 linux 内核TCP 相关参数解释] | [http://blog.csdn.net/lcx46/article/details/12418873 Linux和windows下内核socket优化项]<br /> | ||
+ | [http://www.net-add.com/a/xitongyouhua/linuxxitong/2017/0408/22.html 弄清TIME_WAIT彻底解决TCP:time wait bucket table overflow]<br /> | ||
+ | |||
+ | [http://mp.weixin.qq.com/s/ALzAIcpUz0RGw44jXY14mA 基于Nginx实现10万+并发,你应该做的Linux内核优化] | ||
+ | |||
+ | 注:TCP:time wait bucket table overflow 所在位置:/var/log/messages ,参考[http://blog.csdn.net/a_bang/article/details/64930109 kernel: TCP: time wait bucket table overflow的问题剖析及解决方法] | ||
+ | <nowiki> | ||
+ | #!/bin/sh | ||
+ | sysctl -w net.ipv4.tcp_tw_reuse=1 | ||
+ | sysctl -w net.ipv4.tcp_tw_recycle=1 #注,这个配置不对,参考:弄清TIME_WAIT彻底解决TCP:time wait bucket table overflow | ||
+ | sysctl -w net.ipv4.tcp_fin_timeout=10 | ||
+ | sysctl -w net.core.wmem_max=8388608 | ||
+ | sysctl -w net.core.rmem_max=8388608 | ||
</nowiki> | </nowiki> |
2017年12月15日 (五) 03:28的最后版本
风行的配置:[编辑]
modprobe ip_tables modprobe iptable_filter modprobe ip_conntrack hashsize=262144 modprobe ip_conntrack_ftp modprobe ipt_state modprobe iptable_nat modprobe ip_nat_ftp modprobe ipt_MASQUERADE modprobe ipt_LOG modprobe ipt_REJECT echo 262144 > /proc/sys/net/core/netdev_max_backlog echo 1048576 > /proc/sys/net/core/somaxconn echo 524288 > /proc/sys/net/core/wmem_max echo 65536 > /proc/sys/net/core/wmem_default echo 524288 > /proc/sys/net/core/rmem_max echo 65536 > /proc/sys/net/core/rmem_default echo "8096 16384 32768" >/proc/sys/net/ipv4/tcp_wmem echo "8096 16384 32768" >/proc/sys/net/ipv4/tcp_rmem echo 1048576 > /proc/sys/net/ipv4/ip_conntrack_max echo "1024 64000" > /proc/sys/net/ipv4/ip_local_port_range echo 131072 > /proc/sys/fs/file-max echo 1 > /proc/sys/net/ipv4/tcp_tw_reuse echo 0 > /proc/sys/net/ipv4/tcp_tw_recycle echo 262144 > /proc/sys/net/ipv4/tcp_max_orphans echo 262144 > /proc/sys/net/ipv4/tcp_max_syn_backlog echo 3 > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_time_wait echo 30 > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_syn_recv echo 524288 > /proc/sys/net/ipv4/tcp_max_tw_buckets echo 5 > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_close_wait echo 18000 > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_established echo 1 > /proc/sys/net/ipv4/tcp_syn_retries echo 3 > /proc/sys/net/ipv4/tcp_synack_retries echo 1 > /proc/sys/net/ipv4/tcp_syncookies echo 0 > /proc/sys/net/ipv4/tcp_retrans_collapse echo 0 >/proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_loose
相应的配置文件在 /etc/sysctl.conf
使用 #/sbin/sysctl -p 命令使修改生效
以下是《Nginx高性能Web服务器详解》中的建议配置(P67):[编辑]
#添加: net.core.netdev_max_backlog = 262144 net.core.somaxconn = 262144 net.ipv4.tcp_max_orphans = 262144 net.ipv4.tcp_timestamps = 0 net.ipv4.tcp_synack_retries = 1 net.ipv4.tcp_syn_retries = 1 #修改 net.ipv4.tcp_max_syn_backlog = 262144
另可以加以下配置(参考下一节的说明):
net.ipv4.tcp_timestamps = 1 net.ipv4.tcp_tw_reuse = 1
以下是压力测试(实例)这篇文章中的配置:[编辑]
修改系统内核,增加系统允许的最大访问次数,最大程度发挥TT的效率,这里可以贴出E的参考方案,在50000次并发以上效果明显。
tcp_tw_reuse、tcp_tw_recycle 使用场景及注意事项 | linux 内核TCP 相关参数解释 | Linux和windows下内核socket优化项
弄清TIME_WAIT彻底解决TCP:time wait bucket table overflow
基于Nginx实现10万+并发,你应该做的Linux内核优化
注:TCP:time wait bucket table overflow 所在位置:/var/log/messages ,参考kernel: TCP: time wait bucket table overflow的问题剖析及解决方法
#!/bin/sh sysctl -w net.ipv4.tcp_tw_reuse=1 sysctl -w net.ipv4.tcp_tw_recycle=1 #注,这个配置不对,参考:弄清TIME_WAIT彻底解决TCP:time wait bucket table overflow sysctl -w net.ipv4.tcp_fin_timeout=10 sysctl -w net.core.wmem_max=8388608 sysctl -w net.core.rmem_max=8388608