#php #memory #benchmarking #cpu
#php #память #сравнительный анализ #процессор
Вопрос:
Мы перенесли важный модуль веб-сайта на Symfony с обычного PHP.
У этого модуля много просмотров страниц, и из-за этого нам нужно оценить дополнительные требования к оборудованию (если таковые имеются). Мы хотим сравнить дополнительную память и циклы процессора, которые веб-страницы занимают после переноса.
Существует ли какой-либо существующий инструмент или функция в PHP для получения этой статистики? Я сталкивался с getrusage
функцией в php, но она не кажется надежной.
Комментарии:
1. Не хочу показаться педантичным, но это пишется «Symfony».
Ответ №1:
XDebug можно использовать для создания файлов callgrind и трассировок функций.
В первом объясняется, где было потрачено время запроса, количество вызовов функций и тому подобное. KCachegrind можно использовать, например, для проверки этих данных.
Последний можно использовать, чтобы увидеть, как в реальности работают определенные пути к функциям, проверить использование памяти функциями и тому подобное для каждой функции.
Комментарии:
1. :- Инструменты типа Xdebug и KCachegrind также будут использовать ресурсы процессора и памяти и будут работать с одним запросом за раз, мы хотим выполнить сравнительный анализ с использованием таких инструментов, как apache benchmark и т.д., А Затем использовать журналы времени процессора и памяти с помощью инструментов, чтобы увидеть, какова закономерность при высокой нагрузке.
2. Эти файлы cachegrind можно добавлять вместо перезаписи для каждого запроса. Хотя это добавляет немного дополнительной нагрузки к действиям, относительное использование в большинстве случаев правильное.
Ответ №2:
Symfony и большинство других фреймворков, которые я видел, предлагают встроенную систему сравнительного анализа, которую я нашел очень полезной.
Также посмотрите, найдете ли вы это полезным. http://www.markround.com/archives/30-LigHTTPd-and-Apache-Symfony-benchmarks.html
Комментарии:
1. пожалуйста, направьте меня к встроенной системе сравнительного анализа symphony. В тестировании apache я собираюсь сделать то же самое. Вероятно, я буду использовать jmeter или siege для просмотра разных страниц на веб-сайте. ab поддерживает только один
Ответ №3:
Вместо сравнительного анализа таким образом, вы могли бы, возможно, провести стресс-тест на сервере разработки, эквивалентном производственному, с эквивалентными запросами в секунду, например, Apache Benchmarking Tool. (И не забудьте установить кэш операционного кода).
Комментарии:
1. Да, мы бы сделали это, но если мы получим процессорное время и структуру памяти с помощью этого, тогда мы сможем планировать лучше, поскольку на веб-сайте есть много других модулей, и имитация трафика веб-сайта также будет имитировать их. Мы хотим, чтобы загрузка потреблялась для каждого типа модуля статистики, чтобы выполнять планирование емкости.
Ответ №4:
Symfony — один из лучших фреймворков для профилирования PHP-проектов. В него встроено несколько отличных инструментов.
На Symfony Conf 2010 был отличный разговор о ваших возможностях.
Слайд-шоу здесь http://www.slideshare.net/old_sound/debugging-and-profiling-symfony-apps
Комментарии:
1. Джон, это довольно много. Нужно пройти через них. Хотели бы вы порекомендовать один из них, исходя из моих потребностей. Спасибо 🙂
Ответ №5:
Ознакомьтесь с нашими инструментами профилирования PHP. Вы можете получить относительные показатели с минимальными затратами, или вы можете получить время для методов и деревьев вызовов.