码迷,mamicode.com
首页 > 其他好文 > 详细

Linxu内核参数详解

时间:2015-08-05 20:15:34      阅读:203      评论:0      收藏:0      [点我收藏+]

标签:

  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   
  2. ulimit -n 查看


添加:

Java代码  技术分享
    1. *       soft     nofile  1006154  
    2. *       hard    nofile 1006154

-----------------------------------------------------------------------------------------------------------------------

 

高并发Linux服务器的常用配置

fs.file-max = 999999 # 进程可以同时打开的最大句柄数
net.ipv4.tcp_tw_reuse = 1 # 重用 TIME_WAIT 状态的 socket
net.ipv4.tcp_keepalive_time = 600 # 当 keepalive 启用时,TCP 发送 keepalive 消息的频度
net.ipv4.tcp_fin_timeout = 30 # socket 保持在 FIN_WAIT_2 状态的最大时间
net.ipv4.tcp_max_tw_buckets = 5000 # 操作系统允许 TIME_WAIT socket 的最大数量
net.ipv4.ip_local_port_range = 1024 61000 # 定义在 UDP和 TCP 连接中本地端口的取值范围
net.ipv4.tcp_rmem = 4096 32768 262142 # TCP 接收缓存的最小值、默认值、最大值
net.ipv4.tcp_wmem = 4096 32768 262142 # TCP 发送缓存的最小值、默认值、最大值
net.core.netdev_max_backlog = 8096 # 当网卡接收数据包的速度大于内核处理的速度时,保存队列的最大值
net.core.rmem_default = 262144 # 内核 socket 接收缓存区默认的大小
net.core.wmem_default = 212144 # 内核 socket 发送缓存区默认的大小
net.core.rmem_max = 2097152 # 内核 socket 接收缓存区的最大大小
net.core.wmem_max = 2097152 # 内核 socket 发送缓存区的最大大小
net.ipv4.tcp_syncookies = 1 # 防止 TCP SYN 攻击
net.ipv4.tcp_tw_recycle 设置是否启用timewait快速回收
net.core.somaxconn web应用中listen函数的backlog默认会将内核参数的net.core.somaxconn限制到128,而nginx定义的NGX_LISTEN_BACKLOG默认是511,所以必须调整
net.ipv4.tcp_max_orphans 该参数用于设置linux能够处理不属于任何进程的套接字数量的大小
net.ipv4.tcp_max_syn_backlog 该参数用于记录尚未被客户端确认信息的链接请求的最大值
net.ipv4.tcp_timestamps该参数用于设置使用时间戳作为序列号,在高并发环境下,开启该功能会出现异常,因此要关闭
net.ipv4.tcp_synack_retries 该参数用于设置SYN重试次数
net.ipv4.tcp_syn_retries该参数用于设置在内核放起建立链接之前发送SYN包的数量


--------------------------------------------------------------------------------------

高并发内核参数(待定)
net.ipv4.tcp_sack = 1
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_rmem = 4096 87380 4194304
net.ipv4.tcp_wmem = 4096 16384 4194304
net.ipv4.tcp_max_syn_backlog = 102000
net.core.netdev_max_backlog = 862144
net.core.somaxconn = 327680
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216

net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_synack_retries = 1
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_fin_timeout = 1
net.ipv4.tcp_tw_recycle = 1

net.ipv4.tcp_tw_len = 1

net.ipv4.tcp_keepalive_time = 20
net.ipv4.tcp_keepalive_probes=2
net.ipv4.tcp_keepalive_intvl=2

net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recyle = 1
net.ipv4.tcp_no_metrics_save = 0
net.ipv4.tcp_mem = 94500000 915000000 927000000
net.ipv4.tcp_max_orphans = 3276800

fs.file-max = 655360

net.ipv4.netfilter.ip_conntrack_max = 655360
#net.nf_conntrack_max=1048576 (LINUX 6以上名称已经修改)
#net.netfilter.nf_conntrack_max=1048576 (LINUX 6以上名称已经修改)

net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 60
#net.netfilter.nf_conntrack_tcp_timeount_established=60 (LINUX 6以上名称已经修改)

net.ipv4.tcp_max_tw_buckets = 6000
net.ipv4.ip_local_port_range= 10000 65000

net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2

1.增加:
modprobe ip_conntrack
echo "modprobe ip_conntrack" >> /etc/sysctl.conf
echo "modprobe ip_conntrack" >> /etc/rc.local
删除:
modprobe -r ip_conntrack

2.sysctl -w fs.file-max=655360
cat /proc/sys/fs/file-max
/sbin/sysctl fs.file-max 查看是否生效

3.修改/etc/security/limits.conf文件,
在文件中添加如下行:

* - nofile 1048576
* - nproc 1048576

4.修改/etc/pam.d/login文件,
在文件中添加如下行:

session required /lib/security/pam_limits.so

 


5.修改/usr/include/linux/limits.h文件:

#define NR_OREN = 1048576 /*1024*1024*/
#define OPEN_MAX = 131072
#define MAX_CANON = 10240

重启服务器 reboot

Linxu内核参数详解

标签:

原文地址:http://www.cnblogs.com/shengs/p/4705467.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!