LINUX.ORG.RU
ФорумAdmin

Освободить память на VDS


0

1

Здравствуйте.

Есть у меня VDS с 512MB памяти. Повесил на него сайт с небольшой посещаемостью. В качестве панели управления выбрал и установил ehcp. Где-то неделю все было нормально, однако сегодня по какой-то причине сайт начал падать с ошибкой cannot allocate memory. Зашел в панель управления, действительно, вся память оказалась забита. Попробовал глянуть top, получил тот же cannot allocate memory. Попробовал перезагрузить сервер, стало еще хуже, не запускается ни Apache, ни MySQL, память вся забита, в консоль могу попасть раза с 10-го.

Вопрос: как выяснить, что именно сжирает память и прибить? top не могу запустить по той же самой причине нехватки памяти.

PS Заранее прошу прощения за глупый вопрос, просто раздела «Для новичков» не нашел. Заранее огромное спасибо!

UPD конечно же, прошу прощения, ОС: Ubuntu 10.10 32 bit, apache2, mysql, bind - то, что точно запущено, и что нужно.

настроить apache и mysql на предмет использования памяти. Если не стартует ни тот, ни другой, смотрите ps -aux

vladislav ★★ ()
Ответ на: комментарий от vladislav

В том то и дело, что я с трудом в консоль попадаю, и даже не могу остановить тот же apache для разгрузки памяти.

entered into CT 515 -bash: xmalloc: ../../bash/builtins/evalfile.c:157: cannot allocate 1954 bytes (40960 bytes alloca ted) exited from CT 515

Vilgelm ()
Ответ на: комментарий от Vilgelm

И так, смог остановить apache и mysql, теперь 397.51 MB of 512 MB used / 114.49 MB free. Всеравно что-то активно поедает память, по всей видимости

Vilgelm ()
Ответ на: комментарий от papochka
 RSS CMD
  344 vzctl: pts/0
  356 /usr/sbin/courierlogger -pid=/var/run/courier/pop3d-ssl.pid -start -name=pop3d-ssl /usr/sbin
/couriertcpd -address=0 -maxprocs=40 -maxperip=4 -nodnslookup -noidentlookup 995 /usr/bin/couriert
ls -server -tcpd /usr/lib/courier/courier/courierpop3login /usr/lib/courier/courier/courierpop3d M
aildir
  360 /usr/sbin/courierlogger -pid=/var/run/courier/imapd.pid -start -name=imapd /usr/sbin/courier
tcpd -address=0 -maxprocs=40 -maxperip=20 -nodnslookup -noidentlookup 143 /usr/lib/courier/courier
/imaplogin /usr/bin/imapd Maildir
  360 /usr/sbin/courierlogger -pid=/var/run/courier/pop3d.pid -start -name=pop3d /usr/sbin/courier
tcpd -maxprocs=40 -maxperip=4 -nodnslookup -noidentlookup -address=0 110 /usr/lib/courier/courier/
courierpop3login /usr/lib/courier/courier/courierpop3d Maildir
  364 /usr/sbin/courierlogger -pid=/var/run/courier/imapd-ssl.pid -start -name=imapd-ssl /usr/sbin
/couriertcpd -address=0 -maxprocs=40 -maxperip=20 -nodnslookup -noidentlookup 993 /usr/bin/courier
tls -server -tcpd /usr/lib/courier/courier/imaplogin /usr/bin/imapd Maildir
  384 /usr/lib/courier/courier-authlib/authdaemond
  384 /usr/lib/courier/courier-authlib/authdaemond
  384 /usr/lib/courier/courier-authlib/authdaemond
  384 /usr/lib/courier/courier-authlib/authdaemond
  384 /usr/lib/courier/courier-authlib/authdaemond
 436 /usr/sbin/saslauthd -a pam -m /var/spool/postfix/var/run/saslauthd -r
  436 /usr/sbin/saslauthd -a pam -m /var/spool/postfix/var/run/saslauthd -r
  436 /usr/sbin/saslauthd -a pam -m /var/spool/postfix/var/run/saslauthd -r
  440 /usr/sbin/saslauthd -a pam -m /var/spool/postfix/var/run/saslauthd -r
  440 sleep 10
  468 /usr/sbin/courierlogger -pid=/var/run/courier/authdaemon/pid -start /usr/lib/courier/courier
-authlib/authdaemond
  636 /usr/sbin/couriertcpd -address=0 -maxprocs=40 -maxperip=20 -nodnslookup -noidentlookup 143 /
