Евгений Русаченко

Евгений Русаченко
Рейтинг
157
Регистрация
17.04.2013

Вот такой итог, есть процесс httpd, висит в TOP, при этом в apache status его нет.

Делаю strace -p PID:

poll([{fd=2098, events=POLLIN|POLLERR|POLLHUP}], 1, 6000) = 0 (Timeout)
rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
rt_sigaction(SIGCHLD, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
nanosleep({1, 0}, {1, 0})

Выходит примерно так:

http (1)

-> httpd (2)

--> httpd (3)

То есть главный порождает процесс, а еще один процесс порождает еще один.

Трассировка 3:

poll([{fd=2098, events=POLLIN|POLLERR|POLLHUP}], 1, 6000) = 0 (Timeout)
rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
rt_sigaction(SIGCHLD, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
nanosleep({1, 0}, {1, 0})

Трассировка 2:

wait4(PID_3 процесса,

Трассировка 1:

wait4(-1, 0x7fff31b2badc, WNOHANG|WSTOPPED, NULL) = 0
select(0, NULL, NULL, NULL, {1, 0}) = 0 (Timeout)

Судя по всему, такие процессы копятся, судя по TOP'у и складываются в SWAP. Как неактивные.

Удается повторить данную ситуацию уже. Процессы начинают залипать таким образом после graceful.

Видимо данный баг: https://issues.apache.org/bugzilla/show_bug.cgi?id=42829

Для mpm prefork он был исправлен, а вот для mpm-itk проблема осталась актуальной, также нашел подобные темы с аналогичными проблемами, но решения нет.

VirtualHoster:
6 Gbit/s это о чем? Скорость полета фантазий и мыслей в Вашей голове?

Именно SATA 3, как и написал участник tooseebee. Ранее использовались SATA 2 и старые диски, скорость была раза в три ниже. В феврале, после переезда, каждый из клиентов ощутил эту скорость.

---------- Добавлено 26.04.2013 в 11:49 ----------

НКВД.pro:

Я понимаю Вашу реакцию, Вы достаточно крупная компания и для вас этот сервер ничто и прибыль Ваша куда больше нашей.

Но когда продаешь фактически без наценок, то держать сервер, ресурсы которого будут простаивать, а оплачивать их надо - слишком роскошно для нас.

До этого, на всем протяжении использовались сервера с 4 GB RAM и SATA 2 дисками, но сервера изжил себя за 5 лет, особенно их диски. Стали сыпаться и мы оперативно переехали на новый, более мощный. Поверьте, клиенты это ощутили.

Сейчас сервера нагружены лишь 20-30% и нам их хватает.

ware:
Плохая примета создавать тему в пятницу :)

Для меня еще четверг, не спал еще. Посплю - будет пятница :)

bugsmoran:
Вот никогда не занимался троллингом новых хостингов, но тариф на 10 сайтов за 7 рублей в месяц (при оплате за год) - это как вообще? 70 копеек за сайт? Вне законов физики?

Указана стоимость в месяц при оплате за год. За год выходит 84 рубля. Тариф подходит для мелких сайтов визиток. Что-то большее на него не поставить.

---------- Добавлено 26.04.2013 в 03:12 ----------

bugsmoran:
Вот никогда не занимался троллингом новых хостингов, но тариф на 10 сайтов за 7 рублей в месяц (при оплате за год) - это как вообще? 70 копеек за сайт? Вне законов физики? Цена в рамках погрешности :) Впервые вижу, чтобы бесплатный хостинг выдавали за платный.

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

Самый популярный тариф у нас на 2 гб, но после переезда narod.ru на платформу ucoz'а, пошел огромный поток пользователей именно на эти маленькие тарифы. У них статические сайты без нагрузки и им это вполне подходит + некоторым интересно экспериментировать с автоматической установкой систем на сайты.

Andreyka:
Если ничего не помогает - обратитесь к специалисту

Нынче такие специалисты пошли, что кроме как поднять LAMP ничего не умеют. Если можете посоветовать кого-то конкретного, то буду рад.

---------- Добавлено 25.04.2013 в 13:33 ----------

