在我的一个项目中,我注意到随着连接的客户端数量增加,服务器的CPU使用率急剧上升。
为什么
我将问题缩小到10个客户端:大多数情况下为0%,偶尔会突然上升到7%。
15个客户端:大多数情况下为0%,偶尔会突然上升到10%。
25个客户端:大多数情况下为10%,偶尔会突然上升到60%。
50个客户端:大多数情况下为50%,偶尔会突然上升到60%,由于游戏服务器,CPU总体上达到100%。(注:CPU上有8个逻辑核心)
Thread.Yield
这一行上:https://github.com/vercas/vProto/blob/master/vProto/Base%20Client/Package%20Sending.cs#L121
一旦我注释掉这一行,即使有100个客户端,CPU使用率也会始终保持在0%!为什么
Thread.Yield
会这样做?
Thread.Sleep(1)
是否也会出现类似的峰值?如果没有,那么吞吐量呢? - user2864740Thread.Sleep(1)
。有1200个客户端,有时只到1%。我正在通过朋友的帮助进行基准测试。到目前为止,结果非常令人满意。对于我来说,ping值约为70。这比我在游戏服务器上得到的还要少(在同一台机器上)。 - Vercas