usr/lib/courier/courier/imaplogin /usr/bin/imapd Maildir
  640 /usr/sbin/couriertcpd -address=0 -maxprocs=40 -maxperip=20 -nodnslookup -noidentlookup 993 /
usr/bin/couriertls -server -tcpd /usr/lib/courier/courier/imaplogin /usr/bin/imapd Maildir
  640 /usr/sbin/couriertcpd -address=0 -maxprocs=40 -maxperip=4 -nodnslookup -noidentlookup 995 /u
sr/bin/couriertls -server -tcpd /usr/lib/courier/courier/courierpop3login /usr/lib/courier/courier
/courierpop3d Maildir
  640 /usr/sbin/couriertcpd -maxprocs=40 -maxperip=4 -nodnslookup -noidentlookup -address=0 110 /u
sr/lib/courier/courier/courierpop3login /usr/lib/courier/courier/courierpop3d Maildir
  700 sort -n
  708 /sbin/syslogd -u syslog
  764 ps ax -o rss,cmd
  796 /usr/sbin/saslauthd -a pam -m /var/spool/postfix/var/run/saslauthd -r
  888 /usr/sbin/xinetd -pidfile /var/run/xinetd.pid -stayalive -inetd_compat -inetd_ipv6
  888 cron
 1036 /usr/sbin/vsftpd
 1164 /usr/lib/courier/courier-authlib/authdaemond
 1192 /usr/bin/freshclam -d --quiet
 1292 /bin/bash /var/www/new/ehcp/ehcpdaemon2.sh
 1456 init
 1692 -bash
 1780 pickup -l -t fifo -u -c
 1784 trivial-rewrite -n rewrite -t unix -u -c
 1832 /usr/lib/postfix/master
 1900 qmgr -l -t fifo -u
 2216 /usr/sbin/sshd -D
 2472 proxymap -t unix -u
 2640 tlsmgr -l -t unix -u -c
 4436 /usr/bin/perl -wT /usr/sbin/pop-before-smtp --daemon=/var/run/pop-before-smtp.pid
 8720 /usr/sbin/postgrey --pidfile=/var/run/postgrey.pid --daemonize --inet=10023
10188 /usr/sbin/php5-fpm --fpm-config /etc/php5/fpm/main.conf
10188 /usr/sbin/php5-fpm --fpm-config /etc/php5/fpm/main.conf
10188 /usr/sbin/php5-fpm --fpm-config /etc/php5/fpm/main.conf
10188 /usr/sbin/php5-fpm --fpm-config /etc/php5/fpm/main.conf
10188 /usr/sbin/php5-fpm --fpm-config /etc/php5/fpm/main.conf
10188 /usr/sbin/php5-fpm --fpm-config /etc/php5/fpm/main.conf
10192 /usr/sbin/php5-fpm --fpm-config /etc/php5/fpm/main.conf
10192 /usr/sbin/php5-fpm --fpm-config /etc/php5/fpm/main.conf
10192 /usr/sbin/php5-fpm --fpm-config /etc/php5/fpm/main.conf
10192 /usr/sbin/php5-fpm --fpm-config /etc/php5/fpm/main.conf
10192 /usr/sbin/php5-fpm --fpm-config /etc/php5/fpm/main.conf
10192 /usr/sbin/php5-fpm --fpm-config /etc/php5/fpm/main.conf
10192 /usr/sbin/php5-fpm --fpm-config /etc/php5/fpm/main.conf
10192 /usr/sbin/php5-fpm --fpm-config /etc/php5/fpm/main.conf
10192 /usr/sbin/php5-fpm --fpm-config /etc/php5/fpm/main.conf
10984 /usr/sbin/named -u bind
11136 /usr/sbin/php5-fpm --fpm-config /etc/php5/fpm/main.conf
18392 /usr/sbin/mysqld
Vilgelm ()
Ответ на: комментарий от Komintern

Вот что выдает htop:

  1  [                                   0.0%]     Tasks: 62 total, 1 running
  2  [                                   0.0%]     Load average: 0.06 0.03 0.01
  Mem[||||||||||||||||||||||||||||||394/512MB]     Uptime: 00:19:38
  Swp[                                  0/0MB]

  PID USER     PRI  NI  VIRT   RES   SHR S CPU% MEM%   TIME+  Command
