Течь Апачи с ПХП

440hz

Guest
Течь Апачи с ПХП

Суть проблемы такая:
1. Стоит апач с ПХП. Висит один сайт с посещением 30000 страниц в день (www.chance.ru). База MySQL и все такое стандартное.
2. Так вот. Апач потихоньку "разрастается" по памяти от 5-6 до 20 метров, т.е. не освобождается некоторая память, используемая в скриптах.
3. Проблему удалось немного решить делая вызов

unset($GLOBALS);

в конце каждого скрипта, но это не есть хорошо, хотя течь стало намного меньше.

если кто сталкивался - отпишитесь.

p.s. все переменные освобождаются unset'ом и mysql_free_result().
 

Demiurg

Guest
Версии ос, php , апапча сказать не забыл ?
 

Mammoth

Guest
Апач потихоньку "разрастается" по памяти от 5-6 до 20 метров, т.е. не освобождается некоторая память, используемая в скриптах.
А поподробнее - можно? Что значит "разрастается"? Как это проявляется?
 

tony2001

TeaM PHPClub
Mammoth:
память жрет, что не ясно ?

440hz:
менять версии пробовал ?
на bugs.php.net искал ?
 

Mammoth

Guest
tony2001:
Если можешь - поясни фразу, которую я отметил в предыдущем посте. Для меня она непонятна.
Например, что означает "от 5-6 до 20 метров"? То, что при каждом выполнении скрипта ОЗУ уменьшается на такой размер? Или другое?
 

440hz

Guest
ну вот так:

1246 www 2 0 6012K 4592K sbwait 0 8:22 0.68% 0.68% httpd
51241 www 2 0 6616K 5200K sbwait 0 9:31 0.59% 0.59% httpd
51247 www 2 0 25744K 24340K accept 1 8:55 0.59% 0.59% httpd
51230 www 2 0 6688K 5264K accept 1 8:42 0.59% 0.59% httpd


как видно один апач вырос до 24 метров, гад ...

версии менял, систему переставлял - НЕ помогает. Не понятно почеу такое происходит? Почему неосвобождает память? Ведь должен же !!!!
 

tony2001

TeaM PHPClub
висит демон.
его потомки обрабатывают запросы.
демон занимает кусок памяти и этот кусок памяти постепенно растет, а так не должно быть.
 

Mammoth

Guest
440hz:

1. Надо понимать, ты привел результат работы команды ps?
2. Ничего нет страшного. Все в норме.
 

440hz

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

второй вопрос был таким:
никто не сталкивался с таким или это так и надо?
 

440hz

Guest
1. Надо понимать, ты привел результат работы команды ps?

нет. это "top"
 

si

Administrator
Сколько я знаю РНР всегда так и было, я забил на это и поставил MaxRequestsPerChild 1000 (можно и 100 поставить)
 

440hz

Guest
Автор оригинала: si
Сколько я знаю РНР всегда так и было, я забил на это и поставил MaxRequestsPerChild 1000 (можно и 100 поставить)
я бы и сам забил, но ведь хочется нормальной работы. когда все апачи (штук 30) набирают по 20 метров swap переполняется, сервер начинает жутко тормозить, юзера орут, шеф мечет. спасает только перезапуск, но ведь _хочется_ нормально работать, т.е. настроить и не дергать сервер каженный день ...
 

Mammoth

Guest
440hz:

Память не набирается. Можешь убедиться в том, что память, занимаемая процессами апача, остается одинаковой на всем протяжении работы апача (плюс - минус какое-то определнное кол-во)...
Кстати, если ты не заметил, в приведенном тобой результате работы top-а, у каждого процесса имеется статус. У первых двух статус отличный от того, который тебя "пугает". Отличие в кол-ве памяти между третьим и четвертым процессами может быть в том, что они выполняют различную работу...
 

chulim

Новичок
эх.... у меня похожая беда была с апачем, только под Win
у тебя растет потихоньку, а у меня доходил до 15 метров и зависал намертво...:(

Хотя новых версий попробовать пока не удалсь...
 

si

Administrator
бы и сам забил, но ведь хочется нормальной работы.
Погда src в зубы и в поиски memory leak может года через 2 все их найдете

А на это что скажите ?

Код:
13859 httpd      9   0 22820   72  22M 19652 S     0.9  1.0   0:12 httpd-backend
 3460 httpd      9   0 20156   72  19M 16924 S     0.1  0.9   0:12 httpd-backend
 4225 httpd      9   0 19816   72  19M 16692 S     0.1  0.9   0:06 httpd-backend
31981 httpd      9   0 17948   72  17M 14784 S     0.1  0.8   0:06 httpd-backend
31616 httpd      9   0 17540   72  17M 14408 S     0.1  0.8   0:05 httpd-backend
 9986 httpd      9   0 16744   72  16M 13668 S     0.5  0.8   0:04 httpd-backend
27520 httpd      9   0 15816   72  15M 12736 S     0.0  0.7   0:04 httpd-backend
 4950 httpd      9   0 11888   72  11M 10352 S     0.1  0.5   0:01 httpd-backend
20236 httpd      9   0 11524   72  11M  8708 S     0.9  0.5   0:01 httpd-backend
 

440hz

Guest
видно не понятен вопрос ... повторяю:

происходт следующее:
1. Выполняется 1 скрипт
2. Апач его обрабатывает и память остается на месте (5-6)
3. Выполняется 2 скрипт
4. Апач его обрабаотывает и ПАМЯТЬ вырастает до 20 и НЕ освобождается после выполнения скрипта, т.е. скрипт отработал, а память, занятая под его выполнение НЕ ОСВОБОДИЛАСЬ.
5 и последнее ... если запустить 10 раз 2 скрипт память вырастет на 200 метров. улавливаете ?

если тема интересная могу запостить скрипты (15-20 строк) и состояние системы/памяти
 

440hz

Guest
Автор оригинала: si
Погда src в зубы и в поиски memory leak может года через 2 все их найдете


А на это что скажите ?

Код:
13859 httpd      9   0 22820   72  22M 19652 S     0.9  1.0   0:12 httpd-backend
вот у меня так же и было. спасло то, что в конце каждого скрипта прописал
unset($GLOBALS);
апач успокоился с 20 до 6-7 метров при 30-35 потомках. это победили ...

но все равно бывают случаи когда вырастает и не освобождает ... гад ...
 

440hz

Guest
Автор оригинала: chulim
эх.... у меня похожая беда была с апачем, только под Win
у тебя растет потихоньку, а у меня доходил до 15 метров и зависал намертво...:(

Хотя новых версий попробовать пока не удалсь...
точно ... под виндой вообще беда ... у меня вырастал до 200 метров и система уходила в глубокий обмен с кэшем ... спасал перезапуск
 
Сверху