Linux + Apache + mpm_worker + mod_fcgid + php5

Linux + Apache + mpm_worker + mod_fcgid + php5

我正在使用基于 VPS 的托管服务来托管网站,发现默认的 apache2 + prefork + mod_php 占用的资源太多,我的 VPS 无法实现可接受的并发性。(消耗 RAM)

所以我最近切换到了 apache2 + mpm_worker + mod_fcgid + php5

以下是我对相关模块的配置。

<IfModule mpm_worker_module>
    StartServers       4
    MinSpareThreads    10
    MaxSpareThreads    200
        ThreadLimit          200
        ThreadsPerChild      25
    MaxClients        200
        MaxRequestsPerChild   1000
</IfModule>

<IfModule mod_fcgid.c>
    AddHandler fcgid-script .fcgi .php
    # Where to look for the php.ini file?
    DefaultInitEnv PHPRC        "/etc/php5/apache2"
    # Maximum requests a process handles before it is terminated
    MaxRequestsPerProcess       1000
    # Maximum number of PHP processes
    MaxProcessCount             10
    # Number of seconds of idle time before a process is terminated
    IPCCommTimeout              240
    IdleTimeout                 240
    #Or use this if you use the file above
    FCGIWrapper /usr/bin/php5-cgi-wrapper .php
</IfModule>

问题是,在对我的网站进行负载测试时,我无法使服务器 CPU 饱和。还有大量的网络带宽可用。内存利用率低于我的 1GB VPS 的 20%。但加载时间仍在增加。

我不知道我做错了什么。

答案1

我正在慢慢地将并发请求数/连接数从 50 增加到 200。这就是服务器上的负载。

我使用 iotop 来测量磁盘 io。没有显示出任何重要的内容。峰值速度为 3-5k/秒。

好吧,如果是磁盘 IO,那么我就没有什么可玩的空间,因为它是一个托管的 VPS。

我刚刚尝试加载从 php 输出缓存的纯 html 文件,以排除 php 前端的任何延迟。瓶颈不是 php。图表是一样的。

应该是并发问题!

相关内容