我的服务器上有一个 Apache(512MB RAM)。问题是每个 prefork 进程(大约有 12 个)在等待时占用大约 3%-5% 的内存(我的意思是 Apache 启动的用于处理传入连接的 httpd2-prefork 进程),在工作时占用大约 8% 的内存。我们在那里有一个 Symfony 应用程序和几个 wordpress 博客。
这是正常的吗?我降低了 MaxClients 数量以保持服务器稳定,但这给我们带来了很多麻烦,因为同时有 3 个用户连接可能会导致服务器崩溃。
问候
答案1
这种内存使用率完全正常。我不明白的是,5-8% 的内存使用率究竟是如何给你带来问题的?
您可以禁用不需要的 Apache 模块和/或切换到一些更轻量的替代方案,例如lighttpd或者nginx,但是根据你的描述我认为没有必要。
编辑:评论澄清了这种情况。如果升级 RAM 不是一个选择,那么请考虑迁移到 lighttpd + FastCGI/fcgid。这样就可以更精确地控制内存使用量,因为后台只有 X 个 PHP 工作者,lighttpd 可以专注于处理 http 请求。目前不是 Apache 本身在为您消耗 RAM,而是 mod_php 和 PHP 脚本——Wordpress 等可能非常耗费内存。
答案2
Apache 是一个相当耗内存的应用程序,但是 512Mb RAM 应该可以支持 3 个以上的用户。
首先要检查的是,当 Apache 启动时,没有加载大量未使用的模块。
编辑 /etc/httpd/conf/httpd.conf 并找到已加载模块的大型列表 - 删除不需要的模块,然后重新启动 Apache 并注意它每个进程如何使用更少的内存。