
我正在尋找優化我們目前內部託管的網頁伺服器的方法。我正在努力提供盡可能多的相關的資訊如下。如果您需要更多資訊來提供協助,請告訴我。
伺服器正在運行 1 個網站,這是一個基於 Zend Framework(ver1)構建的線上披薩訂購平台。根據上個月的流量統計,每天大約有 6,000 次頁面加載,主要集中在晚餐時間。在此期間,尖峰負載量約為 1500 次/小時。
我們最近從 2/2mbit aDSL 線路升級到 100/100mbit 光纖,但晚餐時間仍有效能問題。我們假設 2mbit 是問題所在。網站在低負載時期非常活躍。
硬體
CPU: Intel(R) Xeon(R) CPU 5160 @ 3.00GHz (3000.13-MHz K8-class CPU)
Mem: 328M Active, 4427M Inact, 891M Wired, 244M Cache, 623M Buf, 33M Free
Swap: 16G Total, 468K Used, 16G Free
(6GB physical, 16GB swap)
Filesystem Type Size Used Avail Capacity Mounted on
/dev/ad7s1a ufs 4.8G 768M 3.7G 17% /
devfs devfs 1.0K 1.0K 0B 100% /dev
/dev/ad7s1g ufs 176G 5.2G 157G 3% /home
/dev/ad7s1e ufs 4.8G 2.8M 4.5G 0% /tmp
/dev/ad7s1f ufs 19G 3.5G 14G 19% /usr
/dev/ad7s1d ufs 4.8G 550M 3.9G 12% /var
伺服器作業系統
FreeBSD 8.2-RELEASE
軟體
apache-2.2.17
php5-5.3.8
mysql-server-5.5
阿帕契足跡(範例取自#top)
31140 www 1 45 0 377M 41588K lockf 2 0:00 0.00% httpd
31122 www 1 44 0 375M 35416K lockf 2 0:00 0.00% httpd
31109 www 1 44 0 375M 38188K lockf 2 0:00 0.00% httpd
31113 www 1 44 0 375M 35188K lockf 2 0:00 0.00% httpd
Apache正在使用prefork MPM,APC(替代PHP快取)。 SSL 模組已加載,但未使用(因為實際上不起作用,因此未使用)。有一個包含 MPM 模組設定的文件,但正如我所見,它未包含在 httpd.conf 檔案中,因此 include 行已被註解掉。因此我猜 prefork MPM 也在預設值下工作。
以下是我發現的一些其他 Apache conf 值 - 包含在 https.conf 中
Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5
UseCanonicalName Off
HostnameLookups Off
遇到效能問題時載入
註:API請求後端
至於我們的線上平台,它透過 API (GET/POST) 與我們的後端系統進行通訊。對於購物籃的報價(快取直到新增商品)、產品(快取)、產品價格(快取)。當看到網路上出現效能問題時,後端伺服器實際上顯示了真實的負載。因此,我更傾向於認為 API 請求需要永遠完成,從而導致客戶端在 Web 伺服器上滯留。所以我的問題是,上面給出的統計數據(流量/負載)以及軟體的當前配置。與網路連線和硬體的規格相比,這是伺服器壓力過大的跡象嗎?根據可用資源和 Apache 的實際佔用空間,我是否能夠增加 Web 伺服器上的最大客戶端數量?
答案1
網站效能是一個大主題。從我看來,問題很可能不是 Apache。
不過,有一些事情可以幫助您提高表現。
快取!我不知道你的 PHP 程式碼中緩存了多少。但由於您沒有使用 SSL 並且我猜您有很多只讀數據,請嘗試漆
使能夠mod_expires
分析您的網站/後端 API傑米特
答案2
不,以上並不是伺服器壓力過大的跡象。
雖然您可能會遇到網路 I/O 飽和(因為您沒有提供有關它的實際數據),但這種情況極不可能發生,因為高峰時段發生的實際請求很少。
您需要在 HTTP 後端執行一些測試,看看它是否以最大容量運行。如果是,那麼您需要解決這個問題。
為了將來的參考,您應該配置和使用伺服器狀態監控 apache 的處理程序,如下所示:http://httpd.apache.org/docs/2.2/mod/mod_status.html
答案3
Apache 效能可以透過 Worker MPM 和 Prefork 設定進行調整,更改 keepalive 和最大備用線程可以幫助提高效能並消耗更少的記憶體佔用,您可以從以下位置找到 Prefork 和 Worker 的最佳設定:這裡
答案4
您可能用完了進程(由MaxSpareServers
和定義StartServers
)。預設值僅為 10,因此如果您的回應時間較長,則可能不足以每 2 秒發出一個請求(1500 個/小時)。
開啟server-status
模組以監控正在使用的進程。確保設定存取規則,以便只能在內部存取。