我有一个具有以下特点的服务器: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/ 文件夹中永久配置。
此外,我将我的容器更改为特权容器,但我不确定它是否真的需要,可能有一种方法可以为特权容器修复它,但我无法实现。