Apache-2.2
如何使用 netstat 和 httpd.conf 加速伺服器?
我正在使用 netstat 命令來幫助正確優化我的 httpd.conf。
結果如下:
netstat -an | grep -c :80 579 netstat -anp |grep 'tcp\|udp' | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n 134 207.x.xx.134 //This was the highest result. Also this is my servers IP address
我知道我自己的 IP 地址返回 134 個 httpd 連接。我瀏覽了整個網站的腳本並刪除了所有以“http://”開頭的 css、js、php 連結——但我仍然獲得瞭如此多的連接!
我也在論壇上找到了這個命令,但不知道它顯示的是什麼:
ps auxww | grep httpd | wc -l 37
這是我的 httpd.conf:
Timeout 30 TraceEnable Off ServerSignature Off ServerTokens ProductOnly FileETag None StartServers 2 <IfModule prefork.c> MinSpareServers 2 MaxSpareServers 4 </IfModule> ServerLimit 250 MaxClients 800 MaxRequestsPerChild 50 KeepAlive On KeepAliveTimeout 1 MaxKeepAliveRequests 10
我可以改變什麼來最大化我的混合伺服器?(執行 Intel(R) Xeon(R) CPU E5620 @ 2.40GHz - 2GB Ram - MYSQL 重)。
謝謝。
一些評論,但請注意,鑑於要進行的資訊很少,其中大部分是有根據的猜測工作。如果它們不適合您,請隨意嘗試並忽略它們:
MaxRequestsPerChild
非常低。除非您對此值有特定原因,否則將其設置為相當高的值(1000、10000 等)或 0 以完全禁用它。- 1 的A
KeepAliveTimeout
是合理的,儘管根據您的應用程序稍微高一點 (2-5) 或禁用 KeepAlive 可能會更好。MaxClients
800 和250對於ServerLimit
2GB 伺服器來說太高了,更不用說執行 RAM 飢渴的 MySQL 了。例如,如果您希望將大約 1GB 的空間用於 Apache,則這些設置的更合理的值是 40-80。確切的值取決於每個 Apache 實例佔用多少記憶體。這些值非常高的危險在於,在高負載期間,機器將開始使用交換記憶體,這會將伺服器的性能降低到接近 0。- 該
ps auxww | grep httpd | wc -l
行僅計算正在執行的 Apache 子程序的數量(在本例中為 37 個)。mod_status擴展是一個更強大/有用的工具,可以確定有多少子程序正在執行以及它們在做什麼。- 我猜由於 MySQL 連接,您有 134 個來自您自己 IP 的連接,儘管取決於您執行的內容,可能還有其他來源。刪除其中帶有“http”的連結沒有意義,也不應該影響這個數字(除非您為此內容設置了一些特定的 Apache 代理)。
- 使用時,
netstat
您可能希望包含一個grep ESTABLISHED
僅列出目前建立的連接的管道,否則您會包含大量舊的 TIME_WAIT 連接。例如,在我的一台伺服器上,目前列出了 1300 個連接,其中實際上只有 3 個目前處於活動狀態。
netstat -anp |grep 'tcp\|udp' | grep ESTABLISHED | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n