다양한 sqlite 데이터베이스에 쓰는 node.js 프로세스가 있습니다. Sqlite는 데이터베이스당 하나의 동시 쓰기만 처리할 수 있습니다. 이는 한 번에 데이터베이스당 한 번만 쓸 수 있지만 여러 다른 데이터베이스에 동시에 기록되기 때문에 괜찮습니다.
시스템에서 쓰기 병목 현상이 발생하는 위치를 확인하는 방법: 1. 운영 체제(Debian Wheezy) 2. SSD 3. Node.js
각 데이터베이스에 동시 쓰기가 발생하지 않기 때문에 sqlite가 병목 현상이 될 것이라고 생각하지 않지만 쓰기는 동시에 다른 데이터베이스에서 발생합니다.
편집: 새 상자로 확장하거나 node.js 프로세스를 더 추가할 시기 등을 결정할 수 있도록 경계 요소를 결정하려고 합니다.
답변1
sar 명령은 다양하고 유용한 시스템 활동을 제공합니다. 예를 들어 일반적인 CPU 사용량의 경우:
sar -u 2 10
표시됨(참고 - 데비안 시스템은 아니지만 유사해야 함):
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 바인딩되어 있는지 여부를 결정하는 데 도움이 될 수 있습니다.
답변2
을 사용하여 애플리케이션을 프로파일링해 보세요 iotop
.
sudo apt-get install iotop
sudo iotop