Как узнать, какой процесс сжирает всю память?
Модератор: SLEDopit
Как узнать, какой процесс сжирает всю память?
Проблема в следующем: какой-то процесс по непонятной причине начинает резко жрать оперативу. В результате чего происходит следующее:
"kernel vm process killed XXX", где ХХХ - имя какого-нить процесса (мускул, апач, прокся, днс и т.д.)
И так раз в неделю где-то.
Погуглил, пишут, что нужно увеличить память и найти этот процесс, но как...
"kernel vm process killed XXX", где ХХХ - имя какого-нить процесса (мускул, апач, прокся, днс и т.д.)
И так раз в неделю где-то.
Погуглил, пишут, что нужно увеличить память и найти этот процесс, но как...
Re: Как узнать, какой процесс сжирает всю память?
top - выодит список процессов, сортируя по количеству занимаемой памяти.St33l писал(а): ↑30.11.2008 13:36Проблема в следующем: какой-то процесс по непонятной причине начинает резко жрать оперативу. В результате чего происходит следующее:
"kernel vm process killed XXX", где ХХХ - имя какого-нить процесса (мускул, апач, прокся, днс и т.д.)
И так раз в неделю где-то.
Погуглил, пишут, что нужно увеличить память и найти этот процесс, но как...
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.
The more you believe you don't do mistakes, the more bugs are in your code.
Re: Как узнать, какой процесс сжирает всю память?
ps -eo user,pcpu,pmem,pid,cmd | sort -r -k3 | head -10
первые 10 самых жрущих память процессов
первые 10 самых жрущих память процессов
Без виндовза 3 года
Re: Как узнать, какой процесс сжирает всю память?
ну не знаю топ по моему удобней. только кстати оба варианта неправильно все показывают.
оперу надо на первой место.
Код: Выделить всё
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.
The more you believe you don't do mistakes, the more bugs are in your code.
Re: Как узнать, какой процесс сжирает всю память?
попробуйте так
ps -eo user,pcpu,pmem,pid,cmd | sort -r -n -k3 | head -10
у меня не на чем проверить
ps -eo user,pcpu,pmem,pid,cmd | sort -r -n -k3 | head -10
у меня не на чем проверить
Внимание: У меня под рукой нет машины с Linux. Я не использую эту ОС. Ответы я даю либо по памяти, либо мне помогает гугл. Тщательно читайте маны по тем командам и конфигурационным файлам, которые я упоминаю.
0xDEFEC8ED
0xDEFEC8ED
Re: Как узнать, какой процесс сжирает всю память?
да, так больше на правду похоже
Код: Выделить всё
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.
The more you believe you don't do mistakes, the more bugs are in your code.
Re: Как узнать, какой процесс сжирает всю память?
а если в top нажать Shift+M то он будет сортировать процессы по использованию памяти
Внимание: У меня под рукой нет машины с Linux. Я не использую эту ОС. Ответы я даю либо по памяти, либо мне помогает гугл. Тщательно читайте маны по тем командам и конфигурационным файлам, которые я упоминаю.
0xDEFEC8ED
0xDEFEC8ED
Re: Как узнать, какой процесс сжирает всю память?
Спасибо за ответ, но это немного не то. Просто происходит какое-то событие, что некоторый процесс резко съедает ВСЮ память. Вот как-то бы отловить, кто это такой. А по этим командам я вижу только штатную работу.
Re: Как узнать, какой процесс сжирает всю память?
Ну так запустите top в момент отжирания памяти ...
Вам навредит не то, о чем вы не знаете, а то, о чем вы думаете, что знаете, а на самом деле не знаете.
FreeBsd 8.0 - Сервер
Fedora - 16 Desktop
FreeBsd 8.0 - Сервер
Fedora - 16 Desktop
Re: Как узнать, какой процесс сжирает всю память?
тоже не прокатит, потому что это происходит в произвольный момент времени
Re: Как узнать, какой процесс сжирает всю память?
А как Вы кстати определили , что кто то жрет оперативу ?
Вам навредит не то, о чем вы не знаете, а то, о чем вы думаете, что знаете, а на самом деле не знаете.
FreeBsd 8.0 - Сервер
Fedora - 16 Desktop
FreeBsd 8.0 - Сервер
Fedora - 16 Desktop
Re: Как узнать, какой процесс сжирает всю память?
в логах светятся такие строки:
"kernel vm process killed XXX", где ХХХ - имя какого-нить процесса (мускул, апач, прокся, днс и т.д.)
погуглив, выяснил, что это от нехватки памяти. ну куда она может вся уйти вместе с кешем? явно что-то ее резко съедает.
"kernel vm process killed XXX", где ХХХ - имя какого-нить процесса (мускул, апач, прокся, днс и т.д.)
погуглив, выяснил, что это от нехватки памяти. ну куда она может вся уйти вместе с кешем? явно что-то ее резко съедает.
Re: Как узнать, какой процесс сжирает всю память?
Может просто для всего этого (мускул, апач, прокся, днс и т.д.) банально памяти не хватает для нормальной работы. В постое все нормально, а при обращению к службам расход памяти временно повышается. Тут обычно swap спасает если оперативной памяти в притык. У вас случайно не VDS?
Re: Как узнать, какой процесс сжирает всю память?
может swap банально не подключен?
что выдает команда free?
что выдает команда free?
Внимание: У меня под рукой нет машины с Linux. Я не использую эту ОС. Ответы я даю либо по памяти, либо мне помогает гугл. Тщательно читайте маны по тем командам и конфигурационным файлам, которые я упоминаю.
0xDEFEC8ED
0xDEFEC8ED
Re: Как узнать, какой процесс сжирает всю память?
[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
Наверно своп маленький слишком? Система перешла по наследству, не знаю, зачем предыдущий админ сделал его таким скромным
Re: Как узнать, какой процесс сжирает всю память?
Кстати это может быть и не мускул/апач, а какой то другой процесс занял много памяти (всю свободную), и в этот момент апач запросил выделение - вот ОС и убила апач.
Может периодически опрашивать объем свободной памяти, и если он ниже определенного уровня - писать в лог кто сколько ест? (Только я так не знаю как сделать )
Может периодически опрашивать объем свободной памяти, и если он ниже определенного уровня - писать в лог кто сколько ест? (Только я так не знаю как сделать )