리눅스 서버 Apache dump 파일 디버깅 방법

리눅스 서버 Apache dump 파일 디버깅 방법

클라우독 2022년 상/하반기 이전 구 버젼 : 해당 있음.
클라우독 2022년 하반기 이후 신 버젼 :  해당 있음.

개요
리눅스 서버에서 Apache가 크래시 될 경우 덤프 파일을 생성 할 수 있습니다.
본 아티클에서는 Apache 덤프파일 생성 방법과 덤프파일 분석 방법을 설명합니다.


Apache 덤프파일 생성 방법

1. httpd.conf 수정
   ① vi /usr/local/apache/conf/httpd.conf 로 설정파일을 오픈합니다.
   ② CoreDumpDirectory logs/apache_dump 항목을 추가하고 저장합니다.

2. apache_dump 폴더 생성
   ①  mkdir /usr/local/apache/logs/apache_dump 명령어로 폴더를 생성합니다.
   ②  chmod 777 /usr/local/apache/logs/apache_dump 명령어로 권한을 변경합니다.

3. core dump 파일크기 제한 해제
   ①  unlimit -c unlimited  명령어로 core 파일크기 제한을 해제합니다.
 
4. Apache 서비스를 재시작 합니다. 


Apache 덤프파일 분석 방법

덤프 설정 이후 Apache error.log에서 아래와 같은 형식의 Segmentation fault 에러 로그가 확인되면 덤프 파일 생성됩니다.

아파치 error.log 경로 및 파일 형식: /usr/local/apache/logs/error.log.yyyy_mm_dd

[Wed Mar 22 13:06:18.787227 2023] [core:notice] [pid 17582:tid 140344862984000] AH00051: child pid 17585 exit signal Segmentation fault (11), possible coredump in /usr/local/apache/logs/apache_dump


덤프파일 분석은 문제가 발생한 서버에 직접 연결 후에 확인이 가능합니다. 내부PCdump 파일을 가져오더라도 확인은 불가합니다.

분석 절차는 다음과 같습니다.

1. Coredump 디렉토리(기본경로: /usr/local/apache/logs/apache_dump)로 설정한 경로로 이동합니다.

cd /usr/local/apache/logs/apache_dump


2. gdb 명령어를 통해 coredump 파일을 open합니다.

gdb /usr/local/apache/bin/httpd [coredump 파일명]

 

ex) coredump 파일명이 core.10192 일 경우

gdb /usr/local/apache/bin/httpd core.10192


3. backtrace 명령어를 입력하여 로그를 확인합니다.

(gdb) bt

#0  0x000000000001cbd6 in ?? ()

#1  0x00007f4290234164 in plusdrive_DecryptFile_handler (pPDServerRequest=0x7f4288039030) at protocol/decryptfile.x:146

#2  0x0000000000000000 in ?? ()

back trace 로그 중 분석 가능한 프레임과 불가능한 프레임은 다음과 같습니다.

분석 가능한 프레임: 1 (함수명: plusdrive_DecryptFile_handler, 코드 위치: protocol/decryptfile.x:146 가 명시되어 있어서 확인 가능)

분석 불가능한 프레임: 0, 2 (함수 및 코드의 위치 정보가 없어서 확인 불가)


4. 문제가 발생한 frame으로 진입합니다.

(gdb) f [프레임 번호]

 

ex) 프레임 번호가 1인 경우

(gdb) f 1


5. list 명령어를 통해 문제가 발생한 코드 위치를 확인합니다.

(gdb) list

명령어를 입력해도 코드 위치가 나오지 않을 수 있습니다.


6.  3~5에서 확인한 로그 및 해당 서버의 엔진 버전을 웹개발팀에 전달하여 분석을 요청합니다. (필요에 따라 개발팀에서 원격 지원을 통해 확인이 필요할 수 있습니다.)


7.  확인이 완료되면 [q]를 입력하여 디버깅을 중단합니다.

(gdb) q

 







    • Related Articles

    • 윈도우 서버 Apache dump 파일 디버깅 방법

      클라우독 2022년 상/하반기 이전 구 버젼 : 해당 있음. 클라우독 2022년 하반기 이후 신 버젼 : 해당 있음. 개요 윈도우 서버의 프로세스가 크래시 될 경우 덤프 파일을 생성할 수 있습니다. 본 아이클에서는 Apache가 크래시 될 경우의 덤프 파일 생성 방법과 생성된 덤프 파일을 분석하는 방법을 설명합니다. 덤프파일 생성 설정 1. 레지스트리 편집기를 엽니다. ① Win + R 키를 눌러 실행 명령 상자를 엽니다. ② 실행 창에 ...
    • 덤프 취득 및 분석 방법

      덤프 취득 및 분석 방법 응용 프로그램이 비정상적으로 동작하거나 시스템 오류(예: 블루스크린)가 발생한 경우 이에 대한 원인 분석을 위한 덤프 취득 및 분석 방법을 설명합니다. 커널 영역과 사용자 영역 윈도우 운영체제는 운영체제 보호 목적으로 메모리를 커널 영역과 사용자 영역으로 구분하여 관리합니다. 구분 설명 사용자 영역 일반 응용 프로그램이 실행되는 영역. 예) PlusDrive.exe, Excel.exe, Powerppt.exe 등 동작 ...
    • Apache 상태 서버 관제 로그 항목 및 비정상 판단 기준

      Apache 상태 서버 관제 로그 항목 및 비정상 판단 기준 서버 관제 로그중의 하나인 Apache 상태 로그에 대해 설명합니다. Apache 상태 로그는 Apache의 모듈중의 하나로 서버의 현재 상태와 성능 정보를 보여줍니다. 문서에서 경로는 리눅스 기준으로 명시하였습니다. 윈도우 서버인 경우에는 C: 드라이브 하위의 동일 경로입니다. 로그의 위치 : /plusdrive/log/monitoring_log/apache_status 로그 파일 ...
    • 문서중앙화 서버 SW 아키텍처

      문서중앙화 서버 SW 아키텍처 문서중앙화 서버 구성 프로그램 문서중앙화 서버의 기본 프로그램 구성 및 역할은 다음과 같습니다. Apache: 문서중앙화 엔진 모듈을 탑재하고 있으며, 모든 요청을 수신하여 URL에 따라 엔진 모듈 또는 Tomcat으로 전달하는 역할을 담당합니다. Tomcat: jsp웹 서비스를 제공합니다. Java: Tomcat 서비스 구동 및 배치 프로그램을 동작하기 위한 프로그램입니다. MySQL: 기본 데이터베이스입니다. ...
    • 서버 관제 결과 로그 항목 및 비정상 판단 기준

      서버 관제 결과 로그 항목 및 비정상 판단 기준 서버 관제 항목들을 체크한 결과를 취합한 로그에 대한 설명입니다. 비정상인 항목이 있을 경우에는 로그 내용을 메일로 발송하여 서버 이상을 담당자에게 알립니다. 로그의 위치 : /plusdrive/log/monitoring_log/default_log 정상일 경우에 로그 파일명 : Server_monitoring_년월일_시분초.html 비정상인 경우 로그 파일명 : ...