FastNetMon

пятница, 19 марта 2010 г.

Перегрузка OpenVZ ноды

Update 3/07/14:
Друзья! Эта страница почему-то пользуется дикой популярностью! Но ничего полезного на ней Вы не найдете. Просто потому, что эта проблема как таковая была вызвана железом/сетевой перегрузкой (все вместе) и не имела ни малейшего отношения к OpenVZ. А если у Вас траблы с OpenVZ, то лучше заходите на serverfault.com или bugzilla.openvz.org, если уверены, что баг имеет место быть.

Сегодня случилась прямо таки мистическая ситуация, до небес взлетел la при нормальной нагрузке на диск (почти нулевой io wait).

top - 13:08:25 up 135 days, 19:29,  1 user,  load average: 126.51, 133.37, 128.65
Tasks: 1347 total,   5 running, 1341 sleeping,   0 stopped,   1 zombie
Cpu(s): 10.0%us, 10.0%sy,  0.0%ni, 80.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:  12264520k total, 11349032k used,   915488k free,   422904k buffers
Swap:  4200888k total,     6972k used,  4193916k free,  4878936k cached
iostat
Linux 2.6.18-128.2.1.el5.028stab064.7 (domain.ru) 03/19/10

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          5.12    0.01    2.28    8.02    0.00   84.57

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda              51.63       105.36      1672.13 1236343602 19620913768
sda1              0.00         0.02         0.10     264472    1218016
sda2              0.00         0.00         0.01        880     116488
sda3             51.63       105.34      1672.02 1236078114 19619579264
sdb              52.18       114.53      1672.13 1343937770 19620913944
sdb1              0.00         0.02         0.10     273864    1218016
sdb2              0.00         0.00         0.01       1026     116488
sdb3             52.18       114.51      1672.02 1343662744 19619579440
md2             217.73       219.85      1659.34 2579740618 19470785496
md1               0.00         0.00         0.00       1602      38920
md0               0.02         0.05         0.09     537760    1079072


Как так?

А вот сегодня (14 апреля) еще одна бяка вылезла (причем, ban_log.py - это мой скрпит, который только читает лог файл как tail и делает редко вызовы iptables ):

top - 20:41:17 up 55 days, 11:50, 1 user, load average: 25.68, 19.27, 17.76
Tasks: 1128 total, 17 running, 1102 sleeping, 0 stopped, 9 zombie
Cpu(s): 15.0%us, 3.5%sy, 0.0%ni, 80.2%id, 0.6%wa, 0.0%hi, 0.7%si, 0.0%st
Mem: 12264520k total, 11928912k used, 335608k free, 460132k buffers
Swap: 4200888k total, 4812k used, 4196076k free, 6480140k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
30932 root 16 0 50564 6828 2692 S 51.2 0.1 18:54.03 ban_log.py
8850 27 15 0 331m 17m 5692 S 24.8 0.1 591:14.64 mysqld
10954 33 16 0 214m 20m 4296 S 11.9 0.2 7:00.65 apache2


А вот сейчас, 28 апреля еще одна радость довела ла до 250:

xxx: kmemsize 6857 23751127 67108864 67108864 0
lockedpages 0 4 256 256 0
privvmpages 0 871814 921600 1228800 0
shmpages 0 1153 21504 21504 0
dummy 0 0 0 0 0
numproc 0 256 256 256 6143
physpages 0 296914 0 2147483647 0
vmguarpages 0 0 307200 307200 0
oomguarpages 0 310244 307200 307200 0
numtcpsock 0 319 7000 7000 0
numflock 0 130 188 206 0
numpty 0 1 16 16 0
numsiginfo 0 256 256 256 0
tcpsndbuf 0 2987296 28672000 28672000 0
tcprcvbuf 0 3848612 28672000 28672000 0
othersockbuf 0 231088 1126080 2097152 0
dgramrcvbuf 0 34732 262144 262144 0
numothersock 0 230 7000 7000 0
dcachesize 0 694628 3409920 3624960 0
numfile 0 3172 7000 7000 0
dummy 0 0 0 0 0
dummy 0 0 0 0 0
dummy 0 0 0 0 0
numiptent 0 10 128 128 0


В логах же на VPS, породившем нагрузку следующее:

[Fri Mar 19 13:36:55 2010] [notice] mod_fcgid: process /var/www/paladiny/data/www/xxxx.php(30509) exit(server exited), terminated by calling exit(), return code: 0


И очень много раз:

cat error.log | grep 'terminated by calling exit' | wc -l
3968


А подозрения вот на это:
eAccelerator: shmmax should be at least 2MBPHP Warning: [eAccelerator] Can not create shared memory area in Unknown on line 0
PHP Fatal error: Unable to start eAccelerator module in Unknown on line 0
[Fri Mar 19 15:06:34 2010] [notice] mod_fcgid: call /var/www/xxxx.php with wrapper /var/www/paladiny/data/php-bin/php
[Fri Mar 19 15:06:34 2010] [notice] mod_fcgid: process /var/www/xxxxx/index.php(16382) exit(server exited), terminated by calling exit(), return code: 254


Проблема возникла как раз после установки eAccelerator. Только вопрос - почему ОВЗ отказал? От того, что была "тяжелая" fork bomb ? То есть процессы PHP грузили процессор но сразу же дохли и на их место создавались новые и все это при большой посещаемости.

Апдейт: ваще, подозрения, что начинает тупить резалка проца, когда идет очень частый рефорк процессов.

7 комментариев :

  1. Еще большая мистика заключается в том, что eaccelerator стоял там и до этого, утром он был заново собран из-за свалившейся в обновлениях новой сборки php.
    Т.е. фактически - изменений по сравнению с предыдущими днями ровным счетом ноль.

    ОтветитьУдалить
  2. Угу, вот и мы в догадках. Может воспроизвести получится на тестовых машинах, но маловероятно.

    ОтветитьУдалить
  3. во, такая же фигня.
    я даже могу вам воссоздать такую ошибку :)
    скрипт один есть, benchmark для одной cms

    вот он и валит

    ОтветитьУдалить
  4. Решение то нашли в итоге?

    ОтветитьУдалить
    Ответы
    1. Не-а :) Я думаю в тот раз было что-то не так с железом и мы просто не там искали траблу.

      Удалить
  5. Ну очень странно. Имею по сей день подобную проблему, но не с OpenVZ, а с LXC.
    Ключевой момент в LA и зависании сервера то, что внутри контейнера убивается мастер процесс и порождаются зомби. Стоит им появится система начинает безжалостно тормозить и в итоге все взрывается.
    Все ищу как это можно было бы вылечить :/

    ОтветитьУдалить
    Ответы
    1. Попробуйте макисмально детализированно описать проблему и послать репорт в рассылки ядра.

      Еще могу порекомендовать воткнуть sysdig и посмотреть, что творится с системой в этот момент. Это своего рода strace, но для всей аппаратной ноды.

      Удалить

Примечание. Отправлять комментарии могут только участники этого блога.