Linux
按照传统,Linux不同的发行版本和不同的内核对各项参数及设置均做了改动,从而使得系统能够获得更好的性能。下边将分四部分介绍在Red Hat Enterprise Linux AS和SUSE LINUX Enterprise Server系统下,如何用以下几种技巧进行性能的优化:
1、Disabling daemons (关闭 daemons)
2、Shutting down the GUI (关闭GUI)
3、Changing kernel parameters (改变内核参数)
4、Kernel parameters (内核参数)
5、Tuning the processor subsystem(处理器子系统调优)
6、Tuning the memory subsystem (内存子系统调优)
7、Tuning the file system(文件系统子系统调优)
8、Tuning the network subsystem(网络子系统调优)
8 网络子系统的调优操作系统安装完毕,就要对网络子系统进行调优。对其它子系统的影响:影响CPU利用率,尤其在有大量TCP连接、块尺寸又非常小时,内存的使用会明显增加。
如何预防性能下降如下的sysctl命令用于改变安全设置,但是它也可以防止网络性能的下降。这些命令被设置为缺省值。
·关闭如下参数可以防止黑客对服务器IP地址的攻击
·开启TCP SYN cookies,保护服务器避免受syn-flood攻击,包括服务取决denial-of-service (DoS) 或者分布式服务拒绝distributed denial-of-service (DDoS) (仅适用Red Hat Enterprise Linux AS)
·以下命令使服务器忽略来自被列入网关的服务器的重定向。因重定向可以被用来进行攻击,所以我们只接受有可靠来源的重定向。
另外,你可以配置接受或拒绝任何ICMP重定向。ICMP重定向是路由器传输路由信息的机制。比如,当网关接收到来自所接网络主机的Internet数据报时,网关可以发送重定向信息到一台主机。网关检查路由表获得下一个网关的地址,第二个网关将数据报路由到目标网络.关闭这些重定向得命令如下:
·如果这个服务器不是一台路由器,那么它不会发送重定向,所以可以关闭该功能:
·配置服务器拒绝接受广播风暴或者smurf 攻击attacks:
·忽略所有icmp包或者pings:
·有些路由器针对广播祯发送无效的回应,每个都产生警告并在内核产生日志.这些回应可以被忽略:
针对TCP和UDP的调优下边的命令用来对连接数量非常大的服务器进行调优.
·对于同时支持很多连接的服务器,新的连接可以重新使用TIME-WAIT套接字. 这对于Web服务器非常有效:
如果你使用该命令,还要启动TIME-WAIT 套接字状态的快速循环功能:
图Figure 10-7显示出将这些功能启用,连接数量明显降低.因为每个TCP传输都包含远程客户端的协议信息缓存,所以有利于提高性能.缓存中存放round-trip时间、最大segment大小、拥塞窗口的信息。
·参数
tcp_fin_timeout 是套接字关闭时,保持
FIN-WAIT-2状态的时间。一个
TCP连接以
three-segment SYN序列开始
, 以
three-segment FIN序列结束
.均不保留数据
.通过改变
tcp_fin_timeout的值
, 从
FIN序列到内存可以空闲出来处理新连接的时间缩短了
,使性能得到改进
.改变这个值的前要经过认真的监测
,避免因为死套接字造成内存溢出
.·服务器的一个问题是
,同一时刻的大量
TCP连接里有很多的连接被打开但是没有使用
. TCP的
keepalive功能检测到这些连接
,缺省情况下
,在
2小时之后丢掉
. 2个小时的可能导致内存过度使用
,降低性能
.因此改成
1800秒
(30分钟
)是个更好的选择
:·对于所有协议的队列
,设置最大系统发送缓存
(wmem) 和接收缓存
(rmem)到
8MB这些设置指定了创建
TCP套接字时为其分配的内存容量
. 另外
,使用如下命令发送和接收缓存
.该命令设定了三个值
:最小值、初始值和最大值:
第三个值必须小于或等于
wmem_max和
rmem_max。
·
(SUSE LINUX Enterprise Server适用
) 通过保留路径验证来源数据包。缺省情况下,路由器转发所有的数据包,即便是明显的异常网络流量。通过启动和是的过滤功能,丢掉这些数据包:
·当服务器负载繁重或者是有很多客户端都是超长延时的连接故障,可能会导致
half-open连接数量的增加。这对于
Web服务器很来讲很平常
,尤其有很多拨号客户时
.这些
half-open连接保存在
backlog connections 队列中
.将这个值最少设置为
4096 (缺省为
1024). 即便是服务器不接收这类连接
,设置这个值还能防止受到
denial-of-service (syn-flood)的攻击
.·设置
ipfrag参数
,尤其是
NFS和
Samba服务器。这里
,我们可以设置用于重新组合
IP碎片的最大、最小内存。当
ipfrag_high_thresh值被指派,碎片会被丢弃直到达到
ipfrag_low_thres值。
当
TCP数据包传输发生错误时,开始碎片整理。有效的数据包保留在内存,同时损坏的数据包被转发。例如,设置可用内存范围从
256 MB到
384 MB: