1. 개요
nginx의 access log를 기준으로 1) 파일로 기록하는 경우와, 2) 파일로 기록하고 rsyslog를 이용하여 centralized server로 전송하는 경우의 시스템 자원의 사용량, 응답시간, 초당 요청 처리수를 검사한다.
2. 검사 환경
centralized server : Intel(R) Xeon(R) CPU E5-2676 v3 @ 2.40GHz 1Core, 2GB
client server : Intel(R) Xeon(R) CPU E5-2676 v3 @ 2.40GHz 2Core, 8GB
* aws의 small, large 인스턴스로 진행하였다.
nginx version : 1.11.1
ab : 2.3, 벤치마크 툴은 ab(Apache HTTP server Benchmarking tool)를 사용한다.
1000개의 쓰레드로 100000번 요청한다. (초당 약 10000 Req)
ex) ab -kc 1000 -n 10000 clientserver
시스템 모니터링 툴 : netdata
protocol : UDP
성능 검사는 총 3대의 서버로 진행한다.
- 벤치마크 툴을 이용해 client server의 nginx에 요청한다.
- client server 로 nginx access_log 를 syslog로 기록하고 다시 중앙 집결 서버에 전송한다.
- centralized syslog server 로 로그가 전송도는 중앙 집결 서버이다.
3. 검사 항목
- 시스템 자원
- 응답시간
- 손실로그
- 초당 요청 처리수
4. 설정
- # client server config
- # vi /usr/local/nginx-1.11.1/conf/nginx.conf
- access_log syslog:server=unix:/dev/log,facility=local7,tag=nginx,severity=info main;
- # client server config
- # vi /usr/local/nginx-1.11.1/conf/nginx.conf
- *.info;mail.none;authpriv.none;cron.none @clientserver
- # centralized server config
- # vi /etc/rsyslog.conf
- $ModLoad imudp
- $UDPServerRun 514
5. 검사
1) 파일로만 기록한 경우
req/sec : 7,875
response time : 126.970 m/s
cpu : 29.57%
2) 파일로 기록하고 rsyslog를 이용하여 centralized server로 전송
req/sec : 7,475
response time : 133.794 m/s
cpu : 34.76%
6. 결과
netdata의 CPU 사용량은 1% ~ 2%,
rsyslog 사용시 평균 약 5%의 오버헤드가 발생하였으며 많게는 15%의 오버헤드가 발생하였다.