SharedIT | 묻고 답하기(AMP)

리눅스 ps 에서 아파치에 대해서 잘 아시는분 계신가요?



위 캡쳐를 보시면 httpd 프로세스는 총 325개정도로 확인이 됩니다.

근데 여기서 STAT 이 R 인 프로세스는 3개입니다.


ps에서 STAT이 R인 것은 실행중이거나 실행대기중인 프로세스라는 것으로 압니다.


httpd 프로세스가 R인 상황이 어느상황인것이라고 이해를 하면 될까요..?

구체적인 이해를 도와주셨으면 좋겠습니다. 감사합니다.


Tags : 태그가 없습니다.

2개의 답변이 있습니다.

wansoo
  0 추천 | 약 2년 전

process의 R 상태는 실행되고 있는 상태(Run)이거나 실행가능한 상태(Runnable)를 의미합니다.


OS의 작업 스케줄러에 의해 여러 process들을 (멀티작업)들을 번갈아가며 CPU에 올려서 실행되게 하게 되는데... R 이라는 건 CPU에 올려서 작업을 처리하고 있는 상태이거나, 프로세서가 처리에 필요한 모든 자원을 가지고 있는 상태이지만 OS 처리 스케쥴러에 의해 CPU 사용만 잠시 못하고 있는 상태를 의미하게 됩니다.


쉽게 말해서 어떤 요청에 의해서 바쁘게 일하고 있다는 의미입니다.


추가적인 Process 상태로 D (Uninterruptible Sleep ), S (Interruptable Sleep ), T (Stopped ), Z (Zombie )가 있고요.


 


process 상태의 전이를 보면...


process 생성 -> 실행(R) -> { D(Sleep) 또는 S -> R } 반복 -> T 또는 Z


와 같은 생애 주기를 가지고서 작동하게 되겠고요.


 


좀더 구체적인 내용을 알고 싶다면...

lsof /usr/sbin/httpd

lsof -c httpd

lsof -u apache


명령을 사용해 볼 수 있을 것 같고요.

lsof 명령으로표시되는 결과를 가지고 다시 lsof해서 추가적인 정보들을 얻어 낼 수도 있을 것 같고요.


DB Connection이나 PHP 등등의 추가적인 정보를 얻었다면 해당 소프트웨어의 로그나 콘솔 등에 접근해서 다른 추가적인 정보를 얻을 수도 있을 것 같아 보이고요.

topkslee
  0 추천 | 약 2년 전

ps STAT R은 말씀하신 것처럼 실행중이거나 실행대기중인 상태입니다.


httpd는 아파치 웹서비스 프로세스인데요.

웹서버는 보통 아래와 같은 구조인데요.

(1)client <-> (2)Web server(httpd) <-> (3)WAS(middleware, tomcat, weblogic) <-> (4)DB

단순 텍스트, 이미지의 경우는

  •  (1)에서 (2)web server에서 text와 이미지를 전달하고 close

웹페이지에 접속하여 검색 등 프로그램적인 부분은

  • (1)에서 (2)접속하여 (3), (4)까지 연계하여 DB 조회된 데이터를 (3) 가공하여 (2)을 통해

  • (1)에 전달되는 구조가 될 것입니다.

  • 이때 (2),(3),(4) 과정이 진행중일때는 R 상태로 보시면 됩니다. 


찌롱 | 약 2년 전

오 이해쉽게 설명해주셔서 감사합니다!

해당 과정이 진행중이라면 ps 나 기타 명령어로 어떤 과정인지를 검증할 수 있는 방법이 있을까요? 예를들면 현재 DB서버와 커넥션을 맺는 중이라던지 lsof 명령어에 WAS단에서 처리중임을 알 수 있다던지..

topkslee | 약 2년 전

Linux ps에서는 구간별 확인까지는 안됩니다.

이런것은 제니퍼, InterMAX 같은 APM tool에서는 가능합니다.