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 를 재시작해서 로그를 본다.
제휴 링크로 구매 시 제휴마케팅 활동의 일환으로 일정액의 수수료를 지급받아 콘텐츠를 제작하는데 큰 도움이 됩니다.
도움이 되셨다면, 댓글이나 소중한 커피 한 잔 부탁드려도 될까요?
건강투캘린더
애플 건강기록을 캘린더 일정으로 가져와 캘린더에서 시간순으로 건강기록 보기
애플 건강기록을 캘린더 일정으로 가져와 캘린더에서 시간순으로 건강기록 보기