我正在制作一个带有websockets和节点服务器的在线浏览器游戏,如果我有大约20-30个玩家,CPU通常为2%左右,RAM为10-15%。我只是使用廉价的数字海洋液滴来承载它。节点服务器随机尖峰到100%,然后崩溃。如何诊断?
但是,似乎每20-30分钟,服务器CPU使用率将在10秒内达到100%,然后最终崩溃。直到那一刻,CPU通常徘徊在2%左右,游戏运行非常顺利。
我不知道什么触发了我的生活,因为日志中没有错误,游戏中没有任何东西可以导致它。只是似乎是一个随机事件,导致服务器失效。
也有一些较小的尖峰,以及不会使服务器停机,但很快就会自行解决。以下是图像:
我不认为我在任何地方阻塞事件循环,我没有,似乎是长时间运行的任何执行路径。往返于服务器的数据包通常每个用户每秒两个,所以根本没有太多的带宽。而且服务器主要只是一个中继,除了验证之外几乎没有数据包处理,所以我不确定哪个代码路径会如此密集。
我该如何处理这个问题并找出从哪里开始调查造成这些尖峰的原因?我想象一下我忘记了一些代码路径,这在负载下令人惊讶地很慢,或者我错过了可以解决它的节点标志,但我不知道。
你检查了这个http://techblog.netflix.com/2014/11/nodejs-in-flames.html?或者这个http://stackoverflow.com/questions/13375735/node-js-cpu-100/13376256#13376256?你能够通过顶层或类似的东西确认负载来自节点进程吗? –
@ mh-cbon:顶部证实它全部来自节点应用程序 –
你有没有考虑去看看newrelic?也可以帮助。 –