20289 root      15   0  7820  4436  1652 S  0.0  0.8  0:01.10 /usr/bin/perl -wT /usr/sbin/pop-befo
20368 root      15   0  5820  1808  1440 S  0.0  0.3  0:00.00 /usr/lib/postfix/master
20369 postfix   15   0  5876  1848  1468 S  0.0  0.4  0:00.00 qmgr -l -t fifo -u
20370 postfix   15   0  5832  1784  1416 S  0.0  0.3  0:00.00 pickup -l -t fifo -u -c
20392 root      18   0  7844   796   412 S  0.0  0.2  0:00.00 /usr/sbin/saslauthd -a pam -m /var/s
20397 root      18   0  7844   440    56 S  0.0  0.1  0:00.00 /usr/sbin/saslauthd -a pam -m /var/s
20398 root      18   0  7844   436    52 S  0.0  0.1  0:00.00 /usr/sbin/saslauthd -a pam -m /var/s
20399 root      18   0  7844   436    52 S  0.0  0.1  0:00.00 /usr/sbin/saslauthd -a pam -m /var/s
20400 root      18   0  7844   436    52 S  0.0  0.1  0:00.00 /usr/sbin/saslauthd -a pam -m /var/s
20436 root      23   0  2512   884   708 S  0.0  0.2  0:00.00 /usr/sbin/xinetd -pidfile /var/run/x
21879 root      15   0  2928  1288  1092 S  0.0  0.2  0:00.00 /bin/bash /var/www/new/ehcp/ehcpdaem
22112 root      15   0 11212   348   224 S  0.0  0.1  0:00.00 vzctl: pts/0
22113 root      15   0  3048  1692  1364 S  0.0  0.3  0:00.00 -bash
22179 root      15   0 71164 23444  9504 S  0.0  4.5  0:00.08 php index.php daemon
22316 postfix   15   0  5920  1876  1492 S  0.0  0.4  0:00.00 cleanup -z -t unix -u -c
22317 postfix   15   0  8200  2264  1768 S  0.0  0.4  0:00.00 proxymap -t unix -u
22318 postfix   18   0  5844  1780  1424 S  0.0  0.3  0:00.00 trivial-rewrite -n rewrite -t unix -
23643 root      15   0 11212   344   224 S  0.0  0.1  0:00.00 vzctl: pts/1
23644 root      31  14  3048  1688  1364 S  0.0  0.3  0:00.00 -bash

Не подскажите, что такое php index.php daemon, вроде как он больше всего жрет

Vilgelm ()
Ответ на: комментарий от Vilgelm

>Не подскажите, что такое php index.php daemon, вроде как он больше всего жрет

PHP скрипт. По-моему, кого-то поимели.

однако сегодня по какой-то причине сайт начал падать с ошибкой cannot allocate memory.

А как же своп?

router ★★★★★ ()
Ответ на: комментарий от Vilgelm

while : ; do killall php; sleep 1; done

можно без sleep

Кстати, у тебя есть доступ к консоли? Грузись с init=/bin/bash и убивай всё, что косо посмотрит

router ★★★★★ ()
Ответ на: комментарий от Vilgelm

>22179 root 15 0 71164 23444 9504 S 0.0 4.5 0:00.08 php index.php daemon

ls -ld /proc/22179/cwd

В каталоге файл index.php

router ★★★★★ ()
Ответ на: комментарий от Vilgelm

пхп от рута? даэтож хакеры! короче, напиши в сапорт конторы где берешь впс. обьясни ситуацию. они на физической машине найдут этот процесс, прибьют его и удалят запускаемый скрипт. не ты один такой. ну а затем смотри логи и ищи дыры.

Komintern ★★★★★ ()

в сделать поменьше /etc/php5/fpm/main.conf воркеров, например

pm = dynamic
pm.max_children = 4
pm.start_servers = 1
pm.min_spare_servers = 1
pm.max_spare_servers = 1

удолить апач, поставить nginx. ибо и так fpm

также можно попробовать поубавить размеры в /etc/mysql/my.cnf (или где-то там)

anonymous ()
Ответ на: комментарий от Komintern

Да там проблемка, саппорта как бы нету, точнее в мой ТП он не включен. Но попробуем.

Кстати, не подскажите что им написать?

Вот так пойдет:

Hello.

Today I found, that the memory of my VPS is clogged. I start htop and found, that some php process (php index.php daemon) executed from root. I think that is not normal, may be it's occurs becouse hacking attempt or something else. Can you solve it?

Thanks in advance.

Сорри за мой английский, может кто сможет исправить ошибки в тексте, а то они сами голландцы, не поймут меня еще поди :)

Vilgelm ()
Ответ на: комментарий от Vilgelm

