리눅스 웹 서버에 부하가 급증했을 때 점검방법
페이지 정보
작성자 서방님 댓글 0건 조회 161회 작성일 16-02-11 15:57본문
출처 : http://blog.naver.com/didim365_/220156240578
리눅스 웹 서버에 부하가 급증했을 때 점검방법
서버 관리를 하다 보면 여러 가지 갑작스럽게 발생하는 현상에 당황하거나, 어디서부터 점검을 해야할지 고민이 많을텐데요.
얼마 전, 고객의 리눅스 웹 서버에 부하가 급증해서 확인하던 중 내용을 공유하면 좋겠다는 생각에 점검 방법에 대해 포스팅하려고 합니다.
이번 문제는 아파치 프로세스가 다량으로 생성되어서 웹 서버에 부하가 급증하여 느려지는 경우였습니다.
웹 서버에서 갑자기 부하가 급증해서 확인을 해보니, 아파치 프로세스가 다량 생성되는 경우였고 웹 소스의 문제이거나
SQL 문제, 특정 IP로의 공격, 사용량이 많아지는 경우 등의 원인을 확인하기 위해 아래의 정보들을 확인 했습니다.
그럼 저희 엔지니어가 실제 수행한 작업을 간단히 정리해서 살펴보겠습니다.
1. pstree - 프로세스의 상관관계를 트리 형태로 출력합니다.
#pstree -p
[옵션]
p: PID 까지 출력합니다.
[점검 내용]
평소에 확인하지 못한 프로세스가 있는지 살펴봅니다. 예)peal 등
2. netstat - 네트워크의 연결과 포트를 출력합니다.
# netstat -anlp
[옵션]
-a: 소켓을 모두 출력
-n: 도메인 형태가 아닌 IP주소 형태로 출력
-l: LISTENING 상태의 서버 소켓을 출력
-p: 소켓의 PID 프로그램 정보를 출력
[점검 내용]
IP 주소 및 연결상태를 확인합니다.
예) 특정 IP로 다량의 접근이 이뤄지거나 특정 상태가 다량 발생했는지 확인합니다.
[state 설명]
LISTEN: 서버의 데몬이 떠서 접속 요청을 기다리는 상태
SYS_SENT: 로컬의 클라이언트 애플리케이션이 원격 호스트에 연결을 요청한 상태
SYN_RECEIVED: 서버가 원격 클라이언트로부터 접속 요구를 받아 클라이언트에게 응답하였지만, 아직 클라이언트에게 확인 메시지는 받지 않은 상태
ESTABLISHED: 3Way-Handshaking 이 완료된 후 서로 연결된 상태
FIN_WAIT1, CLOSE_WAIT, FIN_WAIT2: 서버에 연결을 종료하기 위해 클라이언트에게 종결을 요청하고 회신을 받아 종료하는 과정의 상태
CLOSING: 흔하지 않지만 주로 확인 메시지가 전송 도중 분실된 상태
TIME_WAIT: 연결은 종료되었지만, 분실되었을지 모를 느린 세그먼트를 위해 당분간 소켓을 열어놓은 상태
CLOSED: 완전히 종료
3. lsof - 실행 중인 파일과 프로세스의 정보를 출력합니다.
# lsof c httpd
# lsof -i tcp
# lsof -i udp
[옵션]
-c: 지정한 COMMAND 필드의 내용만 출력
-i: 현재 사용하는 소켓 정보를 출력
[점검 내용]
특정 계정의 디렉터리가 httpd 프로세서에 물려있는지 확인하고 TCP 와 UDP의 소켓정보를 확인합니다.
4. mysqladmin processlist - 상태를 확인합니다.
#mysqladmin -uroot -p processlist
[점검 내용]
MySQL에 접속한 사용자(클라이언트) 리스트를 확인합니다.
이번 문제는 pstree -p 명령어로 httpd 자식 프로세스가 다량 발생한 것을 확인하였고, 해당 내용을 조치하여 해결하였습니다.
일반적으로, 안내 드린 1~4번 항목의 정보들을 토대로 WEB이나 DB의 문제인지, 특정 IP 에서의 접근이 문제인지 확인 후 조치하면 됩니다.
댓글목록
등록된 댓글이 없습니다.