Web 服务器上的交换空间不足,该怎么办?

mma*_*tax 8 httpd swap httpd.conf apache-2.2

我有 2 个 LAMP Web 服务器,它们经常用完交换空间(请参阅附加的顶部屏幕截图)。

Apache的设置如下:

<IfModule prefork.c>
启动服务器 64
最小备用服务器 64
最大备用服务器 128
服务器限制 256
第 256 章
MaxRequestsPerChild 4096
</IfModule>

PHP 的资源限制是:

最大执行时间 = 30
最大输入时间 = 30
内存限制 = 80M

我是这样的服务器管理员的新手(我是一名开发人员);我可以调整什么来防止交换?

这是崩溃时其中一台服务器上的顶部屏幕截图: 截屏

Oli*_*Oli 8

您的交换空间用完了,因为您正在使用所有 RAM,然后又使用了一些。您有一个严重的问题需要立即纠正。

您有两种选择:忽略原因并仅添加更多 RAM,或针对实际占用您内存的问题。

如果是您的服务器,则添加 RAM 相当便宜且相当容易,但这是临时修复,如果是 VPS 或租用服务器,则不那么便宜。让我们尝试解决根本问题。这么大的内存有什么用?这里有一些提示:

  • 在 MySQL 中关闭 InnoDB(除非你需要它)
  • 配置棒击败 Apache(和 MySQL)+5
  • 考虑一个更小的 httpd,比如 cherokee、lighttpd 或 nginx(它们真的很快,而且几乎不吃内存)。主要缺点是您不能使用.htaccess文件,但可以对其功能进行硬编码。
  • 您是否在为 PHP 使用 OP 代码缓存?尝试将其关闭或切换到另一种更有效的方法。

就将交换项目恢复到真实 RAM 而言,您可以通过以下方式实现:

swapoff -a && swapon -a
Run Code Online (Sandbox Code Playgroud)

但是,当您的可用内存少于交换中的内容时,请不要尝试。它会使您的服务器崩溃。