技术开发 频道

关于Apache的性能优化

【IT168技术文档】
关于Apache服务器,我看了一些文档,有一些提高性能的想法。

1.重新编译Apache。

    Apache的默认配置不是为了最大化性能而设置的,而是考虑到向后兼容性和平台兼容性的问题。因此很多2.x的新特性没有能够体现出来。在编译的时候,需要加入一些参数,增加的这些模块应该会大幅的提高性能。

    既然重新编译,建议使用最新的2.2版,里面有些部分对性能有不少加强。

2.编译的时候建议加入下面的参数
./buildconf ./configure \ --with-mpm=worker \ --enable-cache --enable-disk-cache --enable-mem-cache --enable-file-cache \ --enable-nonportable-atomics \ --enable-mods-shared=most
2.1 Multi-Processing Modules (MPM) 
--with-mpm={prefork,worker}
    这个是设置Apache的多任务处理的。prefork是指每个连接一个进程,也就是多进程并行处理;而worker是多线程并行处理。支持多线程处理,本来是Apache 2的一大改进,可是为了和以前的兼容,所以对于Unix默认的都是prefork,这个改进并没有体现出来。而这个设置只能在编译的时候进行优化,这也是为什么一定要重新编译一下apache的原因。

apache文档这么说:

    “·worker MPM 使用多进程,每个进程包含多线程的方式。每个线程一次处理一个连接。worker对于高流量的服务器通常是一个好的选择,因为它比prefork MPM占用更少的内存。
·prefork MPM 使用多进程,每个进程只包含1个线程的方式。每个进程一次处理一个连接。在许多系统上,prefork具有与worker相媲美的速度,但是它会占用更多的内存。prefork的无线程设计在某些情况下将比worker更有优势:它可以使用那些没有处理好线程安全的第三方模块,并且对于那些线程调试困难的平台而言,它也更容易调试一些。”

    这么说确实没有什么必要用prefork,刚才看了一下FC5,也是用的prefork模式。所以重新编译apache是肯定的了。我还不知道哪个Linux发布版本的apache默认是worker的呢。

    为了设置MPM为worker需要设置:
--with-mpm=worker
0
相关文章