linux服务器的一些优化(2)
AllowOverride None #禁止寻找.htaccess,加快响应.
Options FollowSymLinks #不检查相关文件是不是符号连接,加快响应.
MaxKeepAliveRequests 50 #一次持续长连接最多允许接收几次请求,如太大会消耗更多内存
KeepAliveTimeout 5 #长连接在无活动后等待多久自动关闭,太小会导致频繁创建新的进程,太大会占连接
ServerLimit 20 #服务器允许配置的进程数上限
ThreadLimit 200 #每个子进程可配置的线程数上限
StartServers 5 #服务器启动时建立的子进程数
MinSpareThreads 50 #最小空闲线程数
MaxSpareThreads 250 # 设置最大空闲线程数
MaxClients 2000 # 同一时间最大接入请求数量(ServerLimit乘ThreadsPerChild的值)
ThreadsPerChild 100 #每个子进程建立的常驻的执行线程数,子进程在启动时建立这些线程后就不再建立新的线程了
MaxRequestsPerChild 10000 ##每个进程只响应xxxx次,超过此数后关闭自身并启用新的进程
Timeout 300 #客户程序和服务器连接的超时间隔
KeepAlive On #用于支持HTTP 1.1版本的一次连接、多次传输功能
MaxKeepAliveRequests 100 #一次连接可以进行的HTTP请求的最大请求次数。其值为0时为不限制
#ExtendedStatus On #服务器提供运行状态信息。
#ServerAdmin you@your.address
KeepAliveTimeout 15 #一次连接中的多次请求传输之间的时间,超过定义值后,服务器就断开连接。–找相对低端的机器处理图片和 HTML 页面,使用squid或设置KeepAlives off ,来减少断开连接的时间。
–将图片与页面服务器进行分离,因图片传输需要的时间更长,传输需要花很大开销在建立连接上,apache并发性能肯定会下降
–Web目录中文件数不要太多(超过1000),文件越多花费在定位上的时间也越多
对于 PHP 脚本而言,主要的瓶颈是 CPU ,对于静态页面而言,瓶颈是内存和网络。
3、Apache 处理 PHP 脚本的速度要比静态页面慢 2-10 倍,因此尽量采用多的静态页面,少的脚本。
4、PHP 脚本如果不做缓冲,每次调用都需要编译,因此,安装一个 PHP 缓冲产品能提升 25-100% 的性能
[第三方软件优化]
18、如果喜欢从修改 Apache 源码入手,可以安装 lingerd。在页面产生和发送后,每个 Apache 进程都会浪费一段时光在客户连接上,Lingerd 能接管这项工作,让 Apache 迅速服务下一个客户请求。
19、如果你足够勇敢的话,还可以采用 Silicon Graphics 的 Accelerated Apache 补丁。这个工程能使 Apache 1.3 快 10 倍,使 Apache 2.0 快 4 倍。
安装一个 PHP 缓冲产品能提升 25-100% 的性能。Test Web server’s compression support
http://www.port80software.com/products/httpzip/compresscheck
APACHE优化原则
1点击/秒以下,可以不优化apache与系统的接口
1点击/秒以上,需要优化apache与系统的接口
buffer 设置
/proc/sys/net/core/rmem_default & /proc/sys/net/core/wmem_default
性能瓶径值
CPU >80%
vmstat 中r(run)<5,b(behind)≈0,
IBM RS/6000: 好 坏 糟糕
CPU: user% + sys%< 70% user% + sys%= 85% user% + sys%=90%+
磁盘: iowait % < 30% iowait % =40% iowait % = 50%+
内存: 无pagein pageout 每个CPU 达到10 page/秒 更多的pagein pageout
网络 < 30% 网络带宽
运行队列(Run Queue) < 2 * CPU个数
一般来说vmstat的性能指标为:wa不超过25,us+sy多用户情况下不超过80%,r和b不高于5,pi和po基本为零,fr:sr 接近1:1(当然都为零最好),fre一般不要底到120.
IO调整优化
cat /sys/block/sda/queue/scheduler #确定正在使用的是哪个 I/O 调度程序
在grub.conf的相应启动选项里加入elevator=deadline,如:
kernel /vmlinuz-2.6.6 ro root=/dev/sda6 elevator=deadline
#Deadline的I/O调度器,在数据吞吐量非常大的数据库系统中表现得更有优势。