2016-04-28 60 views
1

使用heapdump,我試圖採取節點的一些堆快照的NodeJS USR2信號使用堆轉儲

https://blog.risingstack.com/finding-a-memory-leak-in-node-js/

發送USR2到已要求堆轉儲應觸發堆轉儲保存節點進程殺死進程一個堆快照到工作目錄。

在我的本地服務器上(運行在Mac上),這很好。在AWS ubuntu服務器上,USR2殺死該進程。我也試過SIGUSR2。

有誰知道爲什麼「sudo kill -USR2」會殺死進程而不是觸發堆快照?

+0

您是否找到解決方案?我面臨同樣的問題。 – neebz

+0

對不起,我不認爲我做過 – wallacer

回答

0

這可能有兩個原因發生:

  • 在一些發行版殺碼USR2而在其他的SIGUSR2。您需要運行kill -l來檢查您的發行版支持哪一個。

  • require('heapdump')未在當前工作者中執行。所以,如果你是使用節點cluster模塊,那麼你需要需要堆轉儲當前工人即

如果(worker.isMaster){ /*主*的東西/ }其他{ 要求(「堆轉儲」 ) }