针对Web服务器总体优化

王朝厨房·作者佚名  2007-01-05
宽屏版  字体: |||超大  

一、文件系统

在fstab里加入noatime,如

#cat /etc/fstab

/dev/sda1 /home ext3 noatime,defaults 1 2

reboot或者重新mount生效

二、Tcp优化

在/etc/sysctl.conf里加入

net.ipv4.netfilter.ip_conntrack_tcp_timeout_syn_recv = 3

net.ipv4.tcp_syncookies = 1 #启用syncookies

net.ipv4.tcp_max_syn_backlog = 8192 #定义backlog队列容纳的最大半连接数

net.ipv4.tcp_fin_timeout = 30

net.ipv4.tcp_keepalive_time = 1800

net.ipv4.tcp_window_scaling = 0

net.ipv4.tcp_sack = 0

net.ipv4.tcp_timestamps = 0

[color=blue:b6bef7e40f]老实说,对于sysctl.conf究竟能不能用起来还真不知道,因为我是没用起来,虽然内核里面是支持的 = =b[/color:b6bef7e40f]

三、虚拟内存优化

/etc/sysctl.conf

vm.lower_zone_protection = 100

四、I/O调度器

在grub.conf的相应启动选项里加入elevator=deadline,如:

kernel /vmlinuz-2.6.6 ro root=/dev/sda6 elevator=deadline

这里用了Deadline的I/O调度器,它比系统默认的AnticipatoryI/O调度器更为小巧,在数据吞吐量非常大的数据库系统中表现得更有优势。

五、内核源代码参数修改

修改/usr/src/linux/include/linux/posix_types.h

#define __FD_SETSIZE 1024  65536

设置fd_set支持的最大数量

修改/usr/src/linux/include/linux/fs.h

#define INR_OPEN 1024  65536

#define NR_FILE 8192  65536

#define NR_RESERVED_FILES 10  128

设置最大打开文件数量(TCP连接数量)

修改/usr/src/linux/include/net/tcp.h

#define TCP_TIMEWAIT_LEN (60*HZ)  1*HZ

#define TCP_SYNACK_RETRIES 5  3

设置在backlog队列里的半连接的重试次数,每次都会花相应的时间,本质上

也是减少重试时间

make menuconfig中,去掉没用的选项,打开以下选项的开关:

High Memory Support (支持4GB以上内存)

Symmetric multi-processing support (支持多CPU)

TCP syncookie support (可以防DOS)

设置文件打开数等的其他方法(好处就是可以不重新编译内核)

在 /etc/init.d/sshd里加入(统一加在. /etc/rc.d/init.d/functions行后面)

[code:1:b6bef7e40f]ulimit -n 65535 >/dev/null 2>&1

ulimit -u 16384 >/dev/null 2>&1[/code:1:b6bef7e40f]

重起sshd:nohup /etc/init.d/sshd restart &

BTW:其实limits.conf不好,因为他需要root su - user遗传给普通用户

如果直接远程登陆是没效果的

六、apache

1、安装:采用worker线程工作模式

[code:1:b6bef7e40f]./configure --prefix=/prefix

--enable-mods-shared=all

--enable-deflate

--with-mpm=worker[/code:1:b6bef7e40f][color=blue:b6bef7e40f]chmod +s /prefix/bin/httpd [/color:b6bef7e40f]#允许普通用户也可以启动apache

2、配置:httpd.conf

[code:1:b6bef7e40f]Timeout 60

KeepAlive On

MaxKeepAliveRequests 150

KeepAliveTimeout 5

StartServers 3

MaxClients 3200 #支持3200个客户端哦

ServerLimit 32

MinSpareThreads 50

MaxSpareThreads 250

ThreadLimit 200

ThreadsPerChild 100

MaxRequestsPerChild 0

#上面的几个参数对机器要求比较高,如果是比较差的机器,每台机1000个连接最多了,你可能要重新设置参数,我的机器是DELL 2850

UseCanonicalName Off

HostnameLookups Off

ServerSignature Off[/code:1:b6bef7e40f]

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有