當程式發生異常的記憶體用量,或甚至 memory leak 導致關閉,我們該如何觀察並找出問題呢?其實有個非常方便的方法,也不需要安裝任何額外的工具。首先打開終端機輸入 node --inspect index.js
來運行程式並監視記憶體。
接著到 chrome 網址列輸入 chrome://inspect/#devices,會出現以下畫面:
上圖紅框中會顯示正在執行的程式的路徑,請點選藍框框中的 inspect,會出現以下視窗:
這個畫面就是記憶體的監視畫面。如上圖顯示的 27.0 MB,就是目前運行程式使用的記憶體大小。
接下來,我們可以用 command line 指令 ab 來模擬大量的 requestab -n 10000 -c 100 http://localhost:3000/
,其中 n 代表的是總共要發出幾次請求,c 則是同時發出的請求數。
在發出大量 request 的同時,我們可以在剛剛的視窗中觀察記憶體變化,是否有不合理的上升。如果有的話,我們可以用排除法來一一檢查程式碼中問題的所在。另外你也可以透過拍攝快照來檢視、比較記憶體使用在什麼地方。如果你有用 framework,從快照裡找問題,可能會需要多花些時間。