Баг с утечкой памяти в CentOS 5

123 4
mstar
На сайте с 19.12.2005
Offline
133
6545

Сервер стал падать из-за нехватки памяти. Причем, сначала я думал, что ее физически не хватает (было 2Г), поэтому посносил весь доп софт и докупил еще 2Г. Остался работать только майскл и апач (пхп).

Вот пхпинфо о сервере: http://partmaster.com.ua/phpinfo.php

Сервер работает без особой нагрузки и в обычное время load average около 0,15-0,2

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

Вот картинка на сервере в момент падения:

Вот еще очень близкое описание бага http://bugs.centos.org/view.php?id=3093.

Может кто сталкивался и нашел решение данного бага или может дать дельный совет, к кому обратиться за решением.

Разработка сайтов (http://www.mstarproject.com/?action=tecdoc_mysql_site) - удобные веб приложения по разумной цене.
B
На сайте с 21.01.2009
Offline
31
#1

mysql+httpd+еще один процесс httpd сожрали все что только можно. При этом юзается сильно swap что создаёт большую нагрузку на диск.

Покажите конфиг апача, особенно его лимиты.

Апач стоит похоже из пакетов. Есть вариант попробовать его собрать самому, или yum update httpd если получится. Ну и соответственно php пересобрать.

PS я вообще не советую использовать апача и пхп из пакетов.

Услуги по удаленному администрированию серверов (/ru/forum/744675)
mstar
На сайте с 19.12.2005
Offline
133
#2
Bloodу:
mysql+httpd+еще один процесс httpd сожрали все что только можно. При этом юзается сильно swap что создаёт большую нагрузку на диск.

Покажите конфиг апача, особенно его лимиты.

Timeout 120

KeepAlive Off

<IfModule prefork.c>

StartServers 8

MinSpareServers 5

MaxSpareServers 20

ServerLimit 256

MaxClients 256

#MaxRequestsPerChild 4000 - это было при падении, уменьшение в 10 раз ничего не дало. сервер опять упал без нагрузки ночью

MaxRequestsPerChild 400

</IfModule>

<IfModule worker.c>

StartServers 2

MaxClients 150

MinSpareThreads 25

MaxSpareThreads 75

ThreadsPerChild 25

MaxRequestsPerChild 0

</IfModule>

Апач виноват в данном случае. Но до этого были падения от комитов в свн репозиторий и тоже ночью, когда никаких запросов (процентов 5 от обычного кол-ва) не было. Также падал от перегенерации индксов майсклем.

mstar добавил 20.03.2009 в 10:07

Bloodу:
PS я вообще не советую использовать апача и пхп из пакетов.

Если б можно было - я бы отключил апач на сервере. Виноват скорее всего не пхп или апач, а ядро и баг в нем с памятью. Я там привел линку с наиболее близкой версией ядра и аналогичной проблемой у человека.

N
На сайте с 06.05.2007
Offline
419
#3

это не утечка. просто начните использовать nginx и ограничьте число потомков в apache.

из пакетов, несмотря на поверья сисадминов крайнего севера.

Кнопка вызова админа ()
mstar
На сайте с 19.12.2005
Offline
133
#4
netwind:
это не утечка. просто начните использовать nginx и ограничьте число потомков в apache.
из пакетов, несмотря на поверья сисадминов крайнего севера.

ясно, спасибо за совет.

N
На сайте с 06.05.2007
Offline
419
#5

А хотя, что это там у вас httpd размером 1.3 ГБ? Это совсем не нормально. nginx немного облегчил бы, но не насовсем.

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

MaxRequestsPerChild можно тогда еще уменьшить.

B вообще, я смотрю, там все возможные модули апача. Шанс, что один из них глючит, вполне реален. mod_perl, mod_ssl, mod_mem_cache вам реально нужны?

Mr.Roman
На сайте с 15.09.2008
Offline
68
#6

Вот так впиши

<IfModule prefork.c>

StartServers 10

MinSpareServers 20

MaxSpareServers 50

MaxClients 200

MaxRequestsPerChild 50

</IfModule>

Полегчает.

Все чего здесь нет - лишнее, я проверял )).

Если хочешь еще больше уменьшить занятую память, то MaxRequestsPerChild 25, чтобы процессы апача чаще пересоздавались и очищали тем самым занятую память.

Кстати worker можешь закомментировать, его конфиг ненужен, т.к. у тебя используется prefork.

А вообще тебе надо ставить nginx и eAccelerator нагрузка снизится раз в 20, тогда и память ненужна будет лишняя (хватит 300мб на все про все).

С уважением, к адекватным людям.
mstar
На сайте с 19.12.2005
Offline
133
#7
netwind:
А хотя, что это там у вас httpd размером 1.3 ГБ? Это совсем не нормально. nginx немного облегчил бы, но не насовсем.
я бы попробовал отключить модули, если есть специфика, то лучше найти обходной путь и перевести глючащий функционал на cgi. Там память сразу освобождается. Может быть панель глючит.
MaxRequestsPerChild можно тогда еще уменьшить.

не, cgi не выход.

да и почему все уперлись именно в апач? Я же специально акцентировал внимание, что падал сервер не только из-за апача. К примеру томкет у нас там жил и валил, svnserve аналогично валил, mysql.

netwind:
B вообще, я смотрю, там все возможные модули апача. Шанс, что один из них глючит, вполне реален. mod_perl, mod_ssl, mod_mem_cache вам реально нужны?

mod_perl уже не нужен, багзилу снесли, отключу. mod_ssl, mod_mem_cache юзаем.

mstar
На сайте с 19.12.2005
Offline
133
#8
Mr.Roman:
А вообще тебе надо ставить nginx и eAccelerator нагрузка снизится раз в 20, тогда и память ненужна будет лишняя (хватит 300мб на все про все).

Ребята, ресурсов на сервере хватает с запасом на 5-10 кратный рост нагрузки. Даже когда нас парсят паралельно несколько человек - это никак не отражается на работе. Вот примерная картина обычной работы:

[ATTACH]31234[/ATTACH]

Проблема в том, что без всяких видимых причин при достаточном обхеме ресурсов вдруг процессы начинают жрать память и своп. Иногда после киляния мертвых процессов сервер оживает, но так бывает не всегда и к примеру сегодня с 4 до 8 лежал намертво. Кроме пинга инчего не работало.

Надеюсь, я подробно рассказал о проблеме. Еще надеюсь, что откат до предидущего релиза ядра решит проблему.

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

jpg top_normal.jpg
N
На сайте с 06.05.2007
Offline
419
#9

mstar, неважно что именно валится, но важно какой именно процесс потребляет память.

неужели любой произвольный ?

mod_mem_cache - возможно так и юзаете что пухнет.

B
На сайте с 21.01.2009
Offline
31
#10

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

В момент предПадения было бы хорошо увидеть статус апача. И процеслист мускула

123 4

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий