<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hans-CN">
	<id>https://wiki.linuxsa.org/index.php?action=history&amp;feed=atom&amp;title=Linux%E4%BC%98%E5%8C%96</id>
	<title>Linux优化 - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.linuxsa.org/index.php?action=history&amp;feed=atom&amp;title=Linux%E4%BC%98%E5%8C%96"/>
	<link rel="alternate" type="text/html" href="https://wiki.linuxsa.org/index.php?title=Linux%E4%BC%98%E5%8C%96&amp;action=history"/>
	<updated>2026-04-20T16:22:48Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>https://wiki.linuxsa.org/index.php?title=Linux%E4%BC%98%E5%8C%96&amp;diff=589&amp;oldid=prev</id>
		<title>Evan：​/* see also */</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxsa.org/index.php?title=Linux%E4%BC%98%E5%8C%96&amp;diff=589&amp;oldid=prev"/>
		<updated>2023-10-30T14:34:02Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;see also&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;=kernel optimization=&lt;br /&gt;
=我的优化例子on lxtx=&lt;br /&gt;
[[Linux高并发优化配置]]&lt;br /&gt;
&lt;br /&gt;
==centos7 kernel optimization==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat /etc/sysctl.conf&lt;br /&gt;
&lt;br /&gt;
#CTCDN系统优化参数&lt;br /&gt;
&lt;br /&gt;
#关闭ipv6&lt;br /&gt;
&lt;br /&gt;
net.ipv6.conf.all.disable_ipv6 = 1&lt;br /&gt;
&lt;br /&gt;
net.ipv6.conf.default.disable_ipv6 = 1&lt;br /&gt;
&lt;br /&gt;
# 避免放大攻击&lt;br /&gt;
&lt;br /&gt;
net.ipv4.icmp_echo_ignore_broadcasts = 1&lt;br /&gt;
&lt;br /&gt;
# 开启恶意icmp错误消息保护&lt;br /&gt;
&lt;br /&gt;
net.ipv4.icmp_ignore_bogus_error_responses = 1&lt;br /&gt;
&lt;br /&gt;
#关闭路由转发&lt;br /&gt;
&lt;br /&gt;
net.ipv4.ip_forward = 0&lt;br /&gt;
&lt;br /&gt;
net.ipv4.conf.all.send_redirects = 0&lt;br /&gt;
&lt;br /&gt;
net.ipv4.conf.default.send_redirects = 0&lt;br /&gt;
&lt;br /&gt;
#开启反向路径过滤&lt;br /&gt;
&lt;br /&gt;
net.ipv4.conf.all.rp_filter = 1&lt;br /&gt;
&lt;br /&gt;
net.ipv4.conf.default.rp_filter = 1&lt;br /&gt;
&lt;br /&gt;
#处理无源路由的包&lt;br /&gt;
&lt;br /&gt;
net.ipv4.conf.all.accept_source_route = 0&lt;br /&gt;
&lt;br /&gt;
net.ipv4.conf.default.accept_source_route = 0&lt;br /&gt;
&lt;br /&gt;
#关闭sysrq功能&lt;br /&gt;
&lt;br /&gt;
kernel.sysrq = 0&lt;br /&gt;
&lt;br /&gt;
#core文件名中添加pid作为扩展名&lt;br /&gt;
&lt;br /&gt;
kernel.core_uses_pid = 1&lt;br /&gt;
&lt;br /&gt;
# 开启SYN洪水攻击保护&lt;br /&gt;
&lt;br /&gt;
net.ipv4.tcp_syncookies = 1&lt;br /&gt;
&lt;br /&gt;
#修改消息队列长度&lt;br /&gt;
&lt;br /&gt;
kernel.msgmnb = 65536&lt;br /&gt;
&lt;br /&gt;
kernel.msgmax = 65536&lt;br /&gt;
&lt;br /&gt;
#设置最大内存共享段大小bytes&lt;br /&gt;
&lt;br /&gt;
kernel.shmmax = 68719476736&lt;br /&gt;
&lt;br /&gt;
kernel.shmall = 4294967296&lt;br /&gt;
&lt;br /&gt;
#timewait的数量，默认180000&lt;br /&gt;
&lt;br /&gt;
net.ipv4.tcp_max_tw_buckets = 6000&lt;br /&gt;
&lt;br /&gt;
net.ipv4.tcp_sack = 1&lt;br /&gt;
&lt;br /&gt;
net.ipv4.tcp_window_scaling = 1&lt;br /&gt;
&lt;br /&gt;
net.ipv4.tcp_rmem = 4096        87380   4194304&lt;br /&gt;
&lt;br /&gt;
net.ipv4.tcp_wmem = 4096        16384   4194304&lt;br /&gt;
&lt;br /&gt;
net.core.wmem_default = 8388608&lt;br /&gt;
&lt;br /&gt;
net.core.rmem_default = 8388608&lt;br /&gt;
&lt;br /&gt;
net.core.rmem_max = 16777216&lt;br /&gt;
&lt;br /&gt;
net.core.wmem_max = 16777216&lt;br /&gt;
&lt;br /&gt;
#每个网络接口接收数据包的速率比内核处理这些包的速率快时，允许送到队列的数据包的最大数目&lt;br /&gt;
&lt;br /&gt;
net.core.netdev_max_backlog = 262144&lt;br /&gt;
&lt;br /&gt;
#限制仅仅是为了防止简单的DoS 攻击&lt;br /&gt;
&lt;br /&gt;
net.ipv4.tcp_max_orphans = 3276800&lt;br /&gt;
&lt;br /&gt;
#未收到客户端确认信息的连接请求的最大值&lt;br /&gt;
&lt;br /&gt;
net.ipv4.tcp_max_syn_backlog = 262144&lt;br /&gt;
&lt;br /&gt;
net.ipv4.tcp_timestamps = 0&lt;br /&gt;
&lt;br /&gt;
#内核放弃建立连接之前发送SYNACK 包的数量&lt;br /&gt;
&lt;br /&gt;
net.ipv4.tcp_synack_retries = 1&lt;br /&gt;
&lt;br /&gt;
#内核放弃建立连接之前发送SYN 包的数量&lt;br /&gt;
&lt;br /&gt;
net.ipv4.tcp_syn_retries = 1&lt;br /&gt;
&lt;br /&gt;
#启用timewait 快速回收&lt;br /&gt;
&lt;br /&gt;
net.ipv4.tcp_tw_recycle = 1&lt;br /&gt;
&lt;br /&gt;
#开启重用。允许将TIME-WAIT sockets 重新用于新的TCP 连接&lt;br /&gt;
&lt;br /&gt;
net.ipv4.tcp_tw_reuse = 1&lt;br /&gt;
&lt;br /&gt;
net.ipv4.tcp_mem = 94500000 915000000 927000000&lt;br /&gt;
&lt;br /&gt;
net.ipv4.tcp_fin_timeout = 1&lt;br /&gt;
&lt;br /&gt;
#当keepalive 起用的时候，TCP 发送keepalive 消息的频度。缺省是2 小时&lt;br /&gt;
&lt;br /&gt;
net.ipv4.tcp_keepalive_time = 30&lt;br /&gt;
&lt;br /&gt;
#允许系统打开的端口范围&lt;br /&gt;
&lt;br /&gt;
net.ipv4.ip_local_port_range = 1024    65000&lt;br /&gt;
&lt;br /&gt;
#修改防火墙表大小，默认65536&lt;br /&gt;
&lt;br /&gt;
#net.netfilter.nf_conntrack_max=655350&lt;br /&gt;
&lt;br /&gt;
#net.netfilter.nf_conntrack_tcp_timeout_established=1200&lt;br /&gt;
&lt;br /&gt;
# 确保无人能修改路由表&lt;br /&gt;
&lt;br /&gt;
net.ipv4.conf.all.accept_redirects = 0&lt;br /&gt;
&lt;br /&gt;
net.ipv4.conf.default.accept_redirects = 0&lt;br /&gt;
&lt;br /&gt;
net.ipv4.conf.all.secure_redirects = 0&lt;br /&gt;
&lt;br /&gt;
net.ipv4.conf.default.secure_redirects = 0&lt;br /&gt;
&lt;br /&gt;
不要启用 net.ipv4.tcp_tw_recycle&lt;br /&gt;
如果不小心启用了，那么在/etc/sysctl.conf中注释掉在用sysctl -p是不启作用的。两种办法：&lt;br /&gt;
&lt;br /&gt;
1. 把net.ipv4.tcp_tw_recycle=0 然后再sysctl -p&lt;br /&gt;
2. 去/proc/sys/net/ipv4/中找到tcp_tw_recycle的配置文件，然后改成0&lt;br /&gt;
netstat -n | awk &amp;#039;/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}&amp;#039;   &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://blog.csdn.net/xiegh2014/article/details/52132863 centos7优化内核参数详解]&lt;br /&gt;
&lt;br /&gt;
== 优化Linux下的内核TCP参数以提高系统性能==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
内核的优化跟服务器的优化一样，应本着稳定安全的原则。下面以Squid服务器为例来说明，待客户端与服务器端建立 TCP/IP 连接后就会关闭Socket，服务器端连接的端口状态也就变为 TIME_WAIT 了。那是不是所有执行主动关闭的SOCket都会进入TIME_WAIT 状态呢？有没有什么情况可使主动关闭的Socket直接进入CLOSED状态呢？答案是主动关 闭的一方在发送最后一个ACK后就会进人 TIME_WAIT 状态，并停留2MSL（报文最大生存）时间，这是 TCP/IP 必不可少的，也就是说这一点是“解决”不了的。&lt;br /&gt;
&lt;br /&gt;
TCP/IP 护设计者如此设计，主要原因有两个：&lt;br /&gt;
&lt;br /&gt;
防止上一次连接中的包迷路后重新出现，影响新的连接经过 2MSL 时间后，上一次连接中所有重复的包都会消失。&lt;br /&gt;
为了可靠地关闭TCP连接。主动关闭方发送的最后一个ACKFN有可能会丢失，如果丢失，被动方会重新发送Fm，这时如果主动方处于CLOSED状态，就会q 应RST而不是ACK。所以主动方要处于TIM巳吣IT状态，而不能是CLOSED」态。另外，TIME_WAIT 并不会占用很大的资源，除非受到攻击。&lt;br /&gt;
// 在Squid服务器中可输入如下命令查看当前连接统计数： &lt;br /&gt;
netstat -n | awk &amp;#039;/^tcp/ {++S[$NF]} END{for(a in S)} print a, S[a]}&amp;#039;  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
命令显示结果如下所示：&lt;br /&gt;
&lt;br /&gt;
LAST_ACK 14&lt;br /&gt;
SYN_RECV 348&lt;br /&gt;
ESTABISHED 70&lt;br /&gt;
FIN_WAIT1 229&lt;br /&gt;
FIN_WAIT2 30&lt;br /&gt;
CLOSING 33&lt;br /&gt;
TIME_WAIT 18122&lt;br /&gt;
&lt;br /&gt;
命令中的含义分别如下。&lt;br /&gt;
&lt;br /&gt;
CLOSED：无恬动的或正在进行的连接。&lt;br /&gt;
LISTEN：服务器正在等待进入呼叫。&lt;br /&gt;
SYN_RECV：一个连接请求已经到达，等待确认。&lt;br /&gt;
SYN_SENT：应用已经开始，打开一个连接。&lt;br /&gt;
ESTABLISHED；正常数据传输状态。&lt;br /&gt;
FIN_WAT1：应用说它已经完成。&lt;br /&gt;
FIN_WAT2：另一边己同意释放。&lt;br /&gt;
ITMED_WAIT：等待所有分组死掉。&lt;br /&gt;
CLOSING；两边尝试同时关闭。&lt;br /&gt;
TIME_WAIT：另一边已初始化一个释放。&lt;br /&gt;
LAST_ACK：等待所有分组死掉。 &lt;br /&gt;
也就是说，这条命令可以把当前系统的网络连接状态分类汇总。 &lt;br /&gt;
在 Linux 下高并发的 Squid 服务器中，TCP TIME_WAIT 套接字的数量经常可达到两三万，服务器很容易就会被拖死。不过，可以通过修改Linux 内核参数来减少 Squid 服务器的 TIME_WAIT 套接字数量，命令如下：&lt;br /&gt;
&lt;br /&gt;
vim /etc/sysctl.conf&lt;br /&gt;
// 然后，增加以下参数&lt;br /&gt;
net.ipv4.tcp_fin_timeout = 30&lt;br /&gt;
net.ipv4.tcp_keepalive_time = 1200&lt;br /&gt;
net.ipv4.tcp_syncookies = 1&lt;br /&gt;
net.ipv4.tcp_tw_reuse = 1&lt;br /&gt;
net.ipv4.tcp_tw_recycle = 1&lt;br /&gt;
net.ipv4.ip_local_port_range = 10000 65000&lt;br /&gt;
net.ipv4.tcp_max_syn_backlog = 8192&lt;br /&gt;
net.ipv4.tcp_max_tw_buckets = 5000&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
以下将简单说明上面各个参数的含义：&lt;br /&gt;
&lt;br /&gt;
net.ipv4.tcp_syncookies = 1表示开启SYN Cookies。当出现SYN等待队列溢出时 启用 Cookie 旋来处理，可防范少量的SYN 攻击。该参数默认为0，表示关闭。&lt;br /&gt;
net.ipv4.tcp_tw_reuse = 1表示开启重用，即允许将TIME-WAIT 套接字重新用于的TCP连接。该参数默认为 0，表示关闭。&lt;br /&gt;
net.ipv4.tcp_tw_recycle = 1 表示开启TCP连接中TIME-WAIT 套接字的快速回收，该参数默认为0，表示关闭。&lt;br /&gt;
net.ipv4.tcp_fin_timeout = 30 表示如果套接字由本端要求关闭，那么这个参数将决定保持在FlN-WAIT-2 状态的时间。&lt;br /&gt;
net.ipv4.tcp_keepalive_time = 1200 表示当 Keepalived 启用时，TCP发送Keepalived 消息的频度改为20分钟，默认值是2小时。&lt;br /&gt;
net.ipv4.ip_local_port_range = 10000 65000 表示CentOS 系统向外连接的端口范围。其默认值很小，这里改为10000到65000。建议不要将这里的最低值设得太低，否则可能会占用正常的端口。&lt;br /&gt;
net.ipv4.tcp_max_syn_backlog = 8192 表示SYN队列的长度，默认值为1024，此处加大队列长度为8192，可以容纳更多等待连接的网络连接数。&lt;br /&gt;
net.ipv4.tcp_max_tw_buckets = 5000 表示系统同时保持TIME_WAIT 套接字的最大数量，如果超过这个数字，TlME_WAIT 套接字将立刻被清除并打印警告信息，默认值为180000，此处改为5000。对于Apache、Nginx等服务器，前面介绍的几个参数已经可以很好地减少TIME_WAIT套接字的数量，但是对于Squid来说，效果却不大，有了此参数就可以控制TME_WAIT 套接字的最大数量，避免Squid 记服务器被大量的TIME_WAIT 套接字拖死。&lt;br /&gt;
执行以下命令使内核配置立马生效：&lt;br /&gt;
&lt;br /&gt;
/sbin/sysctl -p&lt;br /&gt;
&lt;br /&gt;
如果是用于Apache 或 Nginx 等 Web 服务器，则只需要更改以下几项即可。&lt;br /&gt;
&lt;br /&gt;
net.ipv4.tcp_syncookies = 1&lt;br /&gt;
net.ipv4.tcp_tw_reuse = 1&lt;br /&gt;
net.ipv4.tcp_tw_recycle = 1&lt;br /&gt;
net.ipv4.ip_local_port_range = 10000 65000&lt;br /&gt;
&lt;br /&gt;
// 执行以下命令使内核配置立马生效&lt;br /&gt;
/sbin/sysctl -p&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://blog.csdn.net/kxwinxp/article/details/78895373 CentOS 7 运维优化]&lt;br /&gt;
&lt;br /&gt;
==centos6 kernel optimization==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#dkm/dkmops/osinit/init.sh&lt;br /&gt;
#dkm/init/init.sh&lt;br /&gt;
&lt;br /&gt;
fs.file-max = 6553500&lt;br /&gt;
net.ipv4.conf.eth0.accept_source_route = 0&lt;br /&gt;
net.ipv4.conf.eth1.accept_source_route = 0&lt;br /&gt;
net.ipv4.conf.lo.accept_source_route = 0&lt;br /&gt;
net.ipv4.conf.default.accept_source_route = 0&lt;br /&gt;
net.ipv4.conf.all.accept_source_route = 0&lt;br /&gt;
net.ipv4.tcp_syncookies = 1  &lt;br /&gt;
net.ipv4.conf.eth0.secure_redirects = 1&lt;br /&gt;
net.ipv4.conf.eth1.secure_redirects = 1&lt;br /&gt;
net.ipv4.conf.lo.secure_redirects = 1&lt;br /&gt;
net.ipv4.conf.default.secure_redirects = 1&lt;br /&gt;
net.ipv4.conf.all.secure_redirects = 1&lt;br /&gt;
net.ipv4.conf.eth0.accept_redirects = 0&lt;br /&gt;
net.ipv4.conf.eth1.accept_redirects = 0&lt;br /&gt;
net.ipv4.conf.lo.accept_redirects = 0&lt;br /&gt;
net.ipv4.conf.default.accept_redirects = 0&lt;br /&gt;
net.ipv4.conf.all.accept_redirects = 0&lt;br /&gt;
net.ipv4.conf.eth0.send_redirects = 0&lt;br /&gt;
net.ipv4.conf.eth1.send_redirects = 0&lt;br /&gt;
net.ipv4.conf.lo.send_redirects = 0&lt;br /&gt;
net.ipv4.conf.default.send_redirects = 0&lt;br /&gt;
net.ipv4.conf.all.send_redirects = 0&lt;br /&gt;
net.ipv4.icmp_echo_ignore_broadcasts = 1&lt;br /&gt;
net.ipv4.icmp_ignore_bogus_error_responses = 1&lt;br /&gt;
net.ipv4.tcp_tw_reuse = 1 #  开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接，默认为0，表示关闭  &lt;br /&gt;
net.ipv4.tcp_tw_recycle = 1 # 开启TCP连接中TIME-WAIT sockets的快速回收，默认为0，表示关闭 注意 用clb 不能打开 &lt;br /&gt;
net.ipv4.tcp_fin_timeout = 30&lt;br /&gt;
net.ipv4.tcp_keepalive_time = 1800 # 1200 表示当keepalive起用的时候，TCP发送keepalive消息的频度。缺省是2小时，改为20分钟&lt;br /&gt;
net.core.wmem_max = 8388608&lt;br /&gt;
net.core.rmem_max = 8388608&lt;br /&gt;
net.ipv4.tcp_rmem = &amp;quot;4096 873814 8738140&amp;quot;&lt;br /&gt;
net.ipv4.tcp_wmem = &amp;quot;4096 873814 8738140&amp;quot;&lt;br /&gt;
net.ipv4.tcp_max_syn_backlog = 4096  #表示SYN队列的长度，默认为1024，加大队列长度为8192，可以容纳更多等待连接的网络连接数。&lt;br /&gt;
net.ipv4.tcp_syn_retries = 1&lt;br /&gt;
net.ipv4.tcp_synack_retries = 1&lt;br /&gt;
&lt;br /&gt;
net.ipv4.ip_local_port_range = 1024 65000  #表示用于向外连接的端口范围。缺省情况下很小：32768到61000，改为1024到65000&lt;br /&gt;
net.ipv4.tcp_max_tw_buckets = 5000  #表示系统同时保持TIME_WAIT套接字的最大数量，如果超过这个数字，TIME_WAIT套接字将立刻被清除并打印警告信息。默认为 180000，改为 5000。对于Apache、Nginx等服务器，上几行的参数可以很好地减少TIME_WAIT套接字数量，但是对于Squid，效果却不大。此项参数可以控制TIME_WAIT套接字的最大数量，避免Squid服务器被大量的TIME_WAIT套接字拖死。&lt;br /&gt;
&lt;br /&gt;
[[ ! -f /etc/security/limits.d/nofile.conf ]] &amp;amp;&amp;amp; echo &amp;quot;*               -       nofile          8192&amp;quot;    &amp;gt;&amp;gt; /etc/security/limits.d/nofile.conf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#下面是纯净版本 没加注释&lt;br /&gt;
&lt;br /&gt;
fs.file-max = 6553500&lt;br /&gt;
net.ipv4.conf.eth0.accept_source_route = 0&lt;br /&gt;
net.ipv4.conf.eth1.accept_source_route = 0&lt;br /&gt;
net.ipv4.conf.lo.accept_source_route = 0&lt;br /&gt;
net.ipv4.conf.default.accept_source_route = 0&lt;br /&gt;
net.ipv4.conf.all.accept_source_route = 0&lt;br /&gt;
net.ipv4.tcp_syncookies = 1 # 表示开启SYN Cookies。当出现SYN等待队列溢出时，启用cookies来处理，可防范少量SYN攻击，默认为0，表示关闭；&lt;br /&gt;
 &lt;br /&gt;
net.ipv4.conf.eth0.secure_redirects = 1&lt;br /&gt;
net.ipv4.conf.eth1.secure_redirects = 1&lt;br /&gt;
net.ipv4.conf.lo.secure_redirects = 1&lt;br /&gt;
net.ipv4.conf.default.secure_redirects = 1&lt;br /&gt;
net.ipv4.conf.all.secure_redirects = 1&lt;br /&gt;
net.ipv4.conf.eth0.accept_redirects = 0&lt;br /&gt;
net.ipv4.conf.eth1.accept_redirects = 0&lt;br /&gt;
net.ipv4.conf.lo.accept_redirects = 0&lt;br /&gt;
net.ipv4.conf.default.accept_redirects = 0&lt;br /&gt;
net.ipv4.conf.all.accept_redirects = 0&lt;br /&gt;
net.ipv4.conf.eth0.send_redirects = 0&lt;br /&gt;
net.ipv4.conf.eth1.send_redirects = 0&lt;br /&gt;
net.ipv4.conf.lo.send_redirects = 0&lt;br /&gt;
net.ipv4.conf.default.send_redirects = 0&lt;br /&gt;
net.ipv4.conf.all.send_redirects = 0&lt;br /&gt;
net.ipv4.icmp_echo_ignore_broadcasts = 1&lt;br /&gt;
net.ipv4.icmp_ignore_bogus_error_responses = 1&lt;br /&gt;
net.ipv4.tcp_tw_reuse = 1&lt;br /&gt;
net.ipv4.tcp_tw_recycle = 1&lt;br /&gt;
net.ipv4.tcp_fin_timeout = 30 #表示如果套接字由本端要求关闭，这个参数决定了它保持在FIN-WAIT-2状态的时间。&lt;br /&gt;
net.ipv4.tcp_keepalive_time = 1800&lt;br /&gt;
net.core.wmem_max = 8388608&lt;br /&gt;
net.core.rmem_max = 8388608&lt;br /&gt;
net.ipv4.tcp_rmem = &amp;quot;4096 873814 8738140&amp;quot;&lt;br /&gt;
net.ipv4.tcp_wmem = &amp;quot;4096 873814 8738140&amp;quot;&lt;br /&gt;
net.ipv4.tcp_max_syn_backlog = 4096 &lt;br /&gt;
net.ipv4.tcp_syn_retries = 1&lt;br /&gt;
net.ipv4.tcp_synack_retries = 1&lt;br /&gt;
net.ipv4.ip_local_port_range = 1024 65000 &lt;br /&gt;
net.ipv4.tcp_max_tw_buckets = 5000 &lt;br /&gt;
&lt;br /&gt;
[[ ! -f /etc/security/limits.d/nofile.conf ]] &amp;amp;&amp;amp; echo &amp;quot;*               -       nofile          8192&amp;quot;    &amp;gt;&amp;gt; /etc/security/limits.d/nofile.conf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=调整 Linux 的最大文件打开数=&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
要调整一下 Linux 的最大文件打开数，否则运行 Squid 诅服务的机器在高负载时执行性能将会很差；另外，在 Linux 下部署应用时，有时候会遇上 “Too many open files” 这样的问题，这个值也会影响服务器的最大并发数。其实 Linux 是有文件句柄限制的。但默认值下是很高，一般是1024，生产服务器很容易就会达到这个值，所以需要改动此值。&lt;br /&gt;
&lt;br /&gt;
vim /etc/security/limit.conf&lt;br /&gt;
#// 在最后一行添加如下&lt;br /&gt;
* soft nofile 65535&lt;br /&gt;
* hard nofile 65535&lt;br /&gt;
#// 再打开配置&lt;br /&gt;
vim /etc/rc.local&lt;br /&gt;
// 添加如下内容&lt;br /&gt;
ulimit -SHn 65535 &lt;br /&gt;
&lt;br /&gt;
ulimit -n 命令并不能真正看到文件的最大文件打开数。可用如下脚本查看：&lt;br /&gt;
--------------------- &lt;br /&gt;
#!/bin/bash&lt;br /&gt;
for pid in `ps aux |grep nginx |grep -v grep|awk &amp;#039;{print $2}&amp;#039;`&lt;br /&gt;
do&lt;br /&gt;
cat /proc/${pid}/limits |grep &amp;#039;Max open files&amp;#039;&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[https://www.jianshu.com/p/23ee9db2a620 使用ulimit 命令、/etc/security/limits.conf、proc 调整系统参数]&lt;br /&gt;
&lt;br /&gt;
[https://developer.aliyun.com/article/435650 ulimit设置不生效?]&lt;br /&gt;
&lt;br /&gt;
=Centos的网络内核参数优化来提高服务器并发处理能力=&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
netstat -n | awk &amp;#039;/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}&amp;#039;&lt;br /&gt;
&lt;br /&gt;
TIME_WAIT 18098&lt;br /&gt;
我们只用关心TIME_WAIT的个数，在这里可以看到，有18000多个TIME_WAIT，这样就占用了18000多个端口。要知道端口的数量只有65535个，占用一个少一个，会严重的影响到后继的新连接。这种情况下，我们就有必要调整下Linux的TCP内核参数，让系统更快的释放TIME_WAIT连接。&lt;br /&gt;
&lt;br /&gt;
用vim打开配置文件：#vim /etc/sysctl.conf&lt;br /&gt;
&lt;br /&gt;
在这个文件中，加入下面的几行内容：&lt;br /&gt;
net.ipv4.tcp_syncookies = 1&lt;br /&gt;
net.ipv4.tcp_tw_reuse = 1&lt;br /&gt;
net.ipv4.tcp_tw_recycle = 1&lt;br /&gt;
net.ipv4.tcp_fin_timeout = 30&lt;br /&gt;
&lt;br /&gt;
输入下面的命令，让内核参数生效：#sysctl -p&lt;br /&gt;
&lt;br /&gt;
简单的说明上面的参数的含义：&lt;br /&gt;
&lt;br /&gt;
net.ipv4.tcp_syncookies = 1&lt;br /&gt;
#表示开启SYN Cookies。当出现SYN等待队列溢出时，启用cookies来处理，可防范少量SYN攻击，默认为0，表示关闭；&lt;br /&gt;
net.ipv4.tcp_tw_reuse = 1&lt;br /&gt;
#表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接，默认为0，表示关闭；&lt;br /&gt;
net.ipv4.tcp_tw_recycle = 1&lt;br /&gt;
#表示开启TCP连接中TIME-WAIT sockets的快速回收，默认为0，表示关闭；&lt;br /&gt;
net.ipv4.tcp_fin_timeout&lt;br /&gt;
#修改系統默认的 TIMEOUT 时间。&lt;br /&gt;
&lt;br /&gt;
在经过这样的调整之后，除了会进一步提升服务器的负载能力之外，还能够防御小流量程度的DoS、CC和SYN攻击。&lt;br /&gt;
&lt;br /&gt;
此外，如果你的连接数本身就很多，我们可以再优化一下TCP的可使用端口范围，进一步提升服务器的并发能力。依然是往上面的参数文件中，加入下面这些配置：&lt;br /&gt;
net.ipv4.tcp_keepalive_time = 1200&lt;br /&gt;
net.ipv4.ip_local_port_range = 10000 65000&lt;br /&gt;
net.ipv4.tcp_max_syn_backlog = 8192&lt;br /&gt;
net.ipv4.tcp_max_tw_buckets = 5000&lt;br /&gt;
#这几个参数，建议只在流量非常大的服务器上开启，会有显著的效果。一般的流量小的服务器上，没有必要去设置这几个参数。&lt;br /&gt;
&lt;br /&gt;
net.ipv4.tcp_keepalive_time = 1200&lt;br /&gt;
#表示当keepalive起用的时候，TCP发送keepalive消息的频度。缺省是2小时，改为20分钟。&lt;br /&gt;
net.ipv4.ip_local_port_range = 10000 65000&lt;br /&gt;
#表示用于向外连接的端口范围。缺省情况下很小：32768到61000，改为10000到65000。（注意：这里不要将最低值设的太低，否则可能会占用掉正常的端口！）&lt;br /&gt;
net.ipv4.tcp_max_syn_backlog = 8192&lt;br /&gt;
#表示SYN队列的长度，默认为1024，加大队列长度为8192，可以容纳更多等待连接的网络连接数。&lt;br /&gt;
net.ipv4.tcp_max_tw_buckets = 6000&lt;br /&gt;
#表示系统同时保持TIME_WAIT的最大数量，如果超过这个数字，TIME_WAIT将立刻被清除并打印警告信息。默 认为180000，改为6000。对于Apache、Nginx等服务器，上几行的参数可以很好地减少TIME_WAIT套接字数量，但是对于Squid，效果却不大。此项参数可以控制TIME_WAIT的最大数量，避免Squid服务器被大量的TIME_WAIT拖死。&lt;br /&gt;
&lt;br /&gt;
内核其他TCP参数说明：&lt;br /&gt;
net.ipv4.tcp_max_syn_backlog = 65536&lt;br /&gt;
#记录的那些尚未收到客户端确认信息的连接请求的最大值。对于有128M内存的系统而言，缺省值是1024，小内存的系统则是128。&lt;br /&gt;
net.core.netdev_max_backlog = 32768&lt;br /&gt;
#每个网络接口接收数据包的速率比内核处理这些包的速率快时，允许送到队列的数据包的最大数目。&lt;br /&gt;
&lt;br /&gt;
net.core.somaxconn =65535&lt;br /&gt;
#net.core.somaxconn = 32768&lt;br /&gt;
#web应用中listen函数的backlog默认会给我们内核参数的net.core.somaxconn限制到128，而nginx定义的NGX_LISTEN_BACKLOG默认为511，所以有必要调整这个值。&lt;br /&gt;
#net.core.somaxconn = 262144 # sysctl: setting key &amp;quot;net.core.somaxconn&amp;quot;: Invalid argument  because shouldn&amp;#039;t exceed USHRT_MAX&lt;br /&gt;
&lt;br /&gt;
net.core.wmem_default = 8388608&lt;br /&gt;
net.core.rmem_default = 8388608&lt;br /&gt;
net.core.rmem_max = 16777216           #最大socket读buffer,可参考的优化值:873200&lt;br /&gt;
net.core.wmem_max = 16777216           #最大socket写buffer,可参考的优化值:873200&lt;br /&gt;
net.ipv4.tcp_timestsmps = 0&lt;br /&gt;
#时间戳可以避免序列号的卷绕。一个1Gbps的链路肯定会遇到以前用过的序列号。时间戳能够让内核接受这种“异常”的数据包。这里需要将其关掉。&lt;br /&gt;
net.ipv4.tcp_synack_retries = 2&lt;br /&gt;
#为了打开对端的连接，内核需要发送一个SYN并附带一个回应前面一个SYN的ACK。也就是所谓三次握手中的第二次握手。这个设置决定了内核放弃连接之前发送SYN+ACK包的数量。&lt;br /&gt;
net.ipv4.tcp_syn_retries = 2&lt;br /&gt;
#在内核放弃建立连接之前发送SYN包的数量。&lt;br /&gt;
#net.ipv4.tcp_tw_len = 1&lt;br /&gt;
net.ipv4.tcp_tw_reuse = 1&lt;br /&gt;
# 开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接。&lt;br /&gt;
&lt;br /&gt;
net.ipv4.tcp_wmem = 8192 436600 873200&lt;br /&gt;
# TCP写buffer,可参考的优化值: 8192 436600 873200&lt;br /&gt;
net.ipv4.tcp_rmem  = 32768 436600 873200&lt;br /&gt;
# TCP读buffer,可参考的优化值: 32768 436600 873200&lt;br /&gt;
net.ipv4.tcp_mem = 94500000 91500000 92700000&lt;br /&gt;
# 同样有3个值,意思是:&lt;br /&gt;
net.ipv4.tcp_mem[0]:低于此值，TCP没有内存压力。&lt;br /&gt;
net.ipv4.tcp_mem[1]:在此值下，进入内存压力阶段。&lt;br /&gt;
net.ipv4.tcp_mem[2]:高于此值，TCP拒绝分配socket。&lt;br /&gt;
上述内存单位是页，而不是字节。可参考的优化值是:786432 1048576 1572864&lt;br /&gt;
&lt;br /&gt;
net.ipv4.tcp_max_orphans = 3276800&lt;br /&gt;
#系统中最多有多少个TCP套接字不被关联到任何一个用户文件句柄上。&lt;br /&gt;
如果超过这个数字，连接将即刻被复位并打印出警告信息。&lt;br /&gt;
这个限制仅仅是为了防止简单的DoS攻击，不能过分依靠它或者人为地减小这个值，&lt;br /&gt;
更应该增加这个值(如果增加了内存之后)。&lt;br /&gt;
net.ipv4.tcp_fin_timeout = 30&lt;br /&gt;
#如果套接字由本端要求关闭，这个参数决定了它保持在FIN-WAIT-2状态的时间。对端可以出错并永远不关闭连接，甚至意外当机。缺省值是60秒。2.2 内核的通常值是180秒，你可以按这个设置，但要记住的是，即使你的机器是一个轻载的WEB服务器，也有因为大量的死套接字而内存溢出的风险，FIN- WAIT-2的危险性比FIN-WAIT-1要小，因为它最多只能吃掉1.5K内存，但是它们的生存期长些。&lt;br /&gt;
&lt;br /&gt;
经过这样的优化配置之后，你的服务器的TCP并发处理能力会显著提高。以上配置仅供参考&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=applicastion 优化=&lt;br /&gt;
== redis==&lt;br /&gt;
&lt;br /&gt;
 4）降低fork操作的频率，如适度放宽AOF自动触发时机，避免不必要&lt;br /&gt;
的全量复制等&lt;br /&gt;
&lt;br /&gt;
=see also=&lt;br /&gt;
=references=&lt;br /&gt;
[https://www.cnblogs.com/aquester/p/9891476.html 有很多优化项目的reids安装文档]&lt;br /&gt;
&lt;br /&gt;
[https://blog.csdn.net/shaobingj126/article/details/8549494 Linux(Centos )的网络内核参数优化来提高服务器并发处理能力]&lt;br /&gt;
&lt;br /&gt;
[https://www.upyun.com/tech/article/719/%E3%80%90%E5%AE%9E%E6%93%8D%E5%B9%B2%E8%B4%A7%E3%80%91%E5%81%9A%E5%A5%BD%E8%BF%99%2016%20%E9%A1%B9%E4%BC%98%E5%8C%96%EF%BC%8C%E4%BD%A0%E7%9A%84%20Linux%20%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E7%84%95%E7%84%B6%E4%B8%80%E6%96%B0.html 做好这 16 项优化，你的 Linux 操作系统焕然一新]&lt;/div&gt;</summary>
		<author><name>Evan</name></author>
	</entry>
</feed>