宿迁波仔博客

如何优化Apache性能

建立WEB服务器,在实际的站点运行中,也许服务器的性能表现会不尽如人意,这就需要分析具体的服务器性能瓶颈并找到解决办法,从而达到一个理想的负载状态,apache硬件以外的调优就要考虑他的工作模式、加载的模块、系统内核参数、以及连接请求等等,在此只做一些常用且简单的调优介绍。

apache的调优应从以下几点考虑:

模块:由于模块会占用一定的内存资源,所以无用的模块建议不装。

连接状态:由于连接的建立和保持都需要消耗硬件资源,所以为保证硬件性能和访问数相协调,需要对一下数值优化

/proc/sys/net/ipv4/tcp_max_syn_backlog

对于那些依然还未获得客户端确认的连接请求,需要保存在队列中最大数目

/proc/sys/net/ipv4/tcp_syn_retrirs

/proc/sys/net/ipv4/tcp_synack_retries

retries的次数,测试指定次数后确认断开连接,建议改小至2

/proc/sys/net/ipv4/tcp_keepalive_time

/proc/sys/net/ipv4/tcp_keepalive_intvl

/proc/sys/net/ipv4/tcp_keepalive_probes

tcp_keepalive_time为保持回话的时间,

tcp_keepalive_intvl为隔多少秒探针一次,

tcp_keepalive_probes为一共探几次

/proc/sys/net/ipv4/tcp_tw_recycle

/proc/sys/net/ipv4/tcp_tw_reuse

数值设置为1为可回收内存

/proc/sys/net/ipv4/tcp_max_syn_backlog

最大连接请求数(开始建立三次握手,但还没有完成)

/proc/sys/net/core/somaxconn

控制socket listen的队列数

lKeepAlive Off/On 

保持连接,会减少三次握手,但是会消耗内存是否打开,取决于单位时间内是否进行多次连接(三次握手),一个连接有多次请求的,建议打开,并适当调整KeepAliveTimeout时间

lMPM工作模式:

 

 prefork模式:使用多个子进程,每个子进程只有一个线程。每个进程在某个确定的时间只能维持一个连接。在大多数平台上,Prefork MPM在效率上要比Worker MPM要高,但是内存使用大得多。prefork的无线程设计在某些情况下将比worker更有优势:它可以使用那些没有处理好线程安全的第三方模块,并且对于那些线程调试困难的平台而言,它也更容易调试一些。

 worker模式:使用多个子进程,每个子进程有多个线程。每个线程在某个确定的时间只能维持一个连接。通常来说,在一个高流量的HTTP服务器上,Worker MPM是个比较好的选择,因为Worker MPM的内存使用比Prefork MPM要低得多。但worker MPM也由不完善的地方,如果一个线程崩溃,整个进程就会连同其所有线程一起"死掉".由于线程共享内存空间,所以一个程序在运行时必须被系统识别为"每个线程都是安全的"。

MPM中的MinSpareServers和MaxSpareServers

MinSpareServers指令设置空闲子进程的最小数量。所谓空闲子进程是指没有正在处理请求的子进程。如果当前空闲子进程数少于MinSpareServers ,那么Apache将以最大每秒一个的速度产生新的子进程。只有在非常繁忙机器上才需要调整这个参数。同时不建议调太大。

MaxSpareServers指令设置空闲子进程的最大数量。所谓空闲子进程是指没有正在处理请求的子进程。如果当前有超过MaxSpareServers数量的空闲子进程,那么父进程将杀死多余的子进程。

打比方apache的进程就是理发店的师傅,MinSpareServers的设置是理发师为一个客户服务,但是又来了其他客人也需要服务是吧,这个就是针对这个情况的。MaxSparServers就是最多有多少个理发师闲着,比如一个普通的理发店,有10000个理发师,很明显不科学,理发师住的地方都不够吧。所以这个值的设置取决于实际情况。当访问量大是应适当调大一点。

简而言之:StartServers的值是只要启动服务就会立即启动几个进程,并尽力保持几到几个空闲服务器运行。进程数的硬性限制由 MaxClients 指定。尽管一个进程能够处理许多相继的请求,Apache 还是会取消连接数超过MaxRequestsPerChild 值以后的进程,来降低内存浪费的情况!

2013-06-07 | 发布:宿迁波仔博客 | 分类:服务器 | 评论:3

留言列表:

  • 11 发布于 2014-05-28 17:18:25  回复
  • 我认为一旦本体的自我在休息,睡眠,饮食上面不能够进入长期的一种放松的状态,就不可能正确的对待本体自己的那种服务人格,没有这个也就不能够正确 对待属于自己的内部营销售,这个是一个整体的行为方式,因此也就造就自己对于寻找赚钱和制富形成的正确的门道和态度缺乏正确的一个指引的方法,更不要说未来需要付出其他的一种形式的投入造成个体暂时的困难造成的纠结一定会让自己更加的费心费力的时候,自己一定需要保持更加正确的方式来面对属于正确做事情的能力的形成
  • 宿迁波仔博客 发布于 2013-10-15 20:22:07  回复
  • worker模式:使用多个子进程,每个子进程有多个线程。每个线程在某个确定的时间只能维持一个连接。
  • Winter 发布于 2013-06-07 17:02:38  回复
  • 评论的时候有一点点小卡 和我的差不多 不知道是服务器还是程序问题 Apache 有用过,不过没怎么研究。

发表留言: