以前一直因为很多module需要重写 稳定性原因而拒绝使用于apache2这个非production版本.但最近尝试在流量非常大的站点上用mpm=worker的方式测试了以下.得到的结果相当令人惊叹.worker方式可以说是未来的发展方向,但现在apache group内部和php都没有对其稳定性作出保障.偶只好亲身体验了.
以前我一直主导要用1.3系列的稳定版本,但派生进程的方式的内存与资源消耗实在不敢令人恭维.相同的机器和相同的负载量,据我初步观察apache 1.3要比2多用上百M的内存,而且因为进程淤积,会带来其他各种各样的问题(如mysql缓存空间不够而使用SWAP导致的速度变慢,进程过多导致系统资源耗尽等).
接下来的工作就是观察这个站点的稳定性了.欢迎大家一起来做这个测试.
如果你的站点超过2000人在线,现在我非常推荐你用apache2,因为太慢也是不稳定,2.0版本可以明显的改善资源消耗情况.我使用的编译配置(bsd下稍微改一下即可)为
apache:
复制内容到剪贴板
代码:
CHOST="i686-pc-linux-gnu" \
CFLAGS="-march=i686 -O3 -pipe -fomit-frame-pointer" \
CXXFLAGS="-march=i686 -O3 -pipe -fomit-frame-pointer" \
./configure --prefix=/usr/local/apache2 --enable-so \
--with-mpm=worker \php:
复制内容到剪贴板
代码:
CHOST="i686-pc-linux-gnu" \
CFLAGS="-march=i686 -O3 -pipe -fomit-frame-pointer" \
CXXFLAGS="-march=i686 -O3 -pipe -fomit-frame-pointer" \
./configure \
--prefix=/usr/local/php \
--with-apxs2=/usr/local/apache2/bin/apxs \
--with-config-file-path=/etc \
--with-zlib \
--with-mysql \
--with-xml \
--disable-debug \
--enable-inline-optimization -q \
--enable-thread-safety \httpd.conf中的worker配置(最大800连接数)
复制内容到剪贴板
代码:
<IfModule worker.c>
StartServers 2
ServerLimit 80
MaxClients 800
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 10
MaxRequestsPerChild 0
</IfModule>注意用worker方式编译~如果用2.0还用perfork方式我觉得和1.3相比意义不大