我無法使我的網頁伺服器重新上線。伺服器一直在損壞,我被迫重新啟動它以重新啟動。
我在共享主機上,因此更難找到罪魁禍首。
我怎麼能找到哪個特定頁面(或至少哪個虛擬主機)的 CPU 使用率變得瘋狂?
我使用的是 CentOS,具有相當標準的 Apahce+MySQL+PHP。
謝謝!
答案1
也許最好的主意是安裝 apachetop。https://code.google.com/p/apachetop/,你也可以使用 Apache 的伺服器狀態,但 apachetop 會讓它更有可讀性。
答案2
頁面實際上與這個問題無關。
以下命令應輸出 httpd 的 pid 列表,按 CPU 百分比排序,並包含 httpd 工作程序所在的目前工作目錄。
當然,這假設 httpd 是罪魁禍首。
IFS=" "; ps -A ho pcpu,comm,pid | grep httpd | sort -k1n \
while read pcpu comm pid; do \
echo -n "${pcpu"}: "l pwdx "${pid}";
done
我得到的輸出類似;
0.0: 1850: /
0.0: 1852: /
0.0: 1854: /
0.0: 1853: /
0.0: 1855: /
0.0: 1856: /
0.0: 1857: /
0.0: 1858: /
這是可行的,因為 apache 在虛擬主機內部執行任何工作之前會將目錄變更為虛擬主機文件根目錄。因此,無論哪個虛擬主機擁有該文件根目錄,都是罪魁禍首。
如果您有多個虛擬主機使用相同的文檔根目錄,您將需要調查這兩個虛擬主機以了解它們的用途。
由於我沒有 apache 工作人員佔用 CPU 時間,所有這些工作人員都是 0.0,因此不會發生任何排序。
如果問題實際上是 SQL 查詢,則不要指望它會顯示任何內容。