Как узнать, какой процесс сжирает всю память?

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модератор: SLEDopit

Ответить
St33l
Сообщения: 25

Как узнать, какой процесс сжирает всю память?

Сообщение St33l »

Проблема в следующем: какой-то процесс по непонятной причине начинает резко жрать оперативу. В результате чего происходит следующее:

"kernel vm process killed XXX", где ХХХ - имя какого-нить процесса (мускул, апач, прокся, днс и т.д.)

И так раз в неделю где-то.
Погуглил, пишут, что нужно увеличить память и найти этот процесс, но как...
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4823
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: Как узнать, какой процесс сжирает всю память?

Сообщение SLEDopit »

St33l писал(а):
30.11.2008 13:36
Проблема в следующем: какой-то процесс по непонятной причине начинает резко жрать оперативу. В результате чего происходит следующее:

"kernel vm process killed XXX", где ХХХ - имя какого-нить процесса (мускул, апач, прокся, днс и т.д.)

И так раз в неделю где-то.
Погуглил, пишут, что нужно увеличить память и найти этот процесс, но как...
top - выодит список процессов, сортируя по количеству занимаемой памяти.
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
Аватара пользователя
Gogast
Сообщения: 549
ОС: Gentoo amd64

Re: Как узнать, какой процесс сжирает всю память?

Сообщение Gogast »

ps -eo user,pcpu,pmem,pid,cmd | sort -r -k3 | head -10
первые 10 самых жрущих память процессов
Без виндовза 3 года
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4823
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: Как узнать, какой процесс сжирает всю память?

Сообщение SLEDopit »

Gogast писал(а):
30.11.2008 14:01
ps -eo user,pcpu,pmem,pid,cmd | sort -r -k3 | head -10
первые 10 самых жрущих память процессов
ну не знаю топ по моему удобней. только кстати оба варианта неправильно все показывают. :)
оперу надо на первой место.

Код: Выделить всё

user:Autostart$ ps -eo user,pcpu,pmem,pid,cmd | sort -r -k3 | head -10
USER     %CPU %MEM   PID CMD
user      1.9  5.7  3057 amarokapp -session 106465620000122725306700000028950014_1227945442_382289
root      1.9  5.3  2896 /usr/bin/X -br -nolisten tcp :0 vt7 -auth /var/run/xauth/A:0-E2aAUv
user      2.2  5.1  3056 ktorrent -session 106465620000122661228700000027600137_1227945442_362022
user      0.0  4.8  5693 /usr/lib/icedove/icedove-bin
lp        0.0  2.0 31615 gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE -sPAPERSIZE=a4 -g9920x7016 -r1200x600 -sDEVICE=pbmraw -dCOLORSCREEN -dMaxBitmap=500000000 -sOutputFile=|cat 1>&3 -_
user      1.2 19.0 13861 /usr/lib/opera/9.62/opera -style keramik
mysql     0.0  1.7  2420 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --pid-file=/var/run/mysqld/mysqld.pid --skip-external-locking --port=3306 --socket=/var/run/mysqld/mysqld.sock
user      0.1  1.5  3054 yakuake -session 106465620000121683286000000025740086_1227945442_350314
user      0.2  1.5  3037 kicker [kdeinit]
user  :Autostart$ top
top - 14:02:46 up 1 day,  3:04,  2 users,  load average: 0.24, 0.24, 0.23
Tasks: 139 total,   2 running, 137 sleeping,   0 stopped,   0 zombie
Cpu(s):  3.3%us,  5.7%sy,  0.0%ni, 90.7%id,  0.3%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   1036080k total,  1021720k used,    14360k free,    16920k buffers
Swap:  2096472k total,      716k used,  2095756k free,   540764k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 3056 user      20   0  164m  53m  25m S  1.7  5.2  35:46.02 ktorrent
 1317 user      20   0  2396 1168  888 R  0.7  0.1   0:00.04 top
