多くの異なるsqliteデータベースに書き込むnode.jsプロセスがあります。 Sqliteは、データベースごとに1つの同時書き込みのみを処理できます。これは、データベースごとに一度に1つの書き込みしかないため問題ありませんが、同時に複数の異なるデータベースに書き込みます。
システムの書き込みボトルネックがどこにあるかを判断するにはどうすればよいですか:1。OS(Debian Wheezy)2。SSD 3. Node.js
データベースごとに同時書き込みが発生しないため、sqliteがボトルネックになることはないと思いますが、書き込みは異なるデータベースに対して同時に発生します。
編集:新しいボックスにスケーリングするタイミングを決定したり、node.jsプロセスを追加したりできるように、境界係数を決定しようとしています。
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バウンドであるかどうかを判断する上で重要な場合があります。
iotop
を使用してアプリケーションのプロファイルを作成してみてください。
Sudo apt-get install iotop
Sudo iotop