日期:2014-05-16  浏览次数:20625 次

linux 常用优化
#查看可优化的网络参数
find /proc/sys/net/ipv4/ -type f 
 
#Ip转发(默认为0,表示关闭,1为开启)
net.ipv4.ip_forward = 0                       
 
net.ipv4.conf.default.rp_filter = 1       
 
net.ipv4.conf.default.accept_source_route = 0
 
#该参数表示文件句柄的最大数量。
fs.file-max = 65535
 
#允许系统打开的端口范围
net.ipv4.ip_local_port_range = 1024   65000   
 
#默认socket读buffer
net.core.rmem_default=262144               
 
#默认socket写buffer
net.core.wmem_default=262144              
 
#最大socket写buffer,可参考的优化值:873200
net.core.rmem_max=262144                 
 
#最大socket写buffer,可参考的优化值:873200
net.core.wmem_max=262144                
 
#表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭
net.ipv4.tcp_tw_reuse = 1
 
#表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。
net.ipv4.tcp_tw_recycle = 1                
 
#当keepalive起用的时候,TCP发送keepalive消息的频度。缺省是2小时
net.ipv4.tcp_keepalive_time = 30          
 
net.ipv4.tcp_max_tw_buckets = 6000           
 
#记录的那些尚未收到客户端确认信息的连接请求的最大值
net.ipv4.tcp_max_syn_backlog = 65536      
 
#每个网络接口接收数据包的速率比内核处理这些包的速率快时允许送到队列的数据包的最大数目。
web应用中listen函数backlog默认会给我们内核参数的net.core.somaxconn限制到128,而nginx定义的NGX_LISTEN_BACKLOG默认为511,所以有必要调整这个值
net.core.netdev_max_backlog = 3000
net.core.somaxconn = 32768              
 
#时间戳可以避免序列号的卷绕。一个1Gbps的链路肯定会遇到以前用过的序列号。时间戳能够让内核接受这种“异常”的数据包。这里需要将其关掉
net.ipv4.tcp_timestsmps = 0    
 
#为了打开对端的连接,内核需要发送一个SYN并附带一个回应前面一个SYN的ACK。也就是所谓三次握手中的第二次握手。这个设置决定了内核放弃连接之前发送SYN+ACK包的数量
net.ipv4.tcp_synack_retries = 2
 
#在内核放弃建立连接之前发送SYN包的数量
net.ipv4.tcp_syn_retries = 2   
 
#开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接。
#net.ipv4.tcp_tw_len = 1
net.ipv4.tcp_tw_reuse = 1      
 
#TCP写buffer,可参考的优化值: 8192 436600 873200
net.ipv4.tcp_wmem = 8192 436600 873200      
 
#TCP读buffer,可参考的优化值: 32768 436600 873200
net.ipv4.tcp_rmem = 32768 436600 873200  
 
#内存单位是页,而不是字节.可参考的优化值是:786432 1048576 1572864  1:低于此值,TCP没有内存压力. 2:在此值下,进入内存压力阶段. 3:高于此值,TCP拒绝分配socket.
net.ipv4.tcp_mem = 94500000 91500000 92700000
 
#系统中最多有多少个TCP套接字不被关联到任何一个用户文件句柄上
net.ipv4.tcp_max_orphans = 3276800
 
 
 
 
#查看内核参数
cat /etc/sysctl.conf |grep -v -e "^#" -e "^$"
kernel.sysrq = 0
 
#默认核使用的PID号
kernel.core_uses_pid = 1                   
 
#开启SYN Cookies。当出现SYN等待队列溢出时,开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理可防范少量SYN攻击,默认为0,表示关闭;
net.ipv4.tcp_syncookies = 1                 
 
#每个消息队列的最大字节限制。                             
kernel.msgmnb = 65536                   
# 整个系统的最大数量的消息队列。
kernel.msgmax = 65536                  
 
#共享内存段最大字节数,建议设大点,甚至可以大过物理内存的字节数该参数定义了共享内存段的最大尺寸(以字节为单位)。缺省为32M,对于oracle来说,该缺省值太低,通常将其设置为2G。
kernel.shmmax = 68719476736
 
#分配的共享内存数量的系统级限制。在某些系统上,SHMALL可能表示成页数量,而不是字节数量。
kernel.shmall = 4294967296  
 
 
修改后不用重启动更新:/sbin/sysctl -p
 
共享内存段的最小字节数这个内核参数用于设置系统范围内共享内存段的最大数量。该参数的默认值是 4096 。通常不需要更改。
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128

?