nginx 로그 부하 줄이기


웹서버 nginx 의 access log 부하를 줄여 IO CPU를 줄였다.

웹서버 로그

접속 로그나 에러 로그는 접속 분석이나 에러가났을때 분석하게 된다. 오래 전에는 access.log 로 접속 통계를 내거나 분석했지만 통계는 구글 어낼리틱스나 네이버 어낼리틱스로 남긴다.

접속 통계 이외의 오류나 과다 크롤링, 해킹 시도 등을 분석하기 위해서는 여전히 access.log 를 남긴다.

엑세스 로그의 부하

사용자가 접속할 때 마다 웹서버는 access.log 파일에 로그를 남기는데, 접속자가 많으면 파일 용량도 커지고, 동시 접속자가 많을 경우 이 로그 파일을 열고 쓰는데에 IO를 하는데 CPU와 디스크를 사용하게 된다.

성공한 엑세스 로깅하지 않게

접속 통계를 구글 어낼리틱스로 보기 때문에 접속로그에는 정상은 제외하고 남기고 있다.

즉, 응답코드가 2xx , 3xx 인 경우 로그를 남기지 않는 방법이 있다.
응답 코드 (Status)를 가지고 loggable 변수를 설정하며,  응답코드가  2와 3으로 시작하는 경우는 “0” , 아니면 “1”으로 값($loggable)을 설정하는 방법이다. 로그 컨디션(condition) “if” 문에서 0이면  로그를 쌓지 않고, 1이면 로그를 쌓게 합니다.

다음 코드이다.

##
# Logging Settings
##
map $status $loggable {
~^[23]  0;
default 1;
}

access_log /var/log/nginx/access.log combined if=$loggable;

#access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;

기존 access_log 는 주석처리했다. 과다 접속이 있을 경우, 잠깐 볼 때에는 주석을 풀고 ngix 를 재시작해서 로그를 본다.







제휴 링크로 구매 시 제휴마케팅 활동의 일환으로 일정액의 수수료를 지급받아 콘텐츠를 제작하는데 큰 도움이 됩니다.



도움이 되셨다면, 댓글이나 소중한 커피 한 잔 부탁드려도 될까요?

커피 사주기



























건강투캘린더

애플 건강기록을 캘린더 일정으로 가져와 캘린더에서 시간순으로 건강기록 보기









Add a Comment

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다