2017年12月20日 18:50:18 延瓒@Yankerp 阅读数:947更多

所属专栏: Linux入门到熟练

 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_39591494/article/details/78856370

fs.file-max = 999999:这个参数表示进程(比如一个worker进程)可以同时打开的最大句柄数,这个参数直线限制最大并发连接数,需根据实际情况配置。

net.ipv4.tcp_max_tw_buckets = 6000 #这个参数表示操作系统允许TIME_WAIT套接字数量的最大值,如果超过这个数字,TIME_WAIT套接字将立刻被清除并打印警告信息。该参数默认为180000,过多的TIME_WAIT套接字会使Web服务器变慢。

注:主动关闭连接的服务端会产生TIME_WAIT状态的连接

net.ipv4.ip_local_port_range = 1024 65000 #允许系统打开的端口范围。

net.ipv4.tcp_tw_recycle = 1 #启用timewait快速回收。

net.ipv4.tcp_tw_reuse = 1 #开启重用。允许将TIME-WAIT 

sockets重新用于新的TCP连接。这对于服务器来说很有意义,因为服务器上总会有大量TIME-WAIT状态的连接。

net.ipv4.tcp_keepalive_time = 30:这个参数表示当keepalive启用时,TCP发送keepalive消息的频度。默认是2小时,若将其设置的小一些,可以更快地清理无效的连接。

net.ipv4.tcp_syncookies = 1 #开启SYN Cookies,当出现SYN等待队列溢出时,启用cookies来处理。

net.core.somaxconn = 40960 #web 应用中 listen 函数的 backlog 默认会给我们内核参数的 net.core.somaxconn 限制到128,而nginx定义的NGX_LISTEN_BACKLOG 默认为511,所以有必要调整这个值。

注:对于一个TCP连接,Server与Client需要通过三次握手来建立网络连接.当三次握手成功后,我们可以看到端口的状态由LISTEN转变为ESTABLISHED,接着这条链路上就可以开始传送数据了.每一个处于监听(Listen)状态的端口,都有自己的监听队列.监听队列的长度与如somaxconn参数和使用该端口的程序中listen()函数有关

somaxconn参数:定义了系统中每一个端口最大的监听队列的长度,这是个全局的参数,默认值为128,对于一个经常处理新连接的高负载 web服务环境来说,默认的 128 太小了。大多数环境这个值建议增加到 1024 或者更多。大的侦听队列对防止拒绝服务 DoS 攻击也会有所帮助。

net.core.netdev_max_backlog = 262144 #每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目。

net.ipv4.tcp_max_syn_backlog = 262144#这个参数标示TCP三次握手建立阶段接受SYN请求队列的最大长度,默认为1024,将其设置得大一些可以使出现Nginx繁忙来不及accept新连接的情况时,Linux不至于丢失客户端发起的连接请求。

net.ipv4.tcp_rmem = 10240  87380  12582912#这个参数定义了TCP接受缓存(用于TCP接受滑动窗口)的最小值、默认值、最大值。
net.ipv4.tcp_wmem = 10240 87380 12582912:这个参数定义了TCP发送缓存(用于TCP发送滑动窗口)的最小值、默认值、最大值。
net.core.rmem_default = 6291456:这个参数表示内核套接字接受缓存区默认的大小。
net.core.wmem_default = 6291456:这个参数表示内核套接字发送缓存区默认的大小。
net.core.rmem_max = 12582912:这个参数表示内核套接字接受缓存区的最大大小。
net.core.wmem_max = 12582912:这个参数表示内核套接字发送缓存区的最大大小。
net.ipv4.tcp_syncookies = 1:该参数与性能无关,用于解决TCP的SYN攻击。

以上就是linux内核的一些参数,下面贴一个完整的内核优化设置:

 

 
  1. fs.file-max = 999999

  2. net.ipv4.ip_forward = 0

  3. net.ipv4.conf.default.rp_filter = 1

  4. net.ipv4.conf.default.accept_source_route = 0

  5. kernel.sysrq = 0

  6. kernel.core_uses_pid = 1

  7. net.ipv4.tcp_syncookies = 1

  8. kernel.msgmnb = 65536

  9. kernel.msgmax = 65536

  10. kernel.shmmax = 68719476736

  11. kernel.shmall = 4294967296

  12. net.ipv4.tcp_max_tw_buckets = 6000

  13. net.ipv4.tcp_sack = 1

  14. net.ipv4.tcp_window_scaling = 1

  15. net.ipv4.tcp_rmem = 10240 87380 12582912

  16. net.ipv4.tcp_wmem = 10240 87380 12582912

  17. net.core.wmem_default = 8388608

  18. net.core.rmem_default = 8388608

  19. net.core.rmem_max = 16777216

  20. net.core.wmem_max = 16777216

  21. net.core.netdev_max_backlog = 262144

  22. net.core.somaxconn = 40960

  23. net.ipv4.tcp_max_orphans = 3276800

  24. net.ipv4.tcp_max_syn_backlog = 262144

  25. net.ipv4.tcp_timestamps = 0

  26. net.ipv4.tcp_synack_retries = 1

  27. net.ipv4.tcp_syn_retries = 1

  28. net.ipv4.tcp_tw_recycle = 1

  29. net.ipv4.tcp_tw_reuse = 1

  30. net.ipv4.tcp_mem = 94500000 915000000 927000000

  31. net.ipv4.tcp_fin_timeout = 1

  32. net.ipv4.tcp_keepalive_time = 30

  33. net.ipv4.ip_local_port_range = 1024 65000

以上参数添加到/etc/sysctl.conf文件中如下:

 



使配置立即生效。

 

2017年倒计时!!!

 

希望对您有所帮助,再见~

GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:22 天前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