Linux Nginx + php-fpm + cron + mysqld = 總是記憶體不足
我不明白。我有一個帶有 Nginx 和 php-fpm 和 MySQL 的 VPS。應該很輕。沒有阿帕奇,對吧?當我重新啟動時,它非常輕巧。~ 50/481 MB 記憶體使用量。非常可接受的國際海事組織。
幾天后,有 ~ 20 個 mysqld 程序正在執行, ~ 7 個 php-fpm 程序和 ~ 8 個 getty 程序和 1024 MB 的 3/4 交換已滿,伺服器記憶體不足!
我不是專業人士,但我很確定這是不對的……
我認為crons與它有關。我安排了 3 個工作:
- 每分鐘一個簡單的(閱讀新郵件的 smtp)
- 每天晚上一大篇(閱讀大約 30 個部落格的 RSS)
- 每天早上一個簡單的(2個小數據庫的mysqldump)
我不確定我為什麼這麼認為=) 可能是因為簡單的工作(SMTP,每分鐘)總是在 htop 列表中。(但總是使用 0% cpu、0% mem 和 0:00:00 時間……)
20個mysqld的也很奇怪,不過好像不需要很多記憶體。
php-fpm 顯然確實消耗了大量記憶體。在寫這篇文章的 10 分鐘內,記憶體已從 66 MB 變為 120 MB!前 6 個記憶體消耗程序是
php-fpm: pool www
. 當我重新啟動時/etc/init.d/php5-fpm
,記憶體下降到 ~ 70 MB。php-fpm 如何需要 400+ MB 的記憶體?那是怎麼回事?在過去的 10 分鐘內,Swap 相當穩定在 ~ 98 MB。
有誰知道可能會發生什麼?(我知道整個伺服器上的資訊很少。)如果您願意,我可以添加詳細資訊。
我什至沒有執行任何體面大小的網站!
更多資訊:
螢幕
htop --sort-key PERCENT_MEM
:Pastebin 與
ps xv
,cat /proc/meminfo
和top
: http://pastebin.com/PfXeupMN
應該歸咎於伺服器配置(非常非常慢的 i/o)中有問題。vps 提供商進行了硬體更新(我認為),這一切都已修復。記憶體使用率可能仍然很高(我不知道),但總體而言伺服器再次超級快。
抱歉,我之前沒有提到這一點。