我有一個在 Centos 7 上使用 httpd 運行的網站。
我有 8 個 CPU 和 32 GB 記憶體。
當我們網站上同時有超過500-600個使用者時,伺服器回應會越來越高。即便如此,CPU 負載約為 20-25%,且 RAM 也未使用。
我們可以配置什麼來提高效能或我缺少什麼?我們的頁面是 100% 快取的,我們不執行資料庫查詢或類似的東西。
httpd.conf
HostnameLookups Off
KeepAlive On
MaxKeepAliveRequests 1500
KeepAliveTimeout 5
<IfModule prefork.c>
StartServers 30
MinSpareServers 30
MaxSpareServers 50
ServerLimit 512
MaxClients 512
MaxRequestsPerChild 10000
</IfModule>
頂部:
%Cpu(s): 1.9 us, 2.6 sy, 0.0 ni, 95.5 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 32779548 total, 3268520 free, 12679060 used, 16831968 buff/cache
答案1
Apache 非常有效率。雖然從技術上講應該符合我的答案,但幾乎可以肯定是其他東西讓你陷入困境,而不是伺服器本身......可能是你正在運行的 CGI 或完全不同的東西。
您可能希望首先運行top
以查看哪些程式實際消耗了資源,然後從那裡獲取資源,也許在發布您所看到的內容時提出更多問題。
我能想到的唯一可能讓 Apache 真正陷入停滯的例子是:
如果你以某種方式讓它遞歸 - 你知道 - 從一個 URL 重定向到同一個 URL,然後一次又一次...
如果您在配置中使用無法解析的網域名稱。也許它們拼寫錯誤或過期,或者您的 DNS 混亂。輕微失誤是可以的,但某些配置可能會在每次命中時嘗試多次失敗的 dns 查找。
看起來您的 CPU 仍然相當空閒,因此它可能正在等待某些 DNS 或系統問題或其他問題。
「kdump」確實可以深入了解到底發生了什麼,但首先要查看「top」(或ps -axww)的其餘部分,以了解哪些程式實際上正在耗盡您的系統資源,而不僅僅是假設它是apache,因為它可能是也可能不是 apache 本身,這就是問題所在。