以前一直因为很多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相比意义不大 |
|