Linux Web服务器相关配置、命令

1、查看服务器链接IP地址排行:

 cat /proc/net/ip_conntrack | cut -d ' ' -f 10 | cut -d '=' -f 2 | sort | uniq -c | sort -nr | head -n 10

2、利用防火墙禁用IP、IP段

iptables -I INPUT -s 192.168.38.174 -j DROP //屏蔽单个ip

iptables -I INPUT -s 192.168.38.0/100 -j DROP //屏蔽某段ip
iptables -I INPUT -s 192.168.0.0/100 -j DROP  //屏蔽某些ip

3、修改Linux内核参数:

netstat -n| awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
CLOSED:无连接是活动的或正在进行中的。
LISTEN:服务器在等待进入呼叫。
SYN_RECV:一个连接请求已经到达,等待确认。
SYN_SENT:应用已经开始,打开一个连接。
ESTABLISHED:正常数据传输状态。
FIN_WAIT1:应用说它已经完成。
FIN_WAIT2:另一边已同意释放。
CLOSING:两边同时尝试关闭。
TIME_WAIT:另一边已初始化一个释放。
LAST_ACK:等待所有分组死掉。

vim /etc/sysctl.conf

如果是用于Apache或Nginx等的Web服务器,或Nginx的反向代理,则只需要更改以下几项即可:
net.ipv4.tcp_syncookies=1
net.ipv4.tcp_tw_reuse=1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.ip_local_port_range = 1024 65000

 

如果是邮件服务器,则建议内核方案如下: 
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 300
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.ip_local_port_range = 5000 65000
kernel.shmmax = 134217728

 

Linux下高并发的Squid服务器中:

net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.ip_local_port_range = 1024 65000
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_max_tw_buckets = 5000

 

 

执行以下命令使内核配置立即生效: 
/sbin/sysctl -p

4、ip_conntrack: table full, dropping packet. 

解决方法(1):加大ip_conntrack_max值
查出原本的ip_conntrack_max值: 
指令: cat /proc/sys/net/ipv4/ip_conntrack_max 
写入理想的数值(每一个ip_conntrack buffer会占用292 Bytes) 
指令: echo "数值" > /proc/sys/net/ipv4/ip_conntrack_max 
例如: echo "81920" > /proc/sys/net/ipv4/ip_conntrack_max 

这个效果是暂时的,如果要每次开机都使用新的数值,需将上述指令写入/etc/rc.d/rc.local 
或是在/etc/sysctl.conf加入: net.ipv4.ip_conntrack_max =数值
或使用指令: sysctl -w net.ipv4.ip_conntrack_max=数值

解决方法(2):降低ip_conntrack timeout时间
重设ip_conntrack_tcp_timeout_established (原值: 432000,单位:秒) 
指令: echo "数值" > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_established 
例如: echo "600" > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_established 
开机自动设置的作法同方法(1). 

猜你喜欢

转载自sharejava.iteye.com/blog/1948483