答案1
由于您使用了全部 RAM 甚至更多,因此您的交换空间即将用尽。您有一个严重的问题需要立即纠正。
您有两种选择:忽略原因并添加更多 RAM,或者针对实际占用内存的问题。
如果是您自己的服务器,添加 RAM 相当便宜且相当容易,但这只是临时解决办法,如果是 VPS 或租用的服务器,则不是那么便宜。让我们尝试解决根本问题。是什么占用了这么多内存?以下是一些提示:
- 在 MySQL 中关闭 InnoDB(除非你需要它)
- 使用以下方法击败 Apache(和 MySQL)配置棒 +5
- 考虑使用较小的 httpd,如 cherokee、lighttpd 或 nginx(它们非常快,几乎不占用 RAM)。主要缺点是您不能使用
.htaccess
文件,但可以对其功能进行硬编码。 - 您是否正在使用 PHP 的 OP 代码缓存?请尝试将其关闭或切换到其他更高效的缓存。
就将交换项放回到实际 RAM 中而言,您可以通过以下方式进行:
swapoff -a && swapon -a
但是,当您的可用内存少于交换空间时,请不要尝试。这会导致服务器崩溃。
答案2
要快速更改,请执行以下操作:
将“MaxRequestsPerChild 4096”改为:700 会有所帮助。Apache 进程存活的时间越长,由于 mod_php 等原因,它消耗的驻留内存就越多。此外,启用 keepalive 并为其设置积极的超时设置:
KeepAlive On
MaxKeepAliveRequests 200
KeepAliveTimeout 5
这将允许每个客户端页面请求使用一个 Apache 进程来处理所有请求,否则将使用多个 Apache 进程。这将减少在任何给定时间运行的 Apache 进程数量。
为了获得最佳内存和每秒请求数:
放弃 mod_php,改用 fastcgi 或其他应用服务器。当 php 页面由 fastcgi 提供时,Apache 进程消耗的内存量微不足道。更不用说 fastcgi 可以保持与您的数据库服务器的持久连接等。
答案3
如何将静态内容转移到更适合的服务器?