我使用forever
包來運行我的Node.js腳本。 (不是網絡服務器)。然而,因爲它,我有內存泄漏,甚至停止所有流程後,我的記憶依然採取:永久節點(npm包)服務器上的內存泄漏
[email protected]:~# forever stopall
info: No forever processes running
[email protected]:~# forever list
info: No forever processes running
[email protected]:~# free -lm
total used free shared buffers cached
Mem: 11721 6900 4821 5 188 1242
Low: 11721 6900 4821
High: 0 0 0
-/+ buffers/cache: 5469 6252
Swap: 0 0 0
另外提一下,有一個從劇本沒有內存泄漏時,沒有永遠本地運行。我在Ubuntu服務器上運行它。如果我現在重新啓動服務器:
[email protected]:~# reboot
Broadcast message from [email protected]
(/dev/pts/0) at 3:19 ...
The system is going down for reboot NOW!
我的RAM將重獲自由:
[email protected]:~# free -lm
total used free shared buffers cached
Mem: 11721 1259 10462 5 64 288
Low: 11721 1259 10462
High: 0 0 0
-/+ buffers/cache: 905 10816
Swap: 0 0 0
我也想提一提的是,當我的腳本完成它是做什麼(和它最終不會)我有db.close
和process.exit
調用,以確保從我的腳本一側殺死所有東西。但是,即使在RAM被拿走之後。現在我知道永遠會在死亡後再次運行該腳本。所以我的問題是:
- 如何永遠告訴不要再次執行腳本,如果它完成?
- 我該如何正確地停下來,以便在我停止後不需要任何RAM?
我爲此永遠使用包的原因是因爲我的腳本需要很多時間來做它做的事情,而且我的SSH會話會結束,所以我會以普通方式運行節點腳本。
你可能喜歡使用'top'和'htop'命令來查看您的RAM和CPU的使用,然後你可以殺死進程 –
@ArifKhan但是我真的不希望手動終止進程。我正在尋找一種「永遠」包裹來殺死它不再使用的東西。 – Kunok