阜外心内科专家朱俊:Apache fastcgi mysql服务器的配置实例

来源:百度文库 编辑:九乡新闻网 时间:2024/04/29 17:20:09

这个配置实例是我自己摸索出来的。

服务器的生产环境是 apache+mpmworker+fastcgi。利用cpanel主机的/scripts/easyapache脚本可以很方便地安装必要的组件。但是默认安装好的配置并不能很好的运用于生产环境,根据网站的负载不同,你可能需要手动修改一些关键的配置文件,这也正是我做的。

MPM模块的引进是apache2.0版本开始最重大的改进之一,MPM常见的模式是prefork和worker,很奇怪,在cpanel服务器的web控制端,默认配置prefork模式,因此,如果你要使用MPMworker,需要手动修改http.conf,一个典型的prefork配置是这样的:

 

StartServers 5

MinSpareServers 5

MaxSpareServers 10

MaxClients 150

MaxRequestsPerChild 0

prefork模式可以提高apache的并发能力,对于大内存的服务器来说是apache和cpanel官方推荐的方法,实际我用了worker模式,它对内存的使用更加经济,删掉类似上面的prefork模式,以worker模式取而代之:


ServerLimit 16
ThreadLimit 64
StartServers 2
MaxClients 1024
MinSpareThreads 64
MaxSpareThreads 128
ThreadsPerChild 64
MaxRequestsPerChild 1300
ThreadStackSize 327680
TimeOut 60

下一步是对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
set-variable = thread_concurrency=16
set-variable = max_connections=200
set-variable = table_cache=256
set-variable = max_delayed_threads=20
set-variable = max_tmp_tables=128
set-variable = query_cache_type=1
set-variable = query_cache_size=16M
set-variable = thread_cache_size=16