我們經營一家遊戲伺服器公司,基本上有大量客戶共享一台機器,並且只是在他們自己的由我們的 Web 控制面板管理的 Java 進程 (Minecraft) 實例上。在最近發布的幾個遊戲更新中,我們注意到客戶使用的許多第三方插件編寫得很差,並且我們經常看到某些伺服器的 CPU 大幅增加,直到我們手動終止該進程。
我們的遊戲面板會自動重新啟動進程,因此殺死它們並不是真正的問題。我們的問題是,一旦這些伺服器開始消耗 50% 以上的 CPU 使用率,就需要至少 5 分鐘的 RDP 進入計算機,找到它所屬的伺服器,關閉它並通知它們。
Server 2008 目前是否有任何解決方案可以限制 CPU 使用率或在最壞的情況下自動終止使用這麼多CPU 的進程?由於 Minecraft 本質上是一個單線程應用程序,因此我們使用 Affinity 進行了研究,儘管由於我們的軟體包的變化和使用情況的波動,這對我們來說效果不佳。限制進程可以使用的最大使用量的某些選項將是完美的,或者至少是殺死使用這麼多進程的進程的選項。
謝謝!
答案1
看來您想要類似這裡描述的內容:
http://technet.microsoft.com/en-us/library/ff384148%28v=ws.10%29.aspx
這是一個每用戶進程配額系統(技術上是每 SID),應該可以滿足您的需求。如果您有 10 個 Minecraft 進程並將每個進程限制為 9%,則您應該有 10% 的 CPU 可用於 RDP 等。
如果您遇到其他資源限制,您可能需要考慮單獨限制這些資源。
答案2
我建議只放棄每個實例的優先順序。這樣,您的遠端存取將比失控的任務具有更高的優先權。您可能還想研究更輕鬆的管理方案,例如 PowerShell 遠端。