如非必要,可以关闭 iptables 防火墙,在grub里,kernel里阻止 iptables 模块加载,iptable可能会影响服务器并发性能。
单进程最大打开文件数限制
$ ulimit -n 65535
将root启动的单一进程的最大可以打开的文件数设置为65535个。如果系统回显类似于“Operationnotpermitted”之类的话,说明上述限制修改失败,实际上是因为在中指定的数值超过了Linux系统对该用户打开文件数的软限制或硬限制。因此,就需要修改Linux系统对用户的关于打开文件数的软限制和硬限制。
$ vim /etc/security/limits.conf
* soft nofile 65535 //软限制最大文件数
* hard nofile 65535 //硬限制最大文件数
其中’*'号表示修改所有用户的限制;soft或hard指定要修改软限制还是硬限制;65536则指定了想要修改的新的限制值,即最大打开文件数(请注意软限制值要小于或等于硬限制)。修改完后保存文件。
内核TCP参数方面
$ vim /etc/sysctl.conf
net.ipv4.tcp_syncookies= 1 //打开TIME-WAIT套接字重用功能,对于存在大量连接的Web服务器非常有效。
net.ipv4.tcp_tw_reuse= 1 //减少处于FIN-WAIT-2连接状态的时间,使系统可以处理更多的连接。
net.ipv4.tcp_fin_timeout=30 //减少TCP KeepAlive连接侦测的时间,使系统可以处理更多的连接。
net.ipv4.tcp_tw_recycle= 1 //快速回收,慎用!慎用!慎用!
net.ipv4.neigh.default.gc_stale_time=120 //决定检查过期多久邻居条目
net.ipv4.conf.lo.arp_announce=2 //避免arp放大攻击
net.ipv4.icmp_echo_ignore_broadcasts = 1 //表示开启SYN Cookies,当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0。
net.ipv4.icmp_ignore_bogus_error_responses = 1 //开启恶意icmp错误消息保护
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0 //避免无源路由包
net.ipv4.tcp_keepalive_time = 1200 //如果对方不予应答,探测包的发送次数
net.ipv4.tcp_max_syn_backlog = 65536 //个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目。
net.ipv4.tcp_max_tw_buckets = 6000 //参数设置为 1 ,表示允许将TIME_WAIT状态的socket重新用于新的TCP链接,该参数默认为180000,过多的TIME_WAIT套接字会使Web服务器变慢。
net.inet.udp.checksum = 1 //防止不正确的udp包
sysctl -p
经过调整后除了会进一步提升服务器的负载能力之外,还能够防御小流量程度的DoS、CC和SYN攻击,有一些参数根据服务费配置调整,如果是流量大的机器,效果显著。(注意备份)