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

440hz

Guest
Автор оригинала: AnToXa
эту фразу объясни!!!
сначала я зачитываю лог в массив и потом прокручиваю его циклом и парсю.

тогда течет ...

когда парсю лог сразу при зачитке

все норма
 

440hz

Guest
Автор оригинала: AnToXa
хммм... а если увеличить размер файла при таком раскладе?
эксперементировал: растет с увеличением размера файла, но не пропорционально ...
 

Valera_

Guest
Под виндой была подобная проблема с апачем 1.3.27 сейчас юзаю 2.0.43 все нормально.
 

ForJest

- свежая кровь
Прикольный топик. Я все больше склоняюсь к мысли, что обрабатывать текстовые файлы простой структуры лучше построчно. Хотя проблемы с утечкой памяти это не решает, но господа! - представьте себе grep, который читает весь файл в память, а потом его обрабатывает. Или иные утилиты коммандной строки.
Уважайте память - и будет всем хорошо :).
А то чем занимается PHP или Apache это никому неизвестно. Мож они там себе мирно мусор собирают или память дефрагментируют. Не мучайте животинок!
 

ONK

Пассивист PHPСluba
У меня есть один объект (генератор графиков), так при его интенсивном использовании, когда загрузка процессора доходит до 100% главный демон Апач - а тоже начинает разростаться (50кб на один сгенерированный график). Всё заканчивается тем что кончается оперативная память, своп на диске и Апач виснет насмерть...

ПХП стоит как внутренний модуль Апача.. Нет сомнений что память течёт из-за ПХП, но непонятно почему именно в гравном демоне Апача -(..

Это начинается при нагрузке в 10 запросов к скрипту в секунду.
 

tony2001

TeaM PHPClub
Вчера специально нагрузил сво домашний апач.
Была и вторая цель - протестить php_templates.
После 100000 requests с concurrency = 150 Апач как занимал 1,1 метра, так и занимает...
 

440hz

Guest
Автор оригинала: tony2001
Вчера специально нагрузил сво домашний апач.
Была и вторая цель - протестить php_templates.
После 100000 requests с concurrency = 150 Апач как занимал 1,1 метра, так и занимает...
да собственно тут проблем нет. у меня то же апач стоит и занимает 6-7 метров каждый, но при выполнениия определенных действий начяенается течь - вот об этом и речь. прям стихи, блин ...

суть в том, что захватив под себя кусок памяти он его потом не отдает. гад. :)
 

tony2001

TeaM PHPClub
>при выполнениия определенных действий начяенается течь
ну так у меня он тоже не в носу ковырялся =)
хотя, все, конечно, зависит от ...
 

Barlone

Guest
Автор оригинала: 440hz
да собственно тут проблем нет. у меня то же апач стоит и занимает 6-7 метров каждый, но при выполнениия определенных действий начяенается течь - вот об этом и речь. прям стихи, блин ...

суть в том, что захватив под себя кусок памяти он его потом не отдает. гад. :)
Уже определил, каких именно действий ? Надо сделать демо-скрипт минимальных размеров, и отправить bug-report в php.net
 

slach

Новичок
между прочим
не факт что этот memory leak именно ПХПешный...
модули апача какие стоят ???
какой нибудь mod_rewrite не юзаете cлучайно ?
 

bsv

Guest
Автор оригинала: tony2001
>при выполнениия определенных действий начяенается течь
ну так у меня он тоже не в носу ковырялся =)
хотя, все, конечно, зависит от ...
У меня это выглядит так:
Тиха украинская ночь ...
Единственный клиент запускает единственный скрипт. Итого 2 процесса Апача по 5 мб для начала.
"Чайлд"-процес вырастет до 45 мб (главный "не шевелится")
Этап "наполнения" большого массива завершается (это видно в брамсере)
И в этот момент "главный" заглатывает метр памяти, который потом так и не освобождает.
В это время "клиентский" процес завершается с нормальным освобождением памяти.

А вот с более "мелким" сеансом PHPBB2 процес вырастает на 7 метров каждый раз.

На мелких кодах повторить не выходит, поскольку не понятно что повторять :(

Апач в "типовой" комплектации. Только пути настраивал.
 

tony2001

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

З.Ы. поправьте меня, если я где-то глобально ошибаюсь.
 

Barlone

Guest
Автор оригинала: tony2001
я, возможно, чего-то не понимаю, но:
когда апач форкает процесс для обработки запроса, родительский процесс далее никак не участвует в этом.
форкнул, вернули ответ и забыл.
так ?
Неа, не забыл. Он как-то за стаусом следит (mod_status), лишних чайлдов прибивает (MaxSpareServers). Наверное еще что-то делает.
 

tony2001

TeaM PHPClub
да, это есть.
дело в том, что РНР на это никак не может повлиять, так ?
 

Barlone

Guest
Да, пожалуй не должен. Если в Апаче нет багов, точно не должен. :)
 

ONK

Пассивист PHPСluba
Автор оригинала: tony2001
Вчера специально нагрузил сво домашний апач.
Была и вторая цель - протестить php_templates.
После 100000 requests с concurrency = 150 Апач как занимал 1,1 метра, так и занимает...
А кто говорил что этот баг на всех запускаемых скриптах проявляется? У меня он проявляется только в одном кокретном примере с генератром графиков, следовательно всётаки надо смотреть на используемые функции. Хотя в моём случае до перерадотки в объект генератро графиков был выполнен в виде линейного скрипта и апач не глючил..
 

ONK

Пассивист PHPСluba
Я непонимю почему растёт именно главный демон Апач и как такое может вообще происходить, но факт есть факт и причина тоже гдето сидит..
 
Сверху