linux tcp 参数

来源:互联网 发布:英国人 知乎 编辑:程序博客网 时间:2024/04/30 06:08
Java代码  收藏代码
  1. vi /etc/sysctl.conf  

Java代码  收藏代码
  1. #表示SYN队列的长度,默认为1024,加大队列长度,可以容纳更多等待连接的网络连接数。  
  2. net.ipv4.tcp_max_syn_backlog = 65536  
  3.   
  4. #每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目  
  5. net.core.netdev_max_backlog = 32768  
  6.   
  7. #默认128,这个参数会影响到所有AF_INET类型socket的listen队列  
  8. net.core.somaxconn = 32768  
  9.   
  10. #系统套接字写默认缓冲区  
  11. net.core.wmem_default = 8388608  
  12.   
  13. #系统套接字读默认缓冲区  
  14. net.core.rmem_default = 8388608  
  15.   
  16. #系统套接字读最大缓冲区  
  17. net.core.rmem_max = 16777216  
  18.   
  19. #系统套接字写最大缓冲区  
  20. net.core.wmem_max = 16777216  
  21.   
  22. #此参数与net.ipv4.tcp_wmem都是用来优化TCP接收/发送缓冲区,包含三个整数值,分别是:min,default,max:  
  23. #tcp_rmem:min表示为TCP socket预留用于接收缓冲的最小内存数量,default为TCP socket预留用于接收缓冲的缺省内存数量,max用于TCP socket接收缓冲的内存最大值。  
  24. #tcp_wmem:min表示为TCP socket预留用于发送缓冲的内存最小值,default为TCP socket预留用于发送缓冲的缺省内存值,max用于TCP socket发送缓冲的内存最大值。  
  25. net.ipv4.tcp_rmem=4096 87380 4194304  
  26. net.ipv4.tcp_wmem=4096 16384 4194304  
  27.   
  28. #时间戳可以避免序列号的卷绕。一个1Gbps 的链路肯定会遇到以前用过的序列号。时间戳能够让内核接受这种“异常”的数据包。这里需要将其关掉。  
  29. net.ipv4.tcp_timestamps = 0  
  30.   
  31. #为了打开对端的连接,内核需要发送一个SYN 并附带一个回应前面一个SYN 的ACK。也就是所谓三次握手中的第二次握手。这个设置决定了内核放弃连接之前发送SYN+ACK 包的数量。  
  32. net.ipv4.tcp_synack_retries = 2  
  33.   
  34. #在内核放弃建立连接之前发送SYN 包的数量  
  35. net.ipv4.tcp_syn_retries = 2  
  36.   
  37. #表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。  
  38. net.ipv4.tcp_tw_recycle = 1  
  39.   
  40. #net.ipv4.tcp_tw_len = 1  
  41.   
  42. #表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭  
  43. net.ipv4.tcp_tw_reuse = 1  
  44.   
  45. #确定 TCP 栈应该如何反映内存使用;每个值的单位都是内存页(通常是 4KB)。  
  46. net.ipv4.tcp_mem = 94500000 915000000 927000000  
  47.   
  48. #这个值表示系统所能处理不属于任何进程的socket数量,当我们需要快速建立大量连接时,就需要关注下这个值了。  
  49. net.ipv4.tcp_max_orphans = 3276800  
  50.   
  51. #如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2 状态的时间。  
  52. net.ipv4.tcp_fin_timeout = 30  
  53.   
  54. #net.ipv4.tcp_keepalive_time = 120  
  55.   
  56. #用于向外连接的端口范围  
  57. net.ipv4.ip_local_port_range = 1024  65535  



让以上参数生效: 
Java代码  收藏代码
  1. /sbin/sysctl -p   


调整最大文件描述符: 
Java代码  收藏代码
  1. vi /etc/security/limits.conf   

添加: 
Java代码  收藏代码
  1. *                -       nofile          1006154  

重启后生效(使用ulimit -n 查看) 


各参数的值参考了http://dragonsoar.iteye.com/blog/1567771
0 0
原创粉丝点击