Databases

NAVIGATION
CATEGORIES
REFERRENCE
LINKS
  • Zombie killing methods

    5 answers - 1397 bytes - related search similar search Add To My Delicious Add To My Stumble Upon Add To My Google Mark Add To My Facebook Add To My Digg Add To My Reddit

    Hi Silviu,
    Am Freitag 03 M 2006 16:43 schrieb Silviu Marin-Caea:
    Btw, did you try kill -SIGSTP ?
    I tried killing it with:
    -SIGTERM
    -SIGKILL
    -SIGSTP
    -SIGCHLD
    None of it work.
    ps auex gives this output:
    oracle 11109 9.6 0.0 0 0 ? Zl 15:34 10:24 [f90webm]
    <defunct>
    I could try restarting Forms, but this is not an acceptable long term
    solution.
    Does anyone have other suggestions?
    I am sorry, but just ask "how does a process become a zombie?", and you will
    find that killing it is nonsense. A process becomes a zombie, when the
    following happens:
    A process having child processes (or just thinks it has) receives any kind of
    kill signal. If the sense of the child process forbids to re-parent it to
    init itself, the parent process (effectively) kills the child and waits for
    the child to die, too. But what if the child has already died and the parent
    did not realize? Then it will wait forever for the child's death: You have a
    zombie, an "undead" process which should NT eat any ressources anymore,
    because it is outside of the kernel timeslice (<defunctmeans this).
    Normally, the init process cleans up the process table from time to time and
    zombies will run out of lifetime. But I am not sure about cleanup behaviour
    of kernels < 2.6.
    Best regards,
  • No.1 | | 1173 bytes | |

    Monday 06 March 2006 10:20, Martin Klier wrote:

    You have a zombie, an "undead" process which should NT eat any ressources

    The theory is all fine, but I'm looking at 99% CPU Zombie:

    27934 oracle 16 0 0 0 0 Z 99.9 0.0 97:31.13 f90webm <defunct>

    We have restarted forms and the zombie become child of init. But init cannot
    clean it either.

    I have looked into /proc/PID_of_zombie

    It has a directory named tasks that contains two subdirectories:
    27934 PID_of_zombie
    32001 (this process does not exist - !!interesting!!)

    cat /proc/27934/task/32001/status
    Name: f90webm
    State: R (running)
    SleepAVG: 133%
    Tgid: 27934
    Pid: 32001
    PPid: 1
    TracerPid: 0
    Uid: 59 59 59 59
    Gid: 54 54 54 54
    FDSize: 1024
    Groups: 6 54 55
    VmSize: 298972 kB
    VmLck: 0 kB
    VmRSS: 31024 kB
    VmData: 186292 kB
    VmStk: 64 kB
    VmExe: 9420 kB
    VmLib: 30756 kB
    Threads: 2
    SigPnd: 0000000000000000
    ShdPnd: 0000000000054107
    SigBlk: 0000000000000004
    SigIgn: 0000000000081000
    SigCgt: 0000000197816eff
    CapInh: 0000000000000000
    CapPrm: 0000000000000000
    CapEff: 0000000000000000
  • No.2 | | 479 bytes | |

    Hi Silviu,

    Am Montag 06 M 2006 13:23 schrieb Silviu Marin-Caea:
    32001
    this might be the PID of the child process that does not exist any more. Mh,
    how long does this state persist? Hours? Days?

    In worst case, you won't have a chance to get rid of it without booting the
    node. As I have explained earlier, a kill signal to a zombie is senseless. A
    zombie has already received a signal, otherwise it would be a normal process.

    Best regards,
  • No.3 | | 874 bytes | |

    Monday 06 March 2006 14:48, Martin Klier wrote:
    Hi Silviu,

    Am Montag 06 M 2006 13:23 schrieb Silviu Marin-Caea:
    32001

    this might be the PID of the child process that does not exist any more.
    Mh, how long does this state persist? Hours? Days?

    1-2 hours then the buffers go low and the server starts swapping so hard it's
    useless. Reboot is the only option.

    In worst case, you won't have a chance to get rid of it without booting the
    node. As I have explained earlier, a kill signal to a zombie is senseless.
    A zombie has already received a signal, otherwise it would be a normal
    process.

    I tried sending a -SIGCHLD to the parent of this zombie (a java process).
    That didn't help. Then, after restarting the java process, the zombie became
    child of init. And init could not clean the zombie either.
  • No.4 | | 1067 bytes | |

    El Lunes 06 Marzo 2006 14:05, Silviu Marin-Caea :
    Monday 06 March 2006 14:48, Martin Klier wrote:
    Hi Silviu,

    Am Montag 06 M 2006 13:23 schrieb Silviu Marin-Caea:
    32001

    this might be the PID of the child process that does not exist any more.
    Mh, how long does this state persist? Hours? Days?

    1-2 hours then the buffers go low and the server starts swapping so hard
    it's useless. Reboot is the only option.

    In worst case, you won't have a chance to get rid of it without booting
    the node. As I have explained earlier, a kill signal to a zombie is
    senseless. A zombie has already received a signal, otherwise it would be
    a normal process.

    I tried sending a -SIGCHLD to the parent of this zombie (a java process).
    That didn't help. Then, after restarting the java process, the zombie
    became child of init. And init could not clean the zombie either.

    Upgrade your kernel to a never version or recompile the existing one
    otherwise you will see zombies, even, in your best dreams ;-)
  • No.5 | | 316 bytes | |

    Hi,

    this may be off topic but maybe you give me a hint anyway.

    Is there a way to update a table with unknown column_name?

    This means by position not by name.

    If i remember correct i read many times something like

    update <table_name:1 = 1

    thanks, kind regards,

    Toni

Re: Zombie killing methods


max 4000 letters.
Your nickname that display:
In order to stop the spam: 4 + 3 =
QUESTION ON "Databases"

EMSDN.COM