【每日鲜蘑】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内核本身有文件描述符最大值的束缚。

  1. /proc/sys/fs/file-max
  2. ulimE r Z : Q Dit -n
  3. /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

总结

  1. 一切进程翻开的文件描述符数 <= /proc/sys/fs/file-max
  2. 单个进程翻开的文件描述符数 <= soft limit(ulimit -Sn)
  3. soft limit &j q ? 6lt;= hard limit(ulimit -Hn)
  4. hard limit <= /proc/sys/fs/nr_D s + ] g Q !open
  5. 暂时批改文件在 /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角度启航,主张你关闭该功能。