2011-08-22 4 views
2

아파치 프로세스가 점점 더 파일 잠금 (PHP flock()으로 인해)을 기다리는 데 방해가되는 웹 서버에 문제가 있습니다. , 그러나 결코. 결국 사이트는 느리고 속도가 느려지고 결국 Apache가 다시 시작될 때까지 완전히 멈 춥니 다.WCHAN = flock_lock_file_wait 일 때 아파치가 기다리는 파일을 알려주는 방법

나는 내부적으로 생성 된 디스크 캐시 메커니즘에서 어떻게 든 나쁜 코드가 뒤에 있다는 이론에 대해 연구하고 있습니다. 그러나 나는 그것을 추적 할 수 없다. (우리는 우분투에서 실행 중입니다.)

제 질문은, 어떻게 붙어있는 파일이나 파일을 말할 수 있습니까? 전화 끊김이 어디 있는지 알 수 있다면, 나는 나쁜 코드가 어디에 있는지 쉽게 알 수 있습니다. 내가이 명령을 수행 할 때 나 정확한 아파치가 대기 /에 잠겨 정보 파일 보는이로 이동하기 위해 어떤 방법이 있나요

730 ?  www-data apache2 flock_lock_file_wait 
3085 ?  www-data apache2 flock_lock_file_wait 
5393 ?  www-data apache2 flock_lock_file_wait 
5397 ?  www-data apache2 flock_lock_file_wait 
11181 ?  www-data apache2 flock_lock_file_wait 
30280 ?  www-data apache2 flock_lock_file_wait 

:

ps -o pid,tt,user,fname,wchan -C apache2 

을 나는이 얻을?

답변

2

당신은 lsof를 utiliy를 사용해야합니다 :

apt-get install lsof 

목록 열려있는 파일을 의미 lsof를. 많은 것들이 그것으로 할 수 있습니다, lsof -ni 예를 들어 열린 네트워크 연결을 나열합니다. 그래서 분명히, 당신은 것

lsof -p 730 

그리고 당신은 모든 열린 파일 및 라이브러리 (eveything 리눅스의 파일이다) 얻을 것이다 : 아파치 프로세스의 경우에는 -p 옵션 (PID)를 사용해야합니다 자물쇠 파일을 가져와.

+0

와우, 정말 고마워. 나에게 좋은 점은 lsof 유틸리티가 이미 설치되어 있다는 것입니다. 불행히도, 내가 얻은 것들의리스트는이 프로세스들 중 하나를 위해 상당히 길다. 약 6 개의 서로 다른 로그 파일을 포함한다. 그 중 하나 (나는 꽤 확실하다)는 나의 잠긴 파일이다. lsof 출력을 보면서 어떤 파일이 '멈춤'또는 '잠긴'위치에 있는지 알 수있는 방법이 있다고 생각하지 않습니다. – dvanhook

+0

http://www.netadmintools.com/html/lsof.man.html OUTPUT으로 이동 한 다음 NnRrWwUuXx 의미에 대한 FD, 잠금 유형이 다른 – regilero

+0

을 확인하십시오. 대답이 유용하다고 판단되면 투표하십시오. 질문자가 녹색 마크 업을 수락 할 수 있는지 확인하십시오. – regilero