파이프들이 많은 프로그램들이 자꾸 Zombi가 되는 이유?

djddoc의 이미지

:shock:

OS : RH 7.2 enigma 를 사용하고 있습니다.
주로 외장형 시리얼 멀티 포트를 통해서 일정간격으로 데이타를 수집하는
장비의 프로그램을 작성했습니다.

프로그램들은 대부분 bash Script를 이용해서 작성이 되어 있습니다.
조금 복잡한 파일분석들은 C 언어를 이용해서 라이브러리처럼 Script에서
호출해서 결과를 얻는 방식으로 구성되었습니다.

그런데 Script 안에서 파이프로 연결된 부분들을 만나면 자꾸 Zombi가 되어
버리는 상황이 벌어집니다. 파이프가 많은 것도 아니고 많아야 4개 정도가
연결된 상태입니다.

동시에 프로세스들은 약 70 ~80개 정도가 돌아가고 있습니다.
소스들이 많다보니 소스를 올리기는 좀 그렇구요.

제가 궁금해 하는것은 한 시스템이 정말 많은 파이프들로 연결이 되어서
어떤 일정 한계를 벗어날수 있는가의 문제 입니다.

시스템의 동시에 연결될수 있는 파이프의 갯수제한이 있다던가 같은 문제가
있는지 혹시 이런 경험을 하신분들은 있으신가요?...

덤으로 좀더 궁금한게 있다면 Script를 사용할경우 메모리의 사용량과
같은 로직을 구현하기 위해 최적화한 C Code의 경우 메모리의 차이는
양적으로 차이가 있는지와 어떤게 더 좋은 방법으로 추천하실수 있으신가요?

그럼 많은 답변 부탁 드리겠습니다.

codebank의 이미지

일반적인 방법으로는 좀비가 만들어질 수가 없다고 알고 있습니다.
즉, daemon형태로 작성되어진 상태에서만 좀비가 되겠죠.(백그라운드로 돌린
프로그램이라던가요.)
파이프를 통해서 들어간값이 정확하게 어떤값이였나를 살펴보는게 좋을것 같다는
생각입니다.
모든 경우를 다 처리해서 완벽하게 소화를 하는 프로그램이라면 모를까 어느부분인가
구멍이 있는것 같다는 생각이네요.
파이프의 갯수에는 제한이없는걸로 알고 있습니다. 다만 그 크기에 제한이 있다고
들었습니다.
ulimit -Sa
또는
ulimit -Ha
등으로 소프트웨어적인 또는 하드웨어적인 한계값을보면 한 파이프당 할당된 크기는
512Bytes로 정의 되어있네요.

좀비가 발생한다면 해당 프로그램에 어떤 값이 들어갔는지를 먼저 점검해보고
그에 대처하는 프로그램소스를 수정해야하지 않을까하는 원천적인 답변을 달아봅니다.

------------------------------
좋은 하루 되세요.

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.