Ubuntu

阻止 Apache 生成 100 個程序

  • March 22, 2016

語境:

我有一個影片遊戲客戶端,它從伺服器請求一個 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 查看模組

引用自:https://serverfault.com/questions/706642