2016-04-03 51 views
1

爲什麼我的node.js服務器進程被克隆?自從我提出要求以來,我沒有提出任何要求。我使用永久節點模塊。它可能是相關的嗎?爲什麼我的node.js服務器進程被克隆?

enter image description here

+0

它繼續這樣做的時間越長,它運行? 還是停在一定數量的線程/「克隆」? – user2267175

回答

1

你看到什麼線程在同一個節點處理。 v8(用於優化函數,收集垃圾等)和libuv/node(用於在大多數平臺上執行文件系統操作,DNS查找,zlib等)使用額外的線程,因此這些就是您所看到的。

截止撰寫本文時,v8最多使用4個線程(儘管an option to configure this previously hardcoded value在節點v5.10.0 +中可用)。此外,默認情況下,libuv創建4個線程的線程池,但可通過設置UV_THREADPOOL_SIZE環境變量來更改此數字。調整這些值時應小心,因爲如果設置得太低或設置得太高,會對性能產生負面影響。

在htop的設置菜單中,您可以對其進行配置(在顯示設置下)以顯示進程樹並使線程具有不同的顏色。這些更改將更容易看出線程和進程之間的差異。

+0

這是什麼意思?爲什麼我需要更多的線程?當我啓動服務器時,我只有2個線程,但隨着時間的推移它們被克隆,內存使用量增加。我不希望內存使用情況像這樣增加。 – David

+0

我已更新我的答案以包含更多詳細信息。沒有增加的內存使用量,因爲它們*不是單獨的進程*。減少*線程*本身的內存使用量的唯一方法是減少OS棧大小和其他此類資源限制。 – mscdex