Kai*_*zay 6 performance monitoring io sqlite node.js
我有一个 node.js 进程,它写入许多不同的 sqlite 数据库。Sqlite 只能处理每个数据库一次并发写入,这很好,因为每个数据库一次只有一次写入,但同时写入多个不同的数据库。
我如何确定系统中的写入瓶颈在哪里: 1. 操作系统(Debian Wheezy) 2. SSD 3. Node.js
我认为 sqlite 不会成为瓶颈,因为每个数据库不会并发写入,但会同时写入不同的数据库。
编辑:我正在尝试确定边界因子,以便我可以决定何时扩展到新框,或添加更多 node.js 进程等。
sar 命令为您提供各种有用的系统活动。例如,对于一般 CPU 使用情况:
sar -u 2 10
Run Code Online (Sandbox Code Playgroud)
显示(注意 - 这不是 debian 系统,但它应该是类似的):
09:31:55 AM CPU %user %nice %system %iowait %steal %idle
09:31:57 AM all 1.71 0.00 1.14 0.00 0.00 97.14
09:31:59 AM all 1.00 0.00 0.50 0.00 0.00 98.51
Run Code Online (Sandbox Code Playgroud)
显示 I/O 等待时间。system由于处理请求所需的 CPU 使用率,该数字也将受到 I/O 的影响,但iowait时间表示归因于设备的延迟。
对于磁盘使用:
sar -d 2 110
Run Code Online (Sandbox Code Playgroud)
给出:
09:33:03 AM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
09:33:05 AM dev8-0 11.06 0.00 112.56 10.18 0.02 1.59 0.45 0.50
09:33:05 AM dev8-1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Run Code Online (Sandbox Code Playgroud)
因此,等待时间 (await) 可能与确定系统是否受 I/O 绑定有关。