针对中型网站调整 Apache

针对中型网站调整 Apache

我的 apache 配置有问题。目前,nginx 作为反向代理位于 apache 前端,提供静态资产,然后将 php 请求传递给 apache。Apache 正在使用 mod_php。我们确实有用户,但网站增长缓慢,所以我知道 Mysql 不是罪魁祸首。该网站不是数据库密集型网站,而是 Web 服务密集型网站。

该网站正在缓慢发展,本月我们将拥有约 430,000 个独立访客,并且可以同时容纳 80-230 人,但每秒的请求数实际上从未超过 8 个。

Apache 似乎占用了大量内存,大约一周后会导致服务器崩溃并需要重新启动。该服务器是一台 linode 8 核、8 GB ubuntu 12.04 机器。

这是当前配置我们现在使用 Prefork 模块:

Timeout 15
KeepAlive Off
MaxKeepAliveRequests 1000
KeepAliveTimeout 5
<IfModule mpm_prefork_module>
    StartServers          5
    MinSpareServers       5
    MaxSpareServers      10
    MaxClients          256
    MaxRequestsPerChild   500
</IfModule>
HostnameLookups Off

如果您需要更多信息,请告诉我。我们是否可以减少 prefork 模块的内存使用量并获得更好的性能?

答案1

关于您的容量规划:如何对网站进行负载测试和容量规划?

至于内存泄漏,如果子进程在 500 个请求后正常终止,Apache 就不应该泄漏内存。您的 PHP 代码(及其依赖的库)可能存在细微差别,导致子进程无法正常终止或消耗过多的内存。

尝试找到内存使用量或创建时间比其他进程大得多/更早的进程。lsof -pPID如果您幸运的话,可能会为您提供提示,但更有可能的是,您接下来会遇到一些无趣的调试。

(当然,这是假设 Apache 是罪魁祸首 —— 我理所当然地认为你已经以某种方式证明了这一点)

相关内容