这个配置实例是我自己摸索出来的。 服务器的生产环境是 apache+mpm
worker+fastcgi。利用cpanel主机的/scripts/easyapache脚本可以很方便地安装必要的组件。但是默认安装好的配置并
不能很好的运用于生产环境,根据网站的负载不同,你可能需要手动修改一些关键的配置文件,这也正是我做的。 <IfModule prefork.c>
StartServers 5 MinSpareServers 5 MaxSpareServers 10 MaxClients 150 MaxRequestsPerChild 0 </IfModule> prefork模式可以提高apache的并发能力,对于大内存的服务器来说是apache和cpanel官方推荐的方法,实际我用了worker模式,它对内存的使用更加经济,删掉类似上面的prefork模式,以worker模式取而代之: <IfModule mpm_worker_module>
ServerLimit 16 ThreadLimit 64 StartServers 2 MaxClients 1024 MinSpareThreads 64 MaxSpareThreads 128 ThreadsPerChild 64 MaxRequestsPerChild 1300 ThreadStackSize 327680 TimeOut 60 </IfModule> 下一步是对fastcgi的配置。fastcgi是php的一种运行模式,它最大的优点就是大大提高了php脚本的执行效率,但它的配置也是最复杂 的,事实上,你应该根据网站的实际流量和服务器的现有资源,控制fastcgi的进程数,尤其要注意及时杀死空闲僵死的fastcgi进程,以收回内存。 cpanel服务器的配置文件是/etc/httpd/conf/php.conf,我的配置如下: # Fastcgi configuration for PHP5
LoadModule fcgid_module modules/mod_fcgid.so MaxRequestsPerProcess 30 ProcessLifeTime 1200 IdleTimeout 300 DefaultMinClassProcessCount 2 DefaultMaxClassProcessCount 6 IPCConnectTimeout 30 IPCCommTimeout 300 因为服务器的生产环境是用于虚拟主机托管,因此会产出许多(超过100不稀奇)个php(运行于fastcgi模式)的进程,以上的配置的优点是能 够较好的回收内存,对有较多数量网站,而大部分的流量并不高的生产环境是一种效率和稳定性之间的折中。即使做了上述的配置,实际内存的使用也往往接近 3GB。 因此,你可以另外通过cronjob的方法,定时杀死php进程,回收内存,比如每小时杀死一次: 0 * * * * ps aux | grep php | egrep -v grep | awk '{print $2}' | xargs kill -9
最后,是mysql的配置,数据库的配置可以是一件非常复杂的事情,不了解的人请不要照抄我的配置: [mysqld]
skip-networking log-slow-queries safe-show-database local-infile = 0 skip-locking skip-name-resolve
set-variable = key_buffer_size=256M |
|