我有 2 个 LAMP Web 服务器,它们经常用完交换空间(请参阅随附的顶部屏幕截图)。
Apache的设置如下:
<IfModule prefork.c> 启动服务器 64 MinSpareServers 64 MaxSpareServers 128 服务器限制 256 最大客户数 256 MaxRequestsPerChild 4096 </IfModule>
PHP 的资源限制是:
max_execution_time = 30 最大输入时间 = 30 memory_limit = 80M
我是这样的服务器管理新手(我是开发人员);我可以调整什么以防止交换?
你的交换空间用完了,因为你正在使用所有的 RAM,然后是一些。你有一个严重的问题需要立即纠正。
您有两个选择:忽略原因并添加更多 RAM,或者针对实际占用内存的问题。
如果它是您的服务器,添加 RAM 相当便宜且相当容易,但它是一个临时修复,如果它是 VPS 或租用服务器,它并不那么便宜。让我们尝试解决根本问题。这么多内存在吸什么?这里有一些提示:
.htaccess
文件,但您可以对其功能进行硬编码。就仅将交换项目恢复到真实 RAM 而言,您可以通过以下方式做到这一点:
但是,当您的可用内存少于交换中的内容时,请不要尝试。它会使你的服务器崩溃。
要快速更改,请执行以下操作:
将“MaxRequestsPerChild 4096”改为:700 会有所帮助。由于 mod_php 等原因,apache 进程的生存时间越长,它将消耗的驻留内存就越多。此外,启用 keepalive 并为其设置积极的超时设置:
这将允许每个客户端页面请求使用一个 apache 进程来处理它的所有请求,否则它将使用多个 apache 进程。这将减少在任何给定时间运行的 apache 进程的数量。
为了获得最佳内存和每秒请求数:
远离 mod_php 并改用 fastcgi 或其他应用服务器。当 php 页面由 fastcgi 提供服务时,Apache 进程消耗的内存量可以忽略不计。更不用说 fastcgi 可以保持与您的 dbase 服务器的持久连接。
如何将静态内容的服务转移到更适合的服务器?