![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
V0fka |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 311 Регистрация: 5.11.2006 Где: Украина Репутация: нет Всего: нет |
Привет!
Есть скрипт. Запускаю его на локальной машине, где стоит Windows 7 + Denwer - скрипт в свои пики съедает ~11 Мб оперативной памяти. Динамика работы скрипта такая (в Мб): ![]() Запускаю его на сервере хостинга, где Линуксовый сервер. Параметры сейчас не скажу, но если для решения проблемы нужно какие-то параметры озвучить - говорите. Так вот, на сервере стоит ограничение на выполнение скрипта в 64 Мб и скрипту их не хватает. Стартует скрипт где-то с 8 Мб и на каждом шаге прибавляет к занимаемой памяти 4-5 Мб. Динамика работы такая (в Мб): ![]() Почему скрипт ведет себя на столько по разному? Как побороть эту беду? |
|||
|
||||
Рыжий |
|
|||
![]() Помешанный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1423 Регистрация: 19.9.2004 Репутация: 2 Всего: 20 |
V0fka, Так а какая задача этого скрипта? Какой участок кода съедает столько памяти? Ты не дал никаких деталей, под такое поведение подходит много разных ответов...
|
|||
|
||||
MoLeX |
|
|||
![]() Местный пингвин ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4076 Регистрация: 17.5.2007 Репутация: 46 Всего: 140 |
профилирование на каждом этапе.
может он у тебя протоколы использует которые на сервере криво работают, мы же нечего не знаем об этом скрипте. -------------------- Amazing ![]() |
|||
|
||||
ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
V0fka, вывести phpinfo в каждом случае и внимательно рассмотреть разницу.
На Денвере запуск скрипта идет как модуль апача, он после выполнения аккуратно чистит кучки, оставшиеся от скрипта, а на сервере? Не FastCGI, случайно? Или картинки - это трекинг одного запуска скрипта? Это сообщение отредактировал(а) ksnk - 12.7.2013, 07:59 -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
|||
|
||||
V0fka |
|
||||||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 311 Регистрация: 5.11.2006 Где: Украина Репутация: нет Всего: нет |
Скрипт ходит по ссылкам и собирает и обрабатывает инфу с них. Для этого я использую библиотеку simple html dom. Каждый отрезок по оси Х на графиках - это обработка новой ссылки. Я получаю страницу с ссылками, обхожу их в цикле, во время которого получаю инфу по текущей ссылке и сохраняю в переменную. В конце каждой итерации цикла я очищаю переменные, присвоив им null.
Выше описал работу скрипта. Если этой инфы мало - спрашивайте, дам подробнее ответ на сопутствующие вопросы.
На что именно обратить внимание?
Подскажите, пожалуйста, где это можно глянуть. Первая картинка - это запуск скрипта локально, а вторая - на сервере, где сайт лежит. Запускались скрипт не один раз, ситуация все время повторяется. |
||||||||
|
|||||||||
ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
версии php и апача, способ запуска (SERVER_SOFTWARE), ограничения на память (memory_limit). Все это внимательно обдумать и поставить memory limit побольше. ![]() -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
|||
|
||||
bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
а в каком, к примеру, случае fastCGI не будет убирать мусор в отличие от модуля? чисто интересно, так как у меня много чего пришлось на фаст перевести |
|||
|
||||
ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
У меня остались какие-то смутные воспоминания про проблемы с памятью, при отладке сокет-сервера. Но это было еще на 4-ке, причем каких то ранних версий, так что сейчас уже не воспроизводится. Вероятно сейчас разницы в этом уже нет. -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
|||
|
||||
V0fka |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 311 Регистрация: 5.11.2006 Где: Украина Репутация: нет Всего: нет |
Локально: PHP Version 5.3.3 На сервере: PHP Version 5.2.17 Локально: Apache/2.2.4 (Win32) mod_ssl/2.2.4 OpenSSL/0.9.8k PHP/5.3.3. И эта строка находится в группе Apache Environment. А на сервере даже такой группы нету. Локально: 128 Мб На сервере: 64 Мб Но, честно говоря, я не понимаю как именно этот показатель влияет на то, что скрипт более или менее прожорливый, ведь локально и ~11 Мб хватает. Такого я сделать не могу, т.к. этим управляет хостер. |
|||
|
||||
Fortop |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
Почитайте http://php.net/manual/en/migration53.new-features.php И это тоже http://www.php.net/manual/ru/features.gc.p...siderations.php Советую обратить внимание на график Добавлено через 19 секунд ![]() -------------------- Мир это Я. Живее всех живых. |
|||
|
||||
V0fka |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 311 Регистрация: 5.11.2006 Где: Украина Репутация: нет Всего: нет |
Fortop, а как же выйти из положения на PHP 5.2?
|
|||
|
||||
Arantir |
|
|||
Рыбак без удочки ![]() ![]() Профиль Группа: Участник Сообщений: 960 Регистрация: 18.11.2012 Репутация: 16 Всего: 55 |
Если скрипт нормально работает на 5.3, то почему не обновить сервер?
Если это хостинг - там точно должна быть переключалка на 5.3. Иначе не знаю, как может хватить совести у хостера не дать альтернативы на такое старье как 5.2. В 5.3 этим занимается сборщик мусора. Выйти из проблемы на 5.2 - это вручную делать unset чуть ли не в любом месте, где переменная больше не нужна. Возможно, она у Вас там такая только одна, которая память жрет. Но если их много, то будет слишком долгно все пересматривать и переписывать. -------------------- interface Жопа { // ATTENTION: has to be implemented by every class of the project for proper project work } |
|||
|
||||
umren |
|
|||
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 16.7.2013 Репутация: нет Всего: нет |
в PHP начиная с версии 5.3 появился GC, в 5.2 его нет.
вот вам и ответ - вы не чистите память после каждой итерации вашего скрипта. |
|||
|
||||
V0fka |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 311 Регистрация: 5.11.2006 Где: Украина Репутация: нет Всего: нет |
В общем, буду решать вопросы с хостером.
Всем спасибо за участие в этой теме! Отдельное спасибо Fortop-у! |
|||
|
||||
![]() ![]() ![]() |
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |