Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Скрипт ведет себя локально нормально, а на сервере съедает тучу памяти 
:(
    Опции темы
V0fka
Дата 11.7.2013, 22:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 311
Регистрация: 5.11.2006
Где: Украина

Репутация: нет
Всего: нет



Привет!

Есть скрипт. Запускаю его на локальной машине, где стоит Windows 7 + Denwer - скрипт в свои пики съедает ~11 Мб оперативной памяти. Динамика работы скрипта такая (в Мб):

user posted image

Запускаю его на сервере хостинга, где Линуксовый сервер. Параметры сейчас не скажу, но если для решения проблемы нужно какие-то параметры озвучить - говорите. Так вот, на сервере стоит ограничение на выполнение скрипта в 64 Мб и скрипту их не хватает. Стартует скрипт где-то с 8 Мб и на каждом шаге прибавляет к занимаемой памяти 4-5 Мб. Динамика работы такая (в Мб):

user posted image

Почему скрипт ведет себя на столько по разному? Как побороть эту беду?
PM MAIL   Вверх
Рыжий
Дата 11.7.2013, 22:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Помешанный
***


Профиль
Группа: Завсегдатай
Сообщений: 1423
Регистрация: 19.9.2004

Репутация: 2
Всего: 20



V0fka, Так а какая задача этого скрипта? Какой участок кода съедает столько памяти? Ты не дал никаких деталей, под такое поведение подходит много разных ответов...
PM MAIL ICQ   Вверх
MoLeX
Дата 12.7.2013, 06:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



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


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
ksnk
Дата 12.7.2013, 07:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



V0fka, вывести phpinfo в каждом случае и внимательно рассмотреть разницу.
На Денвере запуск скрипта идет как модуль апача, он после выполнения аккуратно чистит кучки, оставшиеся от скрипта, а на сервере? Не FastCGI, случайно?

Или картинки - это трекинг одного запуска скрипта?

Это сообщение отредактировал(а) ksnk - 12.7.2013, 07:59


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
V0fka
Дата 12.7.2013, 13:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 311
Регистрация: 5.11.2006
Где: Украина

Репутация: нет
Всего: нет



Цитата(Рыжий @  11.7.2013,  22:54 Найти цитируемый пост)
V0fka, Так а какая задача этого скрипта? Какой участок кода съедает столько памяти?

Скрипт ходит по ссылкам и собирает и обрабатывает инфу с них. Для этого я использую библиотеку simple html dom. Каждый отрезок по оси Х на графиках - это обработка новой ссылки. Я получаю страницу с ссылками, обхожу их в цикле, во время которого получаю инфу по текущей ссылке и сохраняю в переменную. В конце каждой итерации цикла я очищаю переменные, присвоив им null.

Цитата(MoLeX @  12.7.2013,  06:18 Найти цитируемый пост)
профилирование на каждом этапе. может он у тебя протоколы использует которые на сервере криво работают, мы же нечего не знаем об этом скрипте.

Выше описал работу скрипта. Если этой инфы мало - спрашивайте, дам подробнее ответ на сопутствующие вопросы.

Цитата(ksnk @  12.7.2013,  07:57 Найти цитируемый пост)
V0fka, вывести phpinfo в каждом случае и внимательно рассмотреть разницу.

На что именно обратить внимание?

Цитата(ksnk @  12.7.2013,  07:57 Найти цитируемый пост)
На Денвере запуск скрипта идет как модуль апача, он после выполнения аккуратно чистит кучки, оставшиеся от скрипта, а на сервере? Не FastCGI, случайно?

Подскажите, пожалуйста, где это можно глянуть.

Цитата(ksnk @  12.7.2013,  07:57 Найти цитируемый пост)
Или картинки - это трекинг одного запуска скрипта?

Первая картинка - это запуск скрипта локально, а вторая - на сервере, где сайт лежит. Запускались скрипт не один раз, ситуация все время повторяется.
PM MAIL   Вверх
ksnk
Дата 12.7.2013, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Цитата(V0fka @  12.7.2013,  13:28 Найти цитируемый пост)
На что именно обратить внимание?

версии php и апача, способ запуска (SERVER_SOFTWARE), ограничения на память (memory_limit).

Все это внимательно обдумать и поставить memory limit побольше.  smile 



--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
bars80080
Дата 13.7.2013, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



Цитата(ksnk @  12.7.2013,  07:57 Найти цитируемый пост)
На Денвере запуск скрипта идет как модуль апача, он после выполнения аккуратно чистит кучки, оставшиеся от скрипта, а на сервере? Не FastCGI, случайно?

а в каком, к примеру, случае fastCGI не будет убирать мусор в отличие от модуля?

чисто интересно, так как у меня много чего пришлось на фаст перевести
PM MAIL WWW   Вверх
ksnk
Дата 13.7.2013, 19:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Цитата(bars80080 @  13.7.2013,  18:41 Найти цитируемый пост)
а в каком, к примеру, случае fastCGI не будет убирать мусор в отличие от модуля?

У меня остались какие-то смутные воспоминания про проблемы с памятью, при отладке сокет-сервера. Но это было еще на 4-ке, причем каких то ранних версий, так что сейчас уже не воспроизводится. Вероятно сейчас разницы в этом уже нет.


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
V0fka
Дата 14.7.2013, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 311
Регистрация: 5.11.2006
Где: Украина

Репутация: нет
Всего: нет



Цитата(ksnk @  12.7.2013,  14:12 Найти цитируемый пост)
версии php

Локально: PHP Version 5.3.3
На сервере: PHP Version 5.2.17

Цитата(ksnk @  12.7.2013,  14:12 Найти цитируемый пост)
способ запуска (SERVER_SOFTWARE)

Локально: Apache/2.2.4 (Win32) mod_ssl/2.2.4 OpenSSL/0.9.8k PHP/5.3.3. И эта строка находится в группе Apache Environment. А на сервере даже такой группы нету.

Цитата(ksnk @  12.7.2013,  14:12 Найти цитируемый пост)
ограничения на память (memory_limit)

Локально: 128 Мб
На сервере: 64 Мб
Но, честно говоря, я не понимаю как именно этот показатель влияет на то, что скрипт более или менее прожорливый, ведь локально и ~11 Мб хватает.

Цитата(ksnk @  12.7.2013,  14:12 Найти цитируемый пост)
Все это внимательно обдумать и поставить memory limit побольше.

Такого я сделать не могу, т.к. этим управляет хостер.
PM MAIL   Вверх
Fortop
Дата 14.7.2013, 14:21 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 20
Всего: 42



Цитата(V0fka @  14.7.2013,  13:41 Найти цитируемый пост)
Локально: PHP Version 5.3.3
На сервере: PHP Version 5.2.17


Почитайте
http://php.net/manual/en/migration53.new-features.php

И это тоже
http://www.php.net/manual/ru/features.gc.p...siderations.php

Советую обратить внимание на график

Добавлено через 19 секунд
user posted image


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
V0fka
Дата 15.7.2013, 20:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 311
Регистрация: 5.11.2006
Где: Украина

Репутация: нет
Всего: нет



Fortop, а как же выйти из положения на PHP 5.2?
PM MAIL   Вверх
Arantir
Дата 15.7.2013, 20:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Рыбак без удочки
**


Профиль
Группа: Участник
Сообщений: 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
}
PM   Вверх
umren
Дата 16.7.2013, 09:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 16.7.2013

Репутация: нет
Всего: нет



в PHP начиная с версии 5.3 появился GC, в 5.2 его нет.

вот вам и ответ - вы не чистите память после каждой итерации вашего скрипта.
PM MAIL   Вверх
V0fka
Дата 17.7.2013, 21:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 311
Регистрация: 5.11.2006
Где: Украина

Репутация: нет
Всего: нет



В общем, буду решать вопросы с хостером.

Всем спасибо за участие в этой теме!
Отдельное спасибо Fortop-у!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1328 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.