Forum Webscript.Ru
Программирование => Perl => Тема начата: metton от 10 Мая 2005, 20:54:48
-
Бывает, заливаешь Perl-скрипт на сервер. Скрипт работает исправно. Но через некоторое время хостер отключает его за "слишком большую ресурсоёмкость". Понятно, скрипт неоптимизирован. И, чтобы его быстрее оптимизировать, нужно узнать какие именно запросы (то есть, скрипт с какими входными параметрами) забирают больше всего ресурсов.
Вопрос, собственно, в следующем: как определить параметры, с которыми скрипт "жрёт" больше всего ресурсов? Ответ "спросить у хостера" не принимается - хостер говорит только имя скрипта.
Одна из идей, как узнать производительность, - вычислить время выполнения скрипта. Но, как я подозреваю, этого недостаточно. Или же время исполнения скрипта и будет тем достаточным критерием оценки ресурсоёмкости скрипта? Есть ли какие-то верхние границы (возможно, по неписаным правилам) времени исполнения скрипта, которые лучше не переступать?
-
metton
написать модуль оценки ресурсоемкости.... или банально вести свои логи что то аля:
script | datetime | время исполнения | параметры....
после чего написать анализатор логов и все сразу станет понятно... :)
-
А есть ли готовые решения?
-
perl -d:DProf yourscript.pl
-
NeoNox
perl -d:DProf yourscript.pl
по моему вопрос был оценка ресурсоемкасти скрипта в зависимости от реальных параметров...:
нужно узнать какие именно запросы (то есть, скрипт с какими входными параметрами) забирают больше всего ресурсов.
что на мой взгляд можно реализовать ведением логов работы реального скрипта...
-
commander
собственно, вторая часть моего вопроса в этом и заключалась: хватит ли информации о времени исполнения скрипта для определения его ресурсоёмкости?
-
metton:
хватит ли информации о времени исполнения скрипта для определения его ресурсоёмкости?
еще бы хорошо знать сколько он памяти сожрет
-
Green Kakadu
в догонку загрузку проца... только вот очень большой вопрос нужно ли это?
metton
хватит ли информации о времени исполнения скрипта для определения его ресурсоёмкости?
ИХМО если задача поставленна лишь отвести взгляд администрации от скрипта то достаточно...
-
Посмотрел время выполнения.
Результат: выполнение скрипта 0,06-0,35 секунды. В среднем 0,08-0,10. (Не считая обработки изображений.)
Это нормально или много?
Тестировал свой движок на http://www.bluejack.ru.
-
Это нормально или много?
если речь идет о подщете маштаба вселенной от определенно нормально... а если о выводе надписи "hellow world" то определенно много... :)
что за вопрос? и самое главное какой ты ждеш ответ.. :)
-
ну дык я показал на чём тестировал
разброс значений времени по страницам сравнительно небольшой
большинство значений в интервале 0,07-0,10 секунды
вот собственно и вопрос: для таких страниц как http://www.bluejack.ru такие значения нормальные или можно их СУЩЕСТВЕННО уменьшить
да и вообще, имелось ввиду, нормальны ли такие значения для хостеров
им же пофиг, что ты считаешь: квадрат площади вселенной или 2+2 - у них есть конкретные ограничения, за которые нельзя заступать
сколько в среднем хостеры дают времени на выполнение скрипта?
-
Ну для хостера это значение прокатит, другой вопрос - если тебя интересует оптимизация - то тут уже надо будет повозится (возможно даже написать что-то вроде того что советовал commander).
-
cr4ck3r
или я чего-то не понял, или commander и советовал:
"написать модуль оценки ресурсоемкости.... или банально вести свои логи что то аля:
script | datetime | время исполнения | параметры...."
-
А ещё один и скрипт с одним и тем же запросом может выполняться от 0.07 до 0.76 секунды. Почему так?
-
cr4ck3r:
cr4ck3r
или я чего-то не понял, или commander и советовал:
"написать модуль оценки ресурсоемкости.... или банально вести свои логи что то аля:
script | datetime | время исполнения | параметры...."
Ну да - так и поступить если очень заморачиваетесь на скорости выполнения. (а это надо сказать правильно!)
Насчет времени выполнения - зависит от деятельности остальных процессов, если нагрузка чуть больше (общая) на сервер - то и время запуска интерпретатора может увеличиваться. В любом случае для более менее точной оценки работы скрипта надо произвести N-цать замеров и вывести среднестатистическое время выполнения.
-
metton:
А ещё один и скрипт с одним и тем же запросом может выполняться от 0.07 до 0.76 секунды. Почему так?
Вроде зависит от загрузки сервака в данную секунду времени. У меня тоже бывает постоянно.
-
А ещё такую штуку подлую обнаружил.
Протестировал один свой скрипт на сервере. В течение дня в отдельный файлик писалось время его исполнения. В этот день скрипт выдавал одно и то же. Но время почему-то варьировалось от 0,4 до 17 (!) секунд. То есть наибольшее вемя исполнения более чем в 40 больше, чем наименьшее. И это, повторюсь, при абсолютно идентичной выдаче скрипта всем запросам. Винить хостера?
-
metton
естественно, ты же у него не один такой :)
-
стоит еще добавить, что замер продолжительности работы скрипта путем ведения лог файла
(типа open(FILE,....) print FILE time и т.п), не совсем корректен, так как открытие файлов счиатется ресурсоемкой операцией (и времяЕмкой), поэтому такой скрипт будети работать медленнее чем он же в оригинале...
-
cr4ck3r:
открытие файлов счиатется ресурсоемкой операцией (и времяЕмкой)
Где это так считается, особенно про времяемкость?
Система без возможности логирования это детская пасочка.
-
2NeoNox: я говорю о случае если скрипт не содержал до этого открытия данного файла, а для замера создаеться дополнительная операция по открытию файла. Если система не ведет лог, то добавить туда дополнительную информацию не затруднит, да и то вывод - всегда замедляет работу... Проверить это можно на простом примере:
считывай из файла данные (к примеру файл на несколько гигов), и выводи на консоль номер каждой строки, или выводи на консоль только строки кратные 100, и увидишь какой скрипт отработает быстрее...
З.Ы
А где считается - во всем мире :-)))...
-
Смешались понятия. Ведение лога это запись а не вывод информации, открытие гигабайтного фала или килобайтного занимает одно и то-же время.