阻止 Apache 生成 100 個程序
語境:
我有一個影片遊戲客戶端,它從伺服器請求一個 php 頁面來處理使用者登錄。這發生在一個循環中(很糟糕),因此每個客戶端都會發出許多請求。我打算解決這個問題,但這不是問題的重點。
在我的伺服器之前是 Dreamhost VPS。該伺服器能夠很好地處理所有遊戲客戶端,只產生一個 Apache 程序來處理登錄。
當我建立一個新網站時,我剛剛搬到了數字海洋伺服器,而我所支付的價格,dreamhost 伺服器總是很慢。
新的數字海洋伺服器現在不處理遊戲客戶端登錄。它為每個請求生成一個新的 Apache 程序,這意味著啟動遊戲的單個使用者將使伺服器癱瘓,在處理登錄請求之前生成數百個 Apache 程序。
問題:
我想知道我是否可以進行 Apache 配置更改,以限制從遊戲客戶端請求產生的程序。我正在修補遊戲,但我不能確定每個使用者都會更新。我讓自己陷入困境。如果更改有助於對抗 DDoS 攻擊,則可獲得獎勵積分!
伺服器正在執行 Ubuntu,使用 Digital Oceans 的“Wordpress”圖像。它有 1 GB 記憶體,我設置了一個 4 GB 交換文件以防止站點崩潰。一個慢站點比一個死站點好!我嘗試在 Apache 級別啟用記憶體,但我不知道我在做什麼,我所做的任何事情都沒有產生任何影響。
在您修補遊戲之前暫時解決此問題的一種方法是使用 Apache 的 mod_qos 模組來限制來自給定 IP 的最大連接數。
您可以使用該
QS_SrvMaxConnPerIP
指令來完成此操作(有關文件,請參見http://opensource.adnovum.ch/mod_qos/)。一旦伺服器上總共有至少 75 個連接,將每個 IP 的連接限制為 20 的範例如下:
<IfModule mod_qos.c> QS_SrvMaxConnPerIP 20 75 </IfModule>
取決於你的 apache 是用哪個模組編譯的
<IfModule prefork.c> MaxConnectionsPerChild 40 MaxRequestWrokers 10 MaxSpareServers 13 MinSpareServer 4 StartServers 4 ServerLimit 13 MaxClients 10
<IfModule mpm_prefork_module> MaxConnectionsPerChild 40 MaxRequestWrokers 10 MaxSpareServers 13 MinSpareServer 4 StartServers 4 ServerLimit 13 MaxClients 10 </IfModule>
可以通過 httpd -V 查看模組