Tcp
使用 proxmox 容器上的 NetData 監控 softirqs RCU 上的峰值
我有一個具有以下特點的伺服器:https ://www.soyoustart.com/it/offerte/1801sysgame05.xml
處理器 Intel i7-4790K
記憶體 32GB DDR3 1333MHz
包括流量無限的Anti-DDoS
磁碟 1x240GB SSD
頻寬 250 Mbps
我已經安裝了 Proxmox Linux 發行版,它執行基於 Ubuntu 伺服器的容器來處理用 C++ 編寫的實時 TCP 遊戲伺服器,目前該伺服器擁有大約 1000 名線上使用者,我們將很快將目前人口翻一番.
問題是,一旦線上使用者數量達到約 850,我們就會遇到一個奇怪的性能“瓶頸”。一旦它回到約 800 或更少,瓶頸就會消失。實際上發生的情況是玩家必須等待大約 30 秒才能連接到伺服器,而已經連接的玩家沒有遇到任何問題(沒有延遲、沒有凍結等)。似乎網路擁塞、上限或類似情況會拒絕與同一程序的進一步連接並對我們的 CPU 造成壓力(從下面的螢幕截圖中可以看到)
在這裡,我從我們的 NetData 中收集了一些圖表,其中我注意到了相同的“模式”。我猜softirqs RCU特別有意義,但我不知道它到底是什麼意思。
RCU 軟中斷:
cpu使用/壓力:
處理器頻率
處理器溫度
我不認為問題出在我們的 CPU 本身,但如上所述,似乎與程序限製或類似問題有關。
你知道發生了什麼嗎?
更新:
另一個相關圖表
我通過增加 ulimit 解決了這個問題
在我的具體情況下,問題是必須增加 ulimit(硬和軟)並在主機和 lxc 容器的 /etc/ 文件夾中永久配置。
此外,我將我的容器更改為特權容器,但我不確定它是否真的需要,可能有一種方法可以為特權容器修復它,但我無法實現。