具有 512 保證 RAM 的 CentOS VPS 上的記憶體使用率異常高
我正在開發一個用 PHP 編寫的中型 Web 應用程序,該應用程序在具有 512mb ram 的 VPS 上執行。webapp還沒有正式上線,所以沒有太多流量,只有我和其他幾個人在做。
在 4-5 個其他小型靜態站點中,這台機器上還託管了另一個稍小的 webapp。
我們正在執行 Centos 5 32 位和 cPanel/WHM。
這是執行的結果
ps aux
,如您所見,它沒有使用 100% 的 RAM。但是,在 hypanel 概覽中,它始終顯示為使用 500MB 左右的記憶體,僅用於執行 apache、mysql 和最低記憶體佔用版本的郵件伺服器、ftp 伺服器等。-bash-3.2# ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.0 2156 664 ? Ss 12:08 0:00 init [3] root 1123 0.0 0.0 2260 548 ? S<s 12:08 0:00 /sbin/udevd -d root 1462 0.0 0.0 1812 568 ? Ss 12:08 0:00 syslogd -m 0 named 1496 0.0 0.0 3808 820 ? Ss 12:08 0:00 nsd named 1497 0.0 0.0 10672 756 ? S 12:08 0:00 nsd named 1499 0.0 0.0 3880 584 ? S 12:08 0:00 nsd root 1514 0.0 0.1 7240 1064 ? Ss 12:08 0:00 /usr/sbin/sshd root 1522 0.0 0.0 2832 832 ? Ss 12:08 0:00 xinetd -stayalive -pidfile /var/run/xinetd.pid root 1534 0.0 0.1 3712 1328 ? S 12:08 0:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql - mysql 1667 0.0 2.9 225680 30884 ? Sl 12:08 0:00 /usr/sbin/mysqld --basedir=/ --datadir=/var/lib/mysql - mailnull 1766 0.0 0.1 9352 1100 ? Ss 12:08 0:00 /usr/sbin/exim -bd -q60m root 1797 0.0 0.0 2156 708 ? Ss 12:08 0:00 /usr/sbin/dovecot root 1798 0.0 0.0 2632 1012 ? S 12:08 0:00 dovecot-auth root 1816 0.0 3.0 38580 32456 ? Ss 12:08 0:01 /usr/local/bin/spamd -d --allowed-ips=127.0.0.1 --pidfi root 1839 0.0 1.6 63200 17496 ? Ss 12:08 0:00 /usr/local/apache/bin/httpd -k start -DSSL root 1846 0.0 0.1 5416 1468 ? Ss 12:08 0:00 pure-ftpd (SERVER) root 1848 0.0 0.1 6212 1244 ? S 12:08 0:00 /usr/sbin/pure-authd -s /var/run/ftpd.sock -r /usr/sbin root 1856 0.0 0.1 4492 1112 ? Ss 12:08 0:00 crond root 1864 0.0 0.0 2356 428 ? Ss 12:08 0:00 /usr/sbin/atd dovecot 1927 0.0 0.1 5196 1952 ? S 12:08 0:00 pop3-login dovecot 1928 0.0 0.1 5196 1948 ? S 12:08 0:00 pop3-login dovecot 1929 0.0 0.1 5316 2012 ? S 12:08 0:00 imap-login dovecot 1930 0.0 0.2 5416 2228 ? S 12:08 0:00 imap-login root 1939 0.0 0.1 3936 1964 ? S 12:08 0:00 cPhulkd - processor root 1963 0.0 0.8 15876 8564 ? S 12:08 0:00 cpsrvd (SSL) - waiting for connections root 1966 0.0 0.7 15172 7748 ? S 12:08 0:00 cpdavd - accepting connections on 2077 and 2078 root 1990 0.0 0.2 5008 3136 ? S 12:08 0:00 queueprocd - wait to process a task root 2017 0.0 2.9 38580 31020 ? S 12:08 0:00 spamd child root 2018 0.0 0.5 8904 5636 ? S 12:08 0:00 /usr/bin/perl /usr/local/cpanel/bin/leechprotect nobody 2021 0.0 3.2 66512 33724 ? S 12:08 0:00 /usr/local/apache/bin/httpd -k start -DSSL nobody 2022 0.0 3.1 67812 33024 ? S 12:08 0:00 /usr/local/apache/bin/httpd -k start -DSSL nobody 2024 0.0 1.9 64364 20680 ? S 12:08 0:00 /usr/local/apache/bin/httpd -k start -DSSL root 2027 0.0 0.4 9000 4540 ? S 12:08 0:00 tailwatchd root 2032 0.0 0.1 4176 1836 ? SN 12:08 0:00 cpanellogd - sleeping for logs nobody 3096 0.0 1.9 64572 20264 ? S 12:09 0:00 /usr/local/apache/bin/httpd -k start -DSSL nobody 3097 0.0 2.8 66008 30136 ? S 12:09 0:00 /usr/local/apache/bin/httpd -k start -DSSL nobody 3098 0.0 2.8 65704 29752 ? S 12:09 0:00 /usr/local/apache/bin/httpd -k start -DSSL nobody 3099 0.0 3.1 67260 32816 ? S 12:09 0:00 /usr/local/apache/bin/httpd -k start -DSSL andrei 3448 0.0 0.1 3204 1632 ? S 12:50 0:00 imap nobody 3537 0.0 1.9 64308 20108 ? S 13:01 0:00 /usr/local/apache/bin/httpd -k start -DSSL nobody 3614 0.0 1.9 64576 20628 ? S 13:10 0:00 /usr/local/apache/bin/httpd -k start -DSSL nobody 3615 0.0 1.3 63200 14672 ? S 13:10 0:00 /usr/local/apache/bin/httpd -k start -DSSL root 3626 0.0 0.2 10232 2964 ? Rs 13:14 0:00 sshd: root@pts/0 root 3648 0.0 0.1 3844 1600 pts/0 Ss 13:14 0:00 -bash root 3826 0.0 0.0 2532 908 pts/0 R+ 13:21 0:00 ps aux
最近,在沒有對配置進行任何重大更改的情況下,記憶體使用量開始達到峰值並超過 512,導致虛擬伺服器殺死 apache,基本上在此過程中謀殺了我們的網站。
這是結果
free -m
:-bash-3.2# free -m total used free shared buffers cached Mem: 1024 381 642 0 0 0 -/+ buffers/cache: 381 642 Swap: 0 0 0
另一個通知:
當使用達到 400/512mb 的記憶體時,Apache 似乎被殺死了。這以前沒有發生過。這很奇怪。
您是否知道這是否正常並且應該獲取更多資源?我不這麼認為,因為網上還沒有太多的數據或流量。
編輯2:
[Sat Apr 07 18:04:21 2012] [notice] Graceful restart requested, doing restart [Sat Apr 07 18:04:22 2012] [notice] seg fault or similar nasty error detected in the parent process (after manual restart) [Sat Apr 07 18:28:51 2012] [notice] suEXEC mechanism enabled (wrapper: /usr/local/apache/bin/suexec) etc.
這是 Apache 崩潰之一的日誌。這令人費解。
free -m 表示應該有足夠的空閒 RAM。當一個程序因為可用的 RAM 太少而被殺死時,這被稱為“oom kill”m,其中“oom”代表o ut of m emory 。
當這種情況發生時,您甚至可以告訴 Linux 以什麼順序殺死哪些程序。
除此之外,MySQL 在我們的系統上保留了大量的 RAM,這是正常的。您可以通過編輯 my.cnf 文件並調整 MySQL 配置文件的各種變數來減小該值。
此外,您應該努力優化 Apache 以保持較低的 RAM 消耗。Apache 和 PHP 是否消耗大量 RAM 很大程度上取決於您的 PHP 應用程序。
此外,您應該創建一個 SWAP 文件,以在記憶體已滿時為您提供幫助。