我正在製作一個帶有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?也可以幫助。 –