Apache-2.2
Web 伺服器上的交換空間用完,該怎麼辦?
我有 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 或租用伺服器,它並不那麼便宜。讓我們嘗試解決根本問題。這麼多記憶體在吸什麼?這裡有一些提示:
- 在 MySQL 中關閉 InnoDB(除非你需要它)
- 使用配置棒 +5擊敗 Apache(和 MySQL)
- 考慮一個較小的 httpd,如 cherokee、lighttpd 或 nginx(它們非常快並且幾乎不吃 RAM)。主要缺點是您不能使用
.htaccess
文件,但您可以對其功能進行硬編碼。- 你在使用 PHP 的 OP-code 記憶體嗎?嘗試將其關閉或切換到另一個更有效的。
就僅將交換項目恢復到真實 RAM 而言,您可以通過以下方式做到這一點:
swapoff -a && swapon -a
但是,當您的可用記憶體少於交換中的內容時,請不要嘗試。它會使你的伺服器崩潰。