как я и думал, ehcpdaemon2.sh

#!/bin/bash
# This small shell is written to re-run php based daemon in case of failure.. 
# because php based daemon quits sometime ocasionally or un-expectedly...

echo "running ehcp daemon in shell background..."

while true
do
cd /var/www/new/ehcp
php index.php daemon
sleep 10
done

anonymous ()
Ответ на: комментарий от anonymous

Кстати, да. Остановил ehcp, процесс исчез.

Где смотреть sh скрипт не знаю, честно говоря, сталкиваюсь с консолью второй раз в жизни (первый поставил ehcp).

Also ehcp - это бесплатный аналог cpanel.

Vilgelm ()
Ответ на: комментарий от Vilgelm

тут еще зависит на чем у тебя виртуализация. в фирме где я работаю предоставляется впс на патченых джейлах freebsd и на openvz. во всяческих xen-ах и прочих все может быть совсем и не так просто. но в целом они поймут. напиши еще что i got out of memory error, типа пытался что-то сам сделать и не смог. если они смогут предоставить тебе некое подобие IP KVM - тогда загрузись с init=/bin/sh и почисть систему от г*вна.

Komintern ★★★★★ ()
Ответ на: комментарий от anonymous

ngix стоит, правда при попытке его запуска ругается на конфигурацию (syntax error на apachehcp.conf:252). Насколько я понял, неудивительно, ибо он там ищет ; или }, что характерно для его конфига, а не для апашевского. Впрочем, пробовал добавить } или ;, начинает ругаться на незивестные директивы. Настраивал не сам, все было автоматом сделано ehcp при установке.

Vilgelm ()
Ответ на: комментарий от Vilgelm

> Also ehcp - это бесплатный аналог cpanel.

также как рука - бесплатный аналог девушки. это у*банство чистой воды. если хочется бесплатную нормальную панель - то лучше уж froxlor поставить.

Komintern ★★★★★ ()
Ответ на: комментарий от Komintern

Честно говоря понятия не имею, брал тут (prefiber.nl), когда у них шел промо, т.е. я за VPS плачу всего 2 евро в месяц. Брал под не очень серьезный проект, посещалка всего 50 уников в сутки. С shared хостинга пришлось перенести, ибо ругались на большую нагрузку на проц (типа JokerBoard у нас хостить нелья). На VPS никакой нагрузки на проц практически нет, а вот проблема с памятью есть.

Сейчас попробую запустить apache и mysql без ehcp, может будет работать... надеюсь...

Vilgelm ()
Ответ на: комментарий от Komintern

Честно говоря немного погуглив нашел только ehcp. Спасибо за совет.

Впрочем, мне кажется, можно саму панель и не запускать, как бы я все уже настроил, а текущее обслуживание можно и по ftp делать.

Vilgelm ()
Ответ на: комментарий от Vilgelm

Apache запустился, а вот /etc/init.d/mysql start просто повис. Rather than invoking init scripts through /etc/init.d, use the service(8) utility, e.g. service mysql start

Since the script you are attempting to invoke has been converted to an Upstart job, you may also use the start(8) utility, e.g. start mysql

Плохо...

Vilgelm ()
Ответ на: комментарий от Vilgelm

И так, выяснил что жрало память: группа процессов с названием usr/sbin/php5-fpm --fpm config /etc/php5/fpm/main.conf

Осталось выяснить что это такое и как с ним бороться.

Also когда завершил их, сайт стал работать нормально

Vilgelm ()

Ограничь количество одновременно запускаемых процессов php на будущее. Поможет держать расход памяти в рамках. Ещё можно в мускуле выключить innodb, если нет необходимости. Я как-то этими нехитрыми действиями впихнул мускуло-похапешный сайт в стометровую VPS, да оно ещё и работало с приемлемой скоростью :)

const86 ★★★★★ ()
Ответ на: комментарий от const86

Ага, сейчас займусь. Хотелось бы еще знать что за скрипт вызывал проблему и какого он загружается вместе с ОС (если сейчас ребутнуть VPS проблема повториться).

Всем огромное спасибо за советы и участие!

Vilgelm ()

В качестве панели управления выбрал и установил ehcp.

очень зря. у меня на ней серваки ломали раз 10 точно.

Попробовал глянуть top, получил тот же cannot allocate memory

пинай хостера чтобы ребутнул впс. ей ресурсов не хватает.

зы: именно по этой причине не стоит покупать впски на openvz, оверселл на лицо.

tazhate ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.