Sum*_*pta 3 server apache2 ram
我有一个运行 12.0.4 ubuntu 的 1GB VPS 服务器。一切正常,大部分时间我的 RAM 使用量显示大约 700 MB。然而,每周左右的随机时间服务器会出现内存不足并崩溃。它恢复并启动除 Mysql 之外的所有服务。
我发现我没有交换内存,所以我创建了 256MB 的交换文件并配置了它。它工作正常,但这次在 2 周后仍然崩溃。
我不是专家,因为你已经知道了。所以,我需要一些指导,说明为什么在正常操作中我的服务器占用了如此多的内存。我的意思是我在不同的时间观察它,它总是在 700-800MB 内存和负载稳定。没有在晚上运行的 cron 之类的。我有几个wordpress blog,但它们有稳定的负载并且从未看到任何“批量”负载。
我确实有 Vesta 控制面板,而且我知道的所有报告都是正常的。但是我注意到的一件事是 Apache 总是显示 1900MB 的内存消耗,而我的系统总共有较低的内存。我已经安装了 nginx 反向网络服务器[不知道vesta为我做的这意味着什么]。其他一切都很好,只是 apache 一直在 1900MB。似乎当这种使用量增加时,它会使服务器崩溃。
那么,有没有办法减少 apache 的使用?我还应该采取什么措施来使我的服务器在当前负载下保持稳定。
编辑:
根据这里的建议是我的 MPM 配置
<IfModule mpm_prefork_module>
StartServers 8
MinSpareServers 5
MaxSpareServers 20
ServerLimit 256
MaxClients 200
MaxRequestsPerChild 4000
</IfModule>
Run Code Online (Sandbox Code Playgroud)
这是我的 apache2ctl -l
Compiled in modules:
core.c
mod_log_config.c
mod_logio.c
prefork.c
http_core.c
mod_so.c
Run Code Online (Sandbox Code Playgroud)
虽然我之前提到过,但我在服务器上运行基于 Wordpress (PHP) 的博客,还有Redmine(Ruby on Rail) 以及使用 Nginx 和 apache 以与其他网站相同的方式运行。不,我不使用python。
使用配置为 256 的Apache prefork MPMServerLimit,您已将其配置为最大内存使用量约为 256 个进程,在典型的 PHP5 Apache 模块中每个进程大约占用 15-30 MB 内存。计算一下,您就会知道它会在具有大量客户端的小型服务器上爆炸。
相反,请使用更严格的限制对其进行配置。例如
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
ServerLimit 25
MaxClients 20
MaxRequestsPerChild 4000
</IfModule>
Run Code Online (Sandbox Code Playgroud)
重新启动 Apache 以使用新的 MPM 配置。
这将使 Apache 以 5 个进程开始,确保它有 5 个进程可供新传入客户端免费使用,仅在 10 个以上未使用的进程和 25 个硬性限制时关闭进程。根据您的需要进行调整。
或者,查看使用PHP-FPM而不是 PHP 作为 Apache 模块的选项。这效率更高,也是 Ubuntu 14.04 的默认配置。请注意,您将拥有一个单独的 PHP 进程池,届时您将不会使用 Apache prefork MPM(以及为什么它更有效的确切原因)。
只需阅读常规的 Ubuntu/Apache/PHP-FPM 文档如何配置所有这些。
| 归档时间: |
|
| 查看次数: |
8801 次 |
| 最近记录: |