我有一个 node.js 进程,它写入许多不同的 sqlite 数据库。 Sqlite 只能处理每个数据库一次并发写入,这很好,因为每个数据库一次只能进行一次写入,但会同时写入多个不同的数据库。
如何确定系统中的写入瓶颈在哪里: 1. 操作系统 (Debian Wheezy) 2. SSD 3. Node.js
我认为 sqlite 不会成为瓶颈,因为每个数据库不会并发写入,但写入会同时发生在不同的数据库上。
编辑:我正在尝试确定边界因子,以便我可以决定何时扩展到新框,或添加更多 node.js 进程等。
答案1
sar 命令为您提供各种有用的系统活动。例如,对于一般 CPU 使用情况:
sar -u 2 10
显示(注意 - 这不是 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
显示 I/O 等待时间。system
由于处理请求所需的 CPU 使用率,该数字也会受到 I/O 的影响,但iowait
time 表示归因于设备的延迟。
对于磁盘使用情况:
sar -d 2 110
给出:
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
因此,等待时间 (await) 可能有助于确定系统是否受 I/O 限制。
答案2
尝试使用 来分析您的应用程序iotop
。
sudo apt-get install iotop
sudo iotop