problem in fastcgi with apache
현재 unfix 서버에는 apache + mod_fcgid 환경에서 fastcgi 를 지원하고 있다. 그런데 fastcgi 를 적용시킨 후 가끔 apache 가 먹통이 되는 현상이 생겨버렸다.
대부분의 apache 프로세스가 D state 를 가지게 되면서 더 이상 프로세스를 만들어내지 못하게 되서 요청을 처리하지 못하게 되는 것 같은데, D state 는 Uninterruptible sleep 을 의미하므로 fastcgi 프로세스에서 interrupt 를 disable 시킨채로 sleep 상태에 들어가서 이런 문제가 생기는 것으로 보인다.
그렇다고 하루종일 아파치가 정상적으로 동작하고 있나를 확인할 수는 없기에 스크립트를 하나 작성해봤다.
#!/bin/sh cnt=0; for x in `ps -C apache2 -o stat|grep D`;do let cnt++; done if [ $cnt -ge 10 ];then kill -HUP `cat /var/run/apache2.pid` fi |
sort 와 uniq 를 이용해서 숫자를 셀 수도 있지만 정상적인 경우에 D stat 를 가지는 프로세스가 존재하지 않으므로 for 를 이용하기로 했다. 꺄아! 과연 효과는 -_-! 두둥!
Related Posts
This entry was posted by 정태영 on Thursday, January 31st, 2008 at 1:46 PM and is taged under apache, backup, Computer, fastcgi, mod_fcgid, shell script, Unfix, unix. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.
과연 효과는??? 두둥
당연하겠지만 -_-! 효과는 좀 있는데요 ㅋㅋ cron 에서 5분간격으로 해뒀던걸 이젠 2분간격으로 줄였어요.