[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: php и "утечка памяти" apache
FatCat
Удалось смоделировать в локалке.
$files = array(
"1.txt",
"2.txt",
// ...
);
foreach($files as $file)
{
echo str_replace("трам-пам-пам", "тру-ля-ля", file_get_contents($file));
flush();
exit();
}


Кладу и прописываю в массиве ОДИН текстовый файл на 20 Мб. Апач в процессе работы увеличивает потребление памяти мегабайт на 50, затем страница отдается в браузер, апач память освобождает. На выходе потребление памяти апачем примерно на пару мегабайт больше исходного. "Утечка" составила пару мегабайт.

Кладу и прописываю в массиве 2000 файлов по 10 Кб общим весом те же 20 Мб; общее содержимое абсолютно идентично.
Апач молотит ощутимо дольше, время генерации страницы раза в 2-3 больше, и на выходе апач держит оперативы более чем на 100 Мб больше исходной цифры. "Утечка" памяти более 100 Мб.

Что я упустил? Чем еще освободить память?
Кстати, без флюшей и экзита абсолютно та же картина...



Спустя 5 минут, 27 секунд FatCat написал(а):
Кстати, str_replace тут точно ни при чем. Вместо него может быть банальный инсерт в базу.
А вот echo точно "при чем". Если обмолачивать тексты из файлов (или из базы, или дергать курлом из инета - без разницы), но не отдавть в браузер - "утечки не возникает".
"Утечка" выявлена только если есть какие-то операции кроме получения текста, и есть отдача в браузер.
print() дает такую же утечку, как и echo...



Спустя 23 часа, 7 минут, 1 секунда (4.09.2010 - 16:34) FatCat написал(а):
А вот и реальный пример:
Цитата
[ Время генерации скрипта: 25 минут, 13 секунд ] [ Использовано запросов: 337045 ] [ Использовано памяти: 59.632 Мб. ]

Расход памяти винды к концу операции 575 Мб.
После рестарта апача 542 Мб...

53 утекло.

Порядка 6 Мб сожрал сам скрипт, очень похоже. При запуске скрипта на 1 запрос он порядка 6 и весит.


_____________
Бесплатному сыру в дырки не заглядывают...
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.