web-dev-qa-db-ja.com

プロセスまたはマシンがいつIOバインドされているかを判断するにはどうすればよいですか?

多くの異なるsqliteデータベースに書き込むnode.jsプロセスがあります。 Sqliteは、データベースごとに1つの同時書き込みのみを処理できます。これは、データベースごとに一度に1つの書き込みしかないため問題ありませんが、同時に複数の異なるデータベースに書き込みます。

システムの書き込みボトルネックがどこにあるかを判断するにはどうすればよいですか:1。OS(Debian Wheezy)2。SSD 3. Node.js

データベースごとに同時書き込みが発生しないため、sqliteがボトルネックになることはないと思いますが、書き込みは異なるデータベースに対して同時に発生します。

編集:新しいボックスにスケーリングするタイミングを決定したり、node.jsプロセスを追加したりできるように、境界係数を決定しようとしています。

5
Kaizer Sozay

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時間は、デバイスに起因する遅延を示します。

ディスク使用量の場合:

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バウンドであるかどうかを判断する上で重要な場合があります。

4
rghome

iotopを使用してアプリケーションのプロファイルを作成してみてください。

 Sudo apt-get install iotop
 Sudo iotop
2
Milind Dumbare