Pilat:
Возможно, надо скрипт чуть поправить для учёта особенностей Вашего ядра. Может быть, в /proc не совсем в том же формате данные, попробуйте посмотреть источник скрипта http://northernmost.org/blog/find-out-what-is-using-your-swap/ - там такие вопросы возникают. Скрипт читает proc и выводит по каждому процессу занятость в свопе. А вообще Андрейка намекает правильно - надо специалиста искать, если не получается самому.

Спасибо, вечером сегодня посмотрю. Пока что, вчера переустановил Apache - вроде полегчало. Если дней 7 проработает нормально и SWAP не будет расти, значит просто криво встал Apache.

Pilat:
удалено автором

Да, я смотрел данную тему. Приведенные программки ничего не выводят:

Overall swap used: 0 kB
========================================
kB pid name
========================================

На сколько я понимаю, они должны выводить непосредственно те процессы, которые активно сидят в SWAP'е.

Andreyka:
Попробуйте отключить своп вообще
И проверьте что жрет память

Особо ничего не менялось. SWAP я подключил после появления проблемы, "мало ли, памяти не хватает".

Можно попробовать отключить еще раз, но как при этом выявлять, что кушает память? Память есть в этом случае, просто она отведена под cached.

Pilat:
Тут что-то непонятное - swap не должен быть заполнен до конца, никаких таких редкоиспользуемых страниц ровно 4 гигабйта у apache+nginx не бывает (обычно). Разве что плодятся мёртвые процессы и складываются в своп? Или у Mysql какие-то нетипичные параметры. Попробуйте выводить по крону список процессов, причём полный (не как в Вашем листинге), либо поставить zabbix (на соседнюю VDS) и помониторить раз в 30 секунд основные параметры.

Проблема актуальна, если не перезагружать Apache начинает что-то попадать в SWAP, причем это "что-то" просто там лежит и не используется. Памяти свободной много при этом, вся отдана под дисковый кеш, но если при этом SWAP заполнится на 100%, то сервер падает с OOM Killer, хотя cached памяти 9 гб (как на скриншоте), Linux её просто не отдает программам.

Сейчас наблюдаю такую картинку, что 1 день бывает проработает нормально, потом начинает расти SWAP, постепенно, по чуть-чуть. Мертвых процессов Apache нет, колеблятся всегда от 5 до 20 максимум, зависит от нагрузки на сервер.

Параметры Apache такие:

StartServers 5
MinSpareServers 5
MaxSpareServers 10
ServerLimit 64
MaxClients 64
MaxRequestsPerChild 1000

RLimitMEM 8589934592
RLimitCPU 240

Проблема вряд ли связана с MySQL, настройки стандартные, подняты буферы, кеши, такая же конфигурация, один в один на соседнем контейнере KVM - работает исправно.

Apache ставился Cpanel через EasyApache с модулем MPM-ITK, грешу что что-то там не так. Планирую пересобрать ручками и понаблюдать как будет работать, если всё OK, то просто заменить Apache на свой и всё.

eis:
ТС не указал главного - какой планируемый онлайн ожидается.

Если проект приватный, как выше сказали, то тут и малобюджетным вариантом можно обойтись.

Да, согласен. Я о таких вещах просто не задумываюсь, сразу знаю, что мне надо под проект и конкретными вещами интересуюсь. Поэтому и говорил выше, что вполне может хватить.

---------- Добавлено 21.04.2013 в 22:42 ----------

voltamper:
для начала 200
публичный

А ранее занимались L2? Был ли опыт запуска? Если не было, смотрите в сторону VPS / VDS. Если опыт был и точно метите на 200+, то смотрите в сторону выделенных серверов.

poiuty:
На openvz все хорошо с памятью.

Разве? Попробуйте зарезервировать приложению 100 гб памяти на виртуальном сервере с OpenVZ. И проделайте аналогичное на другой среде, например KVM (работаю сейчас с ней).

В виртуальной среде OpenVZ другая политика работы с памятью. Разница в том, что в KVM приложения могут резервировать себе памяти сколько угодно, но использовать сколько надо. В OpenVZ подсчет ресурсов идет по зарезерированной памяти, а не по использованной.

Всего: 1129