Друзья!
Так случилось, что мы перенесли один проект на Hetzner. И все работало нормально до вчерашнего дня. Вчера и сегодня падал сервис mysql и оживал только перезагрузкой, хотя на самом сервере запаса памяти было с лихвой.
Есть подозрение, что это произошло из-за одновременной обработки большого количества длительных скриптов. Может кто-нибудь помочь с настройкой сервера на обработку больших и множественных запросов? Или дайте, пожалуйста, ссылку на приличный мануал, а то даже не могу понять, куда рыть.

Tagged with →  

17 Responses to Друзья!

  1. Naref:

    Падать mysql из-за одновременной обработки не должен.
    Разве что отдельные потоки сегфолтятся из-за недостатка памяти.

    Сервер физический?

  2. Qeemo:

    Да, физический.
    Думала, может нужно настроить параметры типа ServerLimit, MaxClients, KeepAliveTimeout и т.д. Только не знаю, что и куда писать, чтобы mysql не валился.

  3. NagRain:

    Я может. В личку пжлст

  4. Xxxno:

    а в логах-то что?

  5. Qeemo:

    Прямо перед ошибкой одновременно запустились три скрипта:

    Dec 8 05:38:02 selestia /USR/SBIN/CRON[574]: (root) CMD (/usr/bin/php5 /var/www/monitoring/monitor3.php > /dev/null 2>&1)
    Dec 8 05:38:02 selestia /USR/SBIN/CRON[575]: (root) CMD (/usr/bin/php5 /var/www/monitoring/monitor8.php > /dev/null 2>&1)
    Dec 8 05:38:02 selestia /USR/SBIN/CRON[576]: (root) CMD (/usr/bin/php5 /var/www/monitoring/monitor13.php > /dev/null 2>&1)

    Потом несколько раз повторяется фрагменты типа таких:

    Dec 8 05:39:04 selestia kernel: [4111523.800925] ntpd invoked oom-killer: gfp_mask=0x201da, order=0, oom_adj=0
    Dec 8 05:39:04 selestia kernel: [4111523.800966] ntpd cpuset=/ mems_allowed=0
    Dec 8 05:39:04 selestia kernel: [4111523.801008] Pid: 1561, comm: ntpd Not tainted 2.6.32-5-amd64 #1
    Dec 8 05:39:04 selestia kernel: [4111523.801065] Call Trace:
    Dec 8 05:39:04 selestia kernel: [4111523.801097] []? oom_kill_process+0x7f/0x23f
    Dec 8 05:39:04 selestia kernel: [4111523.801132] []? __out_of_memory+0x12a/0x141
    Dec 8 05:39:04 selestia kernel: [4111523.801167] []? out_of_memory+0x140/0x172
    Dec 8 05:39:04 selestia kernel: [4111523.801202] []? __alloc_pages_nodemask+0x4ec/0x5fc

    Тут mysql перезапускается:

    Dec 8 05:39:04 selestia kernel: [4111523.829565] Out of memory: kill process 5420 (mysqld_safe) score 75116 or a child
    Dec 8 05:39:04 selestia kernel: [4111523.829617] Killed process 5534 (mysqld)
    Dec 8 05:39:05 selestia postfix/smtpd[601]: warning: database /etc/aliases.db is older than source file /etc/aliases
    Dec 8 05:39:06 selestia /USR/SBIN/CRON[615]: (root) CMD (/usr/bin/php5 /var/www/monitoring/monitor14.php > /dev/null 2>&1)
    Dec 8 05:39:06 selestia /USR/SBIN/CRON[614]: (root) CMD ( [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -type f -cmin +$(/usr/lib/php5/maxlifetime) -delete)

    Потом несколько дублей информации (не знаю почему). И останавливается все вот так:

    Dec 8 05:40:35 selestia kernel: [4111614.628482] Out of memory: kill process 28492 (php5) score 8042 or a child
    Dec 8 05:40:35 selestia kernel: [4111614.628517] Killed process 28492 (php5)
    Dec 8 05:40:35 selestia /USR/SBIN/CRON[28483]: (CRON) error (grandchild #28487 failed with exit status 137)
    Dec 8 05:40:37 selestia postfix/pickup[715]: C9E8D2C6731: uid=0 from=
    Dec 8 05:40:38 selestia postfix/proxymap[717]: warning: connect to mysql server 127.0.0.1: Can’t connect to MySQL server on ‘127.0.0.1’ (111)

    Сам лог лежит тут.

  6. Xxxno:

    ну то что он от недостатка памяти валится — это понятно.
    я бы тюнил запросы.
    но там, я смотрю вообще веселуха, php5 и apache2 тоже с плясками роняют чайлдов.

  7. Xxxno:

    ну и пытался паралеллить запросы, не валил их кучей.
    там так клево, что даже своп уходит в ноль — я такого не видел никогда.

  8. Qeemo:

    в смысле развести по времени больше? Или что делать-то?
    Запросы тюнить проблематично.
    Можно выставить больше памяти на их обработку? На сервере реальной памяти 8гб, виртуальной — 2. Неужели не хватает?

  9. Xxxno:

    ну раз даже своп свободный по нулям — это о чем-то должно говорить? 🙂
    Dec 8 05:40:35 selestia kernel: [4111614.602985] Free swap = 0kB
    Dec 8 05:40:35 selestia kernel: [4111614.603012] Total swap = 2096056kB
    Dec 8 05:40:35 selestia kernel: [4111614.628370] 2097136 pages RAM
    Dec 8 05:40:35 selestia kernel: [4111614.628400] 49431 pages reserved
    Dec 8 05:40:35 selestia kernel: [4111614.628428] 2253 pages shared
    Dec 8 05:40:35 selestia kernel: [4111614.628453] 2034153 pages non-shared
    Dec 8 05:40:35 selestia kernel: [4111614.628482] Out of memory: kill process 28492 (php5) score 8042 or a child

    И да, это виртуализация?

  10. Xxxno:

    это же апача параметры, а валится у тебя mysql

  11. Qeemo:

    ага, говорит, что нужно что-то делать. Только не понятно что. 🙁
    Что значит «виртуализация»? Если про сервер, то это дедик.

  12. Qeemo:

    дада, просто для примера привела.

  13. Naref:

    Да, нужно настроить. Нужно отказаться от ПО, имеющего параметры ServerLimit, MaxClients и KeepAliveTimeout.

  14. Xxxno:

    ой-вей, таки ее это не спасет от кучи запросов в базу, выжирающих память

  15. Qeemo:

    отказаться тогда в пользу чего конкретно?

  16. HneZZ:

    пиши в личку. поговорим

Добавить комментарий