Apache-2.4
PHP 腳本在 Apache 上突然載入很慢
我正在測試為什麼有時我的 PHP 腳本需要很長時間才能通過使用 mpm_event 的 PHP-FPM 7.4 在我的 Apache 2.4 Ubuntu 伺服器上傳入(> 30 秒)。伺服器在過去幾個月中正常工作,幾天前開始發生這種情況,我沒有改變任何東西。我重新啟動了,它沒有幫助。
我做了一個簡單的
test.php
. 有時它會正常載入(<100ms),但有時需要 1 分鐘才能載入:<?php echo "test\n"; ?>
- 伺服器的 CPU、RAM 和 IO 都正常(用 勾選
htop
)。- 靜態 HTML 文件的載入沒有任何延遲。
- 通過 SSH 控制台在本地執行腳本非常快。
- Apache 錯誤日誌沒有顯示任何異常。
- 我通過檢查來自同一 /16 子網的連接 IP 的數量來檢查是否存在某些 DDOS 攻擊,並且沒有發現任何奇怪的東西(例如 >100 個連接)。
我怎樣才能進一步調試它以了解為什麼會發生這種情況?
一些可能有幫助的調試輸出:
sudo service php7.4-fpm status
我想我已經找到了解決方案,但是如果您有任何建議,請告訴我或發布另一個答案。
我檢查
/var/log/php7.4-fpm.log
並看到了很多這樣的條目:$$ 30-Sep-2021 03:36:46 $$警告:$$ pool www $$伺服器達到 pm.max_children 設置 (5),考慮提高它
所以我把它提高
max_children
到 15,它似乎有幫助。
這種行為可能有幾個原因:
- 如果這台 Web 伺服器處理來自外部網路的請求,那麼隨著流量的增加,負載可能會增加,從而導致伺服器響應時間增加。
- 如果您的腳本使用對外部資源的呼叫,那麼在這種情況下,由於外部資源的響應速度較低,您的伺服器的響應時間可能會增加。
日誌消息:
[30-Sep-2021 03:36:46] WARNING: [pool www] server reached pm.max_children setting (5), consider raising it
只是增加負載的證明。
在這兩種情況下,您都應該通過分析對腳本的請求數量來確定負載的原因,如果有對外部資源的呼叫,請確保它們正常工作。