13861 user      20   0  446m 193m  16m S  0.7 19.1  20:36.19 opera
 3037 user      20   0 35040  15m  11m S  0.3  1.6   4:44.67 kicker
 3146 user      20   0  3248  944  800 S  0.3  0.1   2:42.82 watch
 5028 user      20   0  3248  948  804 S  0.3  0.1   2:09.64 watch
    1 root      20   0  2100  696  592 S  0.0  0.1   0:01.88 init
    2 root      15  -5     0    0    0 S  0.0  0.0   0:00.00 kthreadd
    3 root      RT  -5     0    0    0 S  0.0  0.0   0:00.00 migration/0
    4 root      15  -5     0    0    0 S  0.0  0.0   0:14.48 ksoftirqd/0
    5 root      RT  -5     0    0    0 S  0.0  0.0   0:00.00 watchdog/0
    6 root      15  -5     0    0    0 S  0.0  0.0   0:03.84 events/0
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
Аватара пользователя
nesk
Сообщения: 2268
Статус: Линукссаксовец
ОС: MS Windows XP Home SP3
Контактная информация:

Re: Как узнать, какой процесс сжирает всю память?

Сообщение nesk »

попробуйте так
ps -eo user,pcpu,pmem,pid,cmd | sort -r -n -k3 | head -10
у меня не на чем проверить
Внимание: У меня под рукой нет машины с Linux. Я не использую эту ОС. Ответы я даю либо по памяти, либо мне помогает гугл. Тщательно читайте маны по тем командам и конфигурационным файлам, которые я упоминаю.

0xDEFEC8ED
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4823
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: Как узнать, какой процесс сжирает всю память?

Сообщение SLEDopit »

nesk писал(а):
30.11.2008 14:09
попробуйте так
ps -eo user,pcpu,pmem,pid,cmd | sort -r -n -k3 | head -10
у меня не на чем проверить
да, так больше на правду похоже :)

Код: Выделить всё

user:Autostart$ ps -eo user,pcpu,pmem,pid,cmd | sort -r -n -k3 | head -10
user      1.2 19.0 13861 /usr/lib/opera/9.62/opera -style keramik
root      1.9  5.3  2896 /usr/bin/X -br -nolisten tcp :0 vt7 -auth /var/run/xauth/A:0-E2aAUv
user      2.2  5.2  3056 ktorrent -session 106465620000122661228700000027600137_1227945442_362022
user      1.9  5.7  3057 amarokapp -session 106465620000122725306700000028950014_1227945442_382289
user      0.0  4.8  5693 /usr/lib/icedove/icedove-bin
lp        0.0  2.0 31615 gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE -sPAPERSIZE=a4 -g9920x7016 -r1200x600 -sDEVICE=pbmraw -dCOLORSCREEN -dMaxBitmap=500000000 -sOutputFile=|cat 1>&3 -_
mysql     0.0  1.7  2420 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --pid-file=/var/run/mysqld/mysqld.pid --skip-external-locking --port=3306 --socket=/var/run/mysqld/mysqld.sock
user      0.2  1.5  3037 kicker [kdeinit]
user      0.1  1.5  3054 yakuake -session 106465620000121683286000000025740086_1227945442_350314
user      0.0  1.5  3024 kded [kdeinit] --new-startup
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
Аватара пользователя
nesk
Сообщения: 2268
Статус: Линукссаксовец
ОС: MS Windows XP Home SP3
Контактная информация:

Re: Как узнать, какой процесс сжирает всю память?

Сообщение nesk »

а если в top нажать Shift+M то он будет сортировать процессы по использованию памяти
Внимание: У меня под рукой нет машины с Linux. Я не использую эту ОС. Ответы я даю либо по памяти, либо мне помогает гугл. Тщательно читайте маны по тем командам и конфигурационным файлам, которые я упоминаю.

0xDEFEC8ED
Спасибо сказали:
St33l
Сообщения: 25

Re: Как узнать, какой процесс сжирает всю память?

Сообщение St33l »

Спасибо за ответ, но это немного не то. Просто происходит какое-то событие, что некоторый процесс резко съедает ВСЮ память. Вот как-то бы отловить, кто это такой. А по этим командам я вижу только штатную работу.
Спасибо сказали:
Аватара пользователя
DarkLelik
Сообщения: 194
Статус: Развожу демонов
ОС: Fedora 16/ FreeBsd 8.0
Контактная информация:

Re: Как узнать, какой процесс сжирает всю память?

Сообщение DarkLelik »

St33l писал(а):
01.12.2008 09:11
Спасибо за ответ, но это немного не то. Просто происходит какое-то событие, что некоторый процесс резко съедает ВСЮ память. Вот как-то бы отловить, кто это такой. А по этим командам я вижу только штатную работу.

Ну так запустите top в момент отжирания памяти ...
Вам навредит не то, о чем вы не знаете, а то, о чем вы думаете, что знаете, а на самом деле не знаете.

FreeBsd 8.0 - Сервер
Fedora - 16 Desktop
Спасибо сказали:
St33l
Сообщения: 25

Re: Как узнать, какой процесс сжирает всю память?

Сообщение St33l »

тоже не прокатит, потому что это происходит в произвольный момент времени :(
Спасибо сказали:
Аватара пользователя
DarkLelik
Сообщения: 194
Статус: Развожу демонов
ОС: Fedora 16/ FreeBsd 8.0
Контактная информация:

Re: Как узнать, какой процесс сжирает всю память?

Сообщение DarkLelik »

А как Вы кстати определили , что кто то жрет оперативу ?
Вам навредит не то, о чем вы не знаете, а то, о чем вы думаете, что знаете, а на самом деле не знаете.

FreeBsd 8.0 - Сервер
Fedora - 16 Desktop
Спасибо сказали:
St33l
Сообщения: 25

Re: Как узнать, какой процесс сжирает всю память?

Сообщение St33l »

в логах светятся такие строки:
"kernel vm process killed XXX", где ХХХ - имя какого-нить процесса (мускул, апач, прокся, днс и т.д.)

погуглив, выяснил, что это от нехватки памяти. ну куда она может вся уйти вместе с кешем? явно что-то ее резко съедает.
Спасибо сказали:
GeAlex
Сообщения: 148

Re: Как узнать, какой процесс сжирает всю память?

Сообщение GeAlex »

Может просто для всего этого (мускул, апач, прокся, днс и т.д.) банально памяти не хватает для нормальной работы. В постое все нормально, а при обращению к службам расход памяти временно повышается. Тут обычно swap спасает если оперативной памяти в притык. У вас случайно не VDS?
Спасибо сказали:
Аватара пользователя
nesk
Сообщения: 2268
Статус: Линукссаксовец
ОС: MS Windows XP Home SP3
Контактная информация:

Re: Как узнать, какой процесс сжирает всю память?

Сообщение nesk »

может swap банально не подключен?
что выдает команда free?
Внимание: У меня под рукой нет машины с Linux. Я не использую эту ОС. Ответы я даю либо по памяти, либо мне помогает гугл. Тщательно читайте маны по тем командам и конфигурационным файлам, которые я упоминаю.

0xDEFEC8ED
Спасибо сказали:
St33l
Сообщения: 25

Re: Как узнать, какой процесс сжирает всю память?

Сообщение St33l »

[st33l@mti st33l]$ free
total used free shared buffers cached
Mem: 256468 247640 8828 0 75016 76884
-/+ buffers/cache: 95740 160728
Swap: 248968 42664 206304


Наверно своп маленький слишком? Система перешла по наследству, не знаю, зачем предыдущий админ сделал его таким скромным
Спасибо сказали:
Аватара пользователя
LZOmgi
Сообщения: 67
ОС: FreeBSD Current

Re: Как узнать, какой процесс сжирает всю память?

Сообщение LZOmgi »

Кстати это может быть и не мускул/апач, а какой то другой процесс занял много памяти (всю свободную), и в этот момент апач запросил выделение - вот ОС и убила апач.

Может периодически опрашивать объем свободной памяти, и если он ниже определенного уровня - писать в лог кто сколько ест? (Только я так не знаю как сделать :))
Спасибо сказали:
Ответить