좀비를 완전히 제거하는 법?

nohmad의 이미지

현재 apache상에서 fastcgi 프로토콜을 이용해서 동작하는 애플리케이션을 개발하고 있습니다. 간단하게 apache/fastcgi의 동작방식을 설명하자면, 둘은 완전히 독립된 프로세스이며 소켓(TCP 또는 Unix Domain Socket)을 통해 통신합니다. apache가 특정 디렉토리로 오는 http 요청을 받아 fastcgi가 listen 하는 소켓에 쓰고, 결과를 읽어 다시 http로 response 합니다. fastcgi는 사용자가 직접 실행명령으로 띄울 수도 있고, 아파치가 자동으로 초기화하도록 하여 띄울 수도 있습니다.

문제가 생겼습니다. 개발자들의 상투어인 '알 수 없는 이유'로 fastcgi 데몬이 죽었고 좀비가 되었습니다(프로세스 상태 코드 Z+). 그리고 유감스럽게도 이 상황은 다시 재연이 안되거나 무척 힘들 것 같습니다(만일 반드시 재연을 해봐야 알 수 있다면 그냥 모른 채로 있고 싶을 정도입니다. -_-).

제가 알기로 좀비 프로세스는 실제 메모리상에는 프로세스 이미지가 존재하지 않고, 다만 커널이 관리하는 프로세스 테이블에서 기록이 제거되지 않고 남아있는 일종의 쓰레기라고 알고 있습니다. 그런데, 아파치를 아무리 다시 시작해도 처음 설정했던 디렉토리로의 요청에 대해 fastcgi 프로세스를 초기화해서 실행해주지 못하고 있습니다. 아마도 memory mapping이 이루어질 때 좀비가 된 프로세스의 주소로의 참조가 계속 남아있는 것 같습니다. 아파치에서 모든 설정을 모두 제거한 후에 재시작해도 그 디렉토리로의 http 요청은 모두 그 좀비 프로세스로 전달되고, 에러를 내뱉습니다. 누군가는 좀비의 저주라고 하더군요. ;(

저 역시 좀비가 된 프로세스를 완전히 제거하는 방법은 없는 것으로 알고 있지만, 혹시나 하는 마음에 질문 올려봅니다. 포터블한 방법이 아니더라도 유용한 정보가 있으면 공유해주시면 감사하겠습니다.

익명 사용자의 이미지

fastcgi가 (뭔지 모르지만 --; ) 이 프로세스가 실행될때, parent process가 1이 되도록 해주세요.
1 즉, init는 자식이 죽으면서 발생시키는 시그널을 처리해주어서, 좀비로 부터(부모가 자식의 죽음을 인정안하는...) 탈출하게되겠지요.
1을 부모로 만드는 거야, 데몬을 생성시키는 시나리오에 이미 널리 알려져 있지요?

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.