优化Linux核心参数
编辑/etc/sysctl.conf 在底部增加以下内容:
net.ipv4.tcp_keepalive_time = 300
#表示当Keepalive起用的时候,TCP发送keepalive消息的频繁度。预设值是2小时,这里我改为5分钟。
net.ipv4.tcp_tw_reuse = 1
#表示开启重用。允許將TIME-WAIT sockets重新用於新的TCP連接,預設为0,表示开关,我將它开啟。
net.ipv4.tcp_tw_recycle = 1
#表示开启TCP連接中TIME-WAIT sockets的快速回收,预设为0,表示开关,我将它开启。
net.ipv4.tcp_max_tw_buckets = 5000
#表示系統同时保持TIME_WAIT套接字的最大属性,如果超过这个数字,TIME_WAIT套接字將立刻被清除並印出警告訊息。预设是180000,改为5000。
之后记得执行 /sbin/sysctl -p 使配置生效。
以下配置是官网上提供:(官网上说,这个配置可以支持4000-8000 req/s的压力.)
net.ipv4.ip_local_port_range = 1024 65536
#表示用來向外连接的端口范围。预设情况下很小:32768到61000,我将它改为1024到65536。
net.core.rmem_max=16777216
net.core.wmem_max=16777216
net.ipv4.tcp_rmem=4096 87380 16777216
net.ipv4.tcp_wmem=4096 65536 16777216
net.ipv4.tcp_fin_timeout = 3
#表示如果套接字由本端要求开放,这个参数决定了它保持在FIN-WAIT-2状态的时间。
net.core.netdev_max_backlog = 30000。
net.ipv4.tcp_no_metrics_save=1
net.core.somaxconn = 262144
net.ipv4.tcp_syncookies = 0
#表示开启SYN Cookies。当出现SYN等待对列溢出时,启用cookies來处理,可防范少量SYN攻击,预设为0。
net.ipv4.tcp_max_orphans = 262144
net.ipv4.tcp_max_syn_backlog = 262144
#表示SYN队列的长度,预设为1024,加大队列长度为262144,可容纳更多等待连接的网路连接数。
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 2
系统环境优化
ulimit -HSn 131072
ulimit -HSc unlimited
==========================================================================
Edit /etc/sysctl.conf
These are numbers from a highly loaded varnishe serving about 4000-8000 req/s
(details: http://projects.linpro.no/pipermail/varnish-misc/2008-April/001769.html)
net.ipv4.ip_local_port_range = 1024 65536
net.core.rmem_max=16777216
net.core.wmem_max=16777216
net.ipv4.tcp_rmem=4096 87380 16777216
net.ipv4.tcp_wmem=4096 65536 16777216
net.ipv4.tcp_fin_timeout = 3
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
net.core.netdev_max_backlog = 30000
net.ipv4.tcp_no_metrics_save=1
net.core.somaxconn = 262144
net.ipv4.tcp_syncookies = 0
net.ipv4.tcp_max_orphans = 262144
net.ipv4.tcp_max_syn_backlog = 262144
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 2
==============================================================================
通过调整Linux TCP参数 提示服务器性能
用netstat -ant|grep TIME_WAIT|wc -l查看发现有700多的等待请求,原来是TCP/IP 栈引起的。
对于多数人来说,配置 TCP/IP 栈是邪恶的魔术,但是如果您运行高负载的 Web 服务器,那么有选择地更改 Red Hat 的一些缺省值能明显提高系统响应速度。TCP/IP 配置值被存储在 /proc/sys/net/ipv4 目录中,通常可以是某个值或用“0”(关)和“1”(开)来分别表示禁用和启用。linux缺省值如下:
tcp_fin_timeout 180
tcp_keepalive_time 7200
tcp_window_scaling 1
tcp_sack 1
tcp_timestamps 1
在下面的设置中,更改某些值能增加服务器可处理的 TCP/IP 连接的数量,缩短服务器在终止失效连接前的等待时间,禁用一些不必要的 IP 扩展。把这些设置添加到 /etc/sysctl.conf 文件,然后重新启动网络守护程序( /etc/rc.d/init.d/network restart )。
# Decrease the time default value for tcp_fin_timeout connection
net.ipv4.tcp_fin_timeout = 30
# Decrease the time default value for tcp_keepalive_time connection
net.ipv4.tcp_keepalive_time = 1800
# Turn off tcp_window_scaling
net.ipv4.tcp_window_scaling = 0
# Turn off the tcp_sack
net.ipv4.tcp_sack = 0
#Turn off tcp_timestamps
net.ipv4.tcp_timestamps = 0
# Set Time_Wait time
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
加到/etc/rc.local
代码:
echo "30">/proc/sys/net/ipv4/tcp_fin_timeout
echo "1800">/proc/sys/net/ipv4/tcp_keepalive_time
echo "0">/proc/sys/net/ipv4/tcp_window_scaling
echo "0">/proc/sys/net/ipv4/tcp_sack
echo "0">/proc/sys/net/ipv4/tcp_timestamps
通过以上修改,TIME_WAIT明显减少!
编辑/etc/sysctl.conf 在底部增加以下内容:
net.ipv4.tcp_keepalive_time = 300
#表示当Keepalive起用的时候,TCP发送keepalive消息的频繁度。预设值是2小时,这里我改为5分钟。
net.ipv4.tcp_tw_reuse = 1
#表示开启重用。允許將TIME-WAIT sockets重新用於新的TCP連接,預設为0,表示开关,我將它开啟。
net.ipv4.tcp_tw_recycle = 1
#表示开启TCP連接中TIME-WAIT sockets的快速回收,预设为0,表示开关,我将它开启。
net.ipv4.tcp_max_tw_buckets = 5000
#表示系統同时保持TIME_WAIT套接字的最大属性,如果超过这个数字,TIME_WAIT套接字將立刻被清除並印出警告訊息。预设是180000,改为5000。
之后记得执行 /sbin/sysctl -p 使配置生效。
以下配置是官网上提供:(官网上说,这个配置可以支持4000-8000 req/s的压力.)
net.ipv4.ip_local_port_range = 1024 65536
#表示用來向外连接的端口范围。预设情况下很小:32768到61000,我将它改为1024到65536。
net.core.rmem_max=16777216
net.core.wmem_max=16777216
net.ipv4.tcp_rmem=4096 87380 16777216
net.ipv4.tcp_wmem=4096 65536 16777216
net.ipv4.tcp_fin_timeout = 3
#表示如果套接字由本端要求开放,这个参数决定了它保持在FIN-WAIT-2状态的时间。
net.core.netdev_max_backlog = 30000。
net.ipv4.tcp_no_metrics_save=1
net.core.somaxconn = 262144
net.ipv4.tcp_syncookies = 0
#表示开启SYN Cookies。当出现SYN等待对列溢出时,启用cookies來处理,可防范少量SYN攻击,预设为0。
net.ipv4.tcp_max_orphans = 262144
net.ipv4.tcp_max_syn_backlog = 262144
#表示SYN队列的长度,预设为1024,加大队列长度为262144,可容纳更多等待连接的网路连接数。
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 2
系统环境优化
ulimit -HSn 131072
ulimit -HSc unlimited
==========================================================================
Edit /etc/sysctl.conf
These are numbers from a highly loaded varnishe serving about 4000-8000 req/s
(details: http://projects.linpro.no/pipermail/varnish-misc/2008-April/001769.html)
net.ipv4.ip_local_port_range = 1024 65536
net.core.rmem_max=16777216
net.core.wmem_max=16777216
net.ipv4.tcp_rmem=4096 87380 16777216
net.ipv4.tcp_wmem=4096 65536 16777216
net.ipv4.tcp_fin_timeout = 3
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
net.core.netdev_max_backlog = 30000
net.ipv4.tcp_no_metrics_save=1
net.core.somaxconn = 262144
net.ipv4.tcp_syncookies = 0
net.ipv4.tcp_max_orphans = 262144
net.ipv4.tcp_max_syn_backlog = 262144
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 2
==============================================================================
通过调整Linux TCP参数 提示服务器性能
用netstat -ant|grep TIME_WAIT|wc -l查看发现有700多的等待请求,原来是TCP/IP 栈引起的。
对于多数人来说,配置 TCP/IP 栈是邪恶的魔术,但是如果您运行高负载的 Web 服务器,那么有选择地更改 Red Hat 的一些缺省值能明显提高系统响应速度。TCP/IP 配置值被存储在 /proc/sys/net/ipv4 目录中,通常可以是某个值或用“0”(关)和“1”(开)来分别表示禁用和启用。linux缺省值如下:
tcp_fin_timeout 180
tcp_keepalive_time 7200
tcp_window_scaling 1
tcp_sack 1
tcp_timestamps 1
在下面的设置中,更改某些值能增加服务器可处理的 TCP/IP 连接的数量,缩短服务器在终止失效连接前的等待时间,禁用一些不必要的 IP 扩展。把这些设置添加到 /etc/sysctl.conf 文件,然后重新启动网络守护程序( /etc/rc.d/init.d/network restart )。
# Decrease the time default value for tcp_fin_timeout connection
net.ipv4.tcp_fin_timeout = 30
# Decrease the time default value for tcp_keepalive_time connection
net.ipv4.tcp_keepalive_time = 1800
# Turn off tcp_window_scaling
net.ipv4.tcp_window_scaling = 0
# Turn off the tcp_sack
net.ipv4.tcp_sack = 0
#Turn off tcp_timestamps
net.ipv4.tcp_timestamps = 0
# Set Time_Wait time
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
加到/etc/rc.local
代码:
echo "30">/proc/sys/net/ipv4/tcp_fin_timeout
echo "1800">/proc/sys/net/ipv4/tcp_keepalive_time
echo "0">/proc/sys/net/ipv4/tcp_window_scaling
echo "0">/proc/sys/net/ipv4/tcp_sack
echo "0">/proc/sys/net/ipv4/tcp_timestamps
通过以上修改,TIME_WAIT明显减少!