在AWS 1.7GB服務器中一次接收到2000個請求。應用程序試圖處理這個問題,但以內存耗盡錯誤結束。我對PHP腳本和MySQL數據庫進行了優化,直到我知道和收集的任何內容。LAMP服務器中的PHP請求平衡
因此,這裏是我決定的,是
我想處理在服務器200個請求,並拒絕第一次1800級的要求。下次200請求將被處理,1600被拒絕。這樣我就可以處理所有的請求。
問題:1如何做到這一點?
我計劃來實現這個像下面
要獲得Apache進程數,如果它是超越了120,然後我打算拒絕來自服務器的請求。
要監視基於我計劃拒絕請求的服務器RAM空閒內存。
建議所需:這是實現最好的選擇?
如果有其他建議也歡迎。
問題:2如何使用PHP獲得apache進程的計數?
問題:3如何使用PHP獲得可用的RAM內存大小?
注意:拒絕請求不是問題,我可以再回來。如果我拒絕來自服務器的請求,那麼沒有問題,並且服務器是正常的。一旦我處理了這2000個請求,那麼在我總是減少負載之後就沒有問題了。
對於如何拒絕請求,您有具體要求嗎?通過使用5XX HTTP狀態碼進行響應怎麼樣? – jdhildeb
我決定我在計劃部分下提到..你可以分享你的想法是很好的。如果不錯,如何實現這個 – Sundar
我的建議是:1.檢查,如果你啓用了Apache [ExpiresActive from mod_expires.c]; 2.使用php-cgi,如:php-fpm或hhvm(PHP的HipHop虛擬機)。它可以真正有所作爲。 3.除了處理部分請求之外,請使用緩存服務 - 例如:varnish,除非所有請求都需要不同的內容; 4.將靜態內容移動到cdn服務器; 5.使用AWS平衡服務器 - 種類豐富 - 我沒有真正的建議。只要一個一個地做,你會發現很快就有所不同。 – Zac