你的问题比较简略:“为何 linux js 卡顿日志”。我分几种常见情况给你解释,Linux 上 JS 卡顿通常由什么引起,以及日志里会看到什么。
日志表现:
top / htop 中 node / chrome 占用高日志表现(Node.js):
[28234:0x...] Delayed task worker
<--- Last few GCs --->
[28234:0x...] 1234 ms: Mark-sweep 1023.0 (1030.0) -> 1020.0 MB
或:
FATAL ERROR: Ineffective mark-compacts near heap limit
fs.readFileSync)日志表现:
日志表现:
ETIMEDOUT
ECONNRESET
socket hang up
requestAnimationFrame 写得不好日志(浏览器 / Puppeteer):
典型错误:
while (true) {}
或:
const fs = require('fs');
fs.readFileSync('big.json');
日志表现:
node --trace-gc app.js
node --max-old-space-size=2048 app.js
查看日志关键词:
GCheaptimeoutblocktop
htop
iostat -x 1
dmesg | tail
journalctl -xe
如果你能补充:
我可以直接帮你定位是哪一类卡顿,以及怎么改。
如果你愿意,可以把日志贴出来,我帮你逐行看。