On Tue, 13 Jan 2009, Evgeniy Polyakov wrote:
> Like anything that spawns a thread or process per request/client, or
> preallocates set of them which connect to the huge object like database.
> Most of the time database/server is killed first instead of comparably
> small clients.
No, the reverse is true: when a task is chosen for oom kill based on the badness heuristic, the oom killer first attempts to kill any child task that isn't attached to the same mm. If the child shares an mm, both tasks must die before memory freeing can occur.
It is a theory, not a practice. OOM-killer most of time starts from ssh,
database and lighttpd on the tested machines, when it could start in
the reverse order and do not touch ssh at all. Better not from daemon
itself, but its fastcgi spawned processes.