The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Утечка памяти в PHP. Возможно ли ?"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы WEB технологии (Public)
Изначальное сообщение [Проследить за развитием треда]

"Утечка памяти в PHP. Возможно ли ?" 
Сообщение от mikek emailИскать по авторуВ закладки(ok) on 14-Май-05, 18:58  (MSK)
В общем ситуация такая.

Есть PHP скрипт, который загружает и изменяет изображения. Изображения большие. Скрипт корректно очищает память, но после его выполнения процесс httpd начинает кушать от 20Mb до 50Mb, в зависимости от размера изображения.

Если запустить memory_get_usage в начале и конце скрипта, то значения почти совпадают.

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

Может кто сталкивался с такой проблемой и может что-то посоветовать ?

  Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "Утечка памяти в PHP. Возможно ли ?" 
Сообщение от uldus Искать по авторуВ закладки(ok) on 15-Май-05, 08:41  (MSK)
>очищает память, но после его выполнения процесс httpd начинает кушать от
>20Mb до 50Mb, в зависимости от размера изображения.

Это не утечка памяти, а особенности работы с памятью mod_php. Если процесс использовал какой-то объем памяти, а потом освободил ее, то эта память физически не освобождается, а остается за процессом и будет использована в случае повторых запросов памяти. И так для каждого httpd процесса, если у тебя их 100, то рано или поздно все 100 будут занимать столько сколько по максимому запросит php скрипт в рамках каждого дочернего httpd.
Методы лечения:
1. Требовательные к памяти запросы выполнять не через mod_php, а через cgi-версию php.
2. Поставить memory_limit и похоронить жрущие память скрипты (для массового хостинга подходит).
3. Поставить MaxRequestsPerChild 1
4. Использовать два апаче, первый, бэкенд, с mod_php и ограничением на число клиентов в 5-10, второй, легкий фронтенд, с mod_accel или на nginx вместо apache, который будет пронимать запросы от клиентов и переправлять в бэкенд.

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

Вполне вероятно что она не освобождается, а дочерний процесс апача отмирает, после обработки MaxRequestsPerChild запросов.

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "Утечка памяти в PHP. Возможно ли ?" 
Сообщение от mikek Искать по авторуВ закладки(??) on 15-Май-05, 10:10  (MSK)
Спасибо
  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх


Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ]
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру