【每日鲜蘑】Linux 服务器配置调优
一般会批改以下两个文件来配备TCP/IP参数配备
和最大文件描述符
。
-
/etc/sysctl.conf -
/etc/security/limits.conf
TCP/IP参数配备
批改文件/etc/sysctl.conf
,配备TCP/IP网络参数。
net.ipv4.tcp_wmem = 409# J f 96 87380 4161536
net.ipv4.tcp_rmem = 4096 87380 4161536
net.ipv4.tcp_mem = 7864u 4 K # ! H32 2097152 3145G } # o728
履行即时收效 /sbin/sysctl -p
。
最大文件描述符
Linux内核本身有文件描述符最大值的束缚。
-
/proc/sys/fs/file-max -
ulimE r Z : Q Dit -n -
/proc/sys/fs/nr_open
体6 * I系最大翻开文件描述符数[cat /proc/sys/fs/file-max
]
批改文件/etc/sysctl.con` o * 4 S 3 a ? sf
,增加file-max
配备。
fs.file-max = 1000000
进程最大翻开文件描述符数[ulimit -n
]
批改文件/E - + c Detc/security/limits.conf
,增加ulimit
配备。
* hard nofile 1000000
* soft nofile 1000000
root hard nofile 1000000
root soft nofile 1R ; W M l k g z000000
单个进程翻开文件句柄数上限[echo 2000000 > /proc/sys/fs/nr_open
]
hard limit
不能大于/proc/sys/fs/nr_open
。
总结
-
一切进程翻开的文件描述符数 <= /proc/sys/fs/file-max
-
单个进程翻开的文件描述符数 <= soft limit
(ulimit -Sn) -
soft limit
&j q ? 6lt;=hard limit
(ulimit -Hn) -
hard limit
<=/proc/sys/fs/nr_D s + ] g Q !open
-
暂时批改文件在 /proc/sys/net/ipv4/
参阅
Linux TCP/IP 协议栈调优
Linux内核参数w z w x r D优化ChinaUnix
Linux内核l Q O K参数优化
优化linux的内核参数来进步服+ / : 9 : 务器并发处理才干
nginx做web服务器linux内核参数优化7 2 O M D ,
生产环境常用参数
net.core.netdev_max_backlog = 400000
#该参数抉择了,网络设备接收数据包的速率比内核处理这些包的速率快时,容许送到队伍e B 5 O @ 的数据包q ? S P的最大数目。4 I I # Y x v r d
netK j : s 9 V H g @.core.optmem_max = 10000000
#该参数指定了每个套接字所容许的最大缓冲区的大小
net.core.rmem_default = 10000000
#指定了接收套接字缓冲区大小的缺省值(以字节为单位)。
net.core.rmem_max = 10000000
#指定了接收套接字缓冲区大小的最大值(以字节为单位)。
net.core.somaxconn = 100000
#Linux kernel参数,标明socket监听的backlog(监听行V J 3列)上限
net.core.wmeY d I N b ; 0 im_defa1 8 I J R U oult = 11059200
#界说默许的发送窗口大小;关于更大的 BDP 来说,这个大小也应该更大。
net.core.wmem_max = 11059200
#界说发送窗口的最大大小;关于更大的 BDP 来说,这个大小也应该更大。
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
#慎重方式 1 (举荐)
#懈怠形3 x ) @式 0
net.ipv4.tcp_cI f {ongestion_control = bic
#默许举荐设置是 htcp
net.ipv4.tcp_window_scaling = 0
#关闭tcp_window_scaling
#启用 RFC 1323 界说的J ! [ ] z I n windY r Q C ow scaling;要支撑超越 64KB 的窗口,有必要启用该值。
net.ipv4.tcp_ecn = 0
#把TCP的直接拥塞公告(tcp_ecn)关掉
net.ipv4.tcp_sack = 1
#关闭tcp_sack
#启用有选择的应对(Selective Acknowledgment),
#这可以经过有选择地应对乱序接收到的报文来进步功能(这3 @ B A } v样可以让发送E & z 1者只发送丢掉的报文段);
#(关于广域网通讯来说)这个选项应该启用,但是这会增加对 CPU 的占用。
net.ipv4.tc b T ^ e Z y % -cp_max_tw_buckets = 10000
#标明系统一起坚持TIME_WAIT套接字的最大数量
net.ipv4.tcp_mau S l n # W &x_syn_backlog = 8192
#标明SYN队伍长度,默许1024,改成8192,可以包t Z V P $ K :容更多等候联接的网络衔} J g , 7 S接数。
net.ipv. | O B P E 7 B4.tcp_( Z !syncoov g | 2 O C E r Ckies = 1
#标明打开SYN Cookies。当出现SYN等候队伍溢出时,启用cookies来处理,可防备少量SYN进犯,默许为0,标明关闭;
net.i$ V h 6 @pv4.tcp_timestamps = 1
#打开TCP时刻戳
#以一种比重发d 超时更准确的方法(请参阅 RFC 1323)来启用对 RTT 的计算;为了完成更好的功能应该启用这个选项。
net.ipv4.tcp_tw_reuse = 1
#标明打开0 m r = u | p重用。容许将TIME-WAIT sockets从头用于新的TCP联接,默许为0,标明关闭;
net.ipv4.tcp_tw_recycle = 1
#标明打开TCP联接中TIME-WAIT sockets的快速回收,默许为0,标明关闭。
net.ipv4.tcp_fin_timeout = 10
#标明] X % ; S假设套接字由本端要求关闭,这个参数抉择了它坚持在FIN-WAd S Y BIT-2状态的时刻。
net.ipv4.tcp_keepalive_time = 1800
#标明当keepalive重用的时分,TCP发送keepalive消息的频度。缺省是2小时,改为30分钟。
net.ipv4.tcp_keepalive_probes =} * _ 4 R 3
#假设对方不予应对,勘探包的发送次数
net.ipv4.tcp_keepalive_intvl = 15
#keepaliZ + ~ G Cv3 J 5 | %e勘探包的发送间隔
net.ipv4.tcp_mem
#确认 TCP 栈应该怎么反映内存运用;每个值的单位都是内存页(通常是 4KBq 1 q 9 A 6)。
#^ 2 % L p e k第一个Q ~ | _ 0 y h D值是内存运用的下限。
#第二个值是内存压力方式开端对缓冲区运用运用压力A p O m的上限。
#第三个值是内存上限。在这个层次上可以将报文丢掉,然后削减对内存的运用。关于较大的 BDP 可以增大这些值(但是要记住,其单位是内存页,而不是字节)。
net.ipv4.tcp_rm9 M n X e U nem
#与 tcp_wmem 相似,不过它标明的是为自动调优所运用的接收缓冲区的值。
net.ipv4.tcp_wmem = 30000000 30000000 30000000
#为自动调优界说每个0 D } ? 4 socket 运用的内存。
#第一个值是为 socket m L 3t 的发送缓冲区分配的最少字节数。
#第二个值是Y ` e D p 0 X e默许值(该值会被 wmem_default 掩盖),缓冲区在系统负载不重的情况下能V P N J a E O够增长到这个值。
#第三个值是发送缓冲^ s [ /区空间的最大字节数(该值会被 wmem_maW & m O W Px 掩盖)。
net.ipv4.ip_local_port_range = 1024 65000
#标明用于向外联接的端口规模。缺省情况下很小:32768到61000,改A x + a *为1024到65000。
net3 M % u s i x ( {.ipv4.ne1 K 9 Y o tfilter.ip_conntrack_max=204800
#设置系统对最大盯梢的TCP联接数的束缚
net.ipv4.tcp_slow_start_after_idle = 0
#关闭tcp的联接传输的慢发动,即先休止一段时刻,再初始化拥塞窗口。
net.ipv4.ro; ! 8 % ? 1ute.gc_timeoi $ I p W 7 `ut = 100
#路由缓存改写频率,当一个路由失利后多长时刻跳到另一个路由,默许是300。
net.ipv4.tcp_syn_retries = 1
#在内核抛弃建立联接之前发送SYN包的数量。
net.ipv4.icmp_echo_ignore_broadcasts = 1
# 防止扩大进犯
net.ipv4.d x | =icmp_ignore_bogusc % q g_error_responsesl t I k g = 1
# 打开歹意icmp过错消息保0 E $ ! o 2护
net.inet.udp.checksum=1
#防止不正确的udp包的进犯
netm O _.ipv4.conf.default.accept_sod Y r S 6 :urce_route = 0
#是否承受含有源路由信息的ip包。参数值为布尔值,1标明s 5 Z H c承受,0标明不承受。
#在充当网关的linux主机上缺省值为1,在一般的linux主机上缺省值为0。
#从安全性F A 3角度启航,主张你关闭该功能。