Я работаю над оптимизацией своего сайта, и у меня были медленные запросы MySQL в течение нескольких дней, но после прохождения> 260M запросов он регистрировал только 6 медленных запросов, а те были выполнены мной PhpMyAdmin. Я задаюсь вопросом, есть ли что-то, чтобы регистрировать медленное время выполнения страницы PHP, чтобы я мог найти определенные страницы, которые используют ресурсы hogging, а не конкретные запросы.PHP-эквивалент медленного журнала запросов MySQL?
ответ
Во-первых, есть xdebug, у которого есть профилировщик, но я бы не использовал его на производственной машине, так как он вводит код и привносит скорость в сканирование. Тем не менее, это очень хорошо подходит для тестирования.
Если вы хотите измерить скорость в продуктивной среде, я бы просто измерил вручную. microtime()
- функция для этих вещей в PHP. Предполагая, что у вас есть header.php и footer.php, которые вызываются с помощью всех скриптов:
# In your header.php (or tpl)
$GLOBALS['_execution_start'] = microtime(true);
# In your footer.php (or tpl)
file_put_contents(
'/tmp/my_profiling_results.txt',
microtime(true) - $GLOBALS['_execution_start'] . ':' . print_r($_SERVER, true) . "\n",
FILE_APPEND
);
Спасибо, ваше второе предложение - хорошая идея. Я надеялся, что будет какой-то способ просто автоматизировать это, но это работает так же хорошо, без особых усилий. –
О, одна вещь, чтобы добавить к этому. FILE_APPEND следует добавить в качестве флага, поэтому вы не просто получите самый последний доступ в журнале. –
Thx, я всегда забываю это :) – soulmerge
Вы можете обернуть ваши сценарии в простой таймер, например:
/*in your header or at the top of the page*/
$time_start = microtime(true);
/* your script goes here */
/*in your footer, or at the bottom of the page*/
$time_end = microtime(true);
$time = $time_end - $time_start;
echo "It took $time seconds\n";
Обратите внимание, что добавит две функции казни и крошечную математики, как накладные расходы.
Могли бы вы не зарегистрировать функцию отключения, которая вызывает конец таймера? http://us3.php.net/register_shutdown_function Таким образом вам нужно только запустить таймер, где бы вы ни думали, что может возникнуть проблема.
насчет auto_prepend_file и auto_append_file, просто написал сообщение о том, что http://blog.xrado.si/post/php-slow-log
это правильный пост? http://blog.xrado.si/post/php-slow-log –
да, у меня есть новый домен – xrado
Если вы используете FastCGI для выполнения ваших PHP скриптов вы можете использовать Менеджер FastCGI Process (FPM, PHP-FPM), который также поддерживает так называемый «медленный».
Вы можете включить его в php-конфигурации вашего php-fpm (для debian это в /etc/php5/fpm/pool.d/www.conf
) с настройками конфигурации: request_slowlog_timeout и slowlog.
request_slowlog_timeout
Таймаут для обслуживания одного запроса, после которого PHP трассировка будет сброшена в «» slowlog файла. Значение «0» означает «Выкл.». Доступные единицы: s (econds) (по умолчанию), m (inutes), h (наш) или d (ays). Значение по умолчанию: 0.
slowlog
Файл журнала для медленных запросов. Значение по умолчанию: # INSTALL_PREFIX #/log/php-fpm.log.slow.
из http://php.net/manual/en/install.fpm.configuration.php
Также смотрите: http://php.net/manual/en/install.fpm.php и http://rtcamp.com/tutorials/php/fpm-slow-log/
- 1. улучшить производительность запросов MySQL из медленного журнала запросов
- 2. MySQL деталь запроса медленного журнала о Query_time
- 3. Специфичные для приложения данные для медленного журнала запросов MySQL?
- 4. Включение медленного журнала запросов mysql с использованием XAMPP 5.6.21
- 5. Извлечь местоположение медленного журнала запросов MySQL через PHP
- 6. Избегайте запроса RAND() из медленного журнала запросов
- 7. MYSQL Оптимизация запросов для медленного запроса
- 8. Есть ли способ получить row_examined в MySQL без медленного журнала?
- 9. Оптимизация медленного запроса mysql
- 10. Mysql Выполнение медленного запроса
- 11. Улучшение медленного запроса Mysql
- 12. Оптимизация медленного запроса mysql
- 13. Включение MySQL общего журнала запросов с помощью JDBC
- 14. MySQL «УСТАНОВИТЬ НАЗВАНИЯ» в верхней части журнала медленных запросов
- 15. MySQL Медленный файл журнала - отображение каждого журнала запросов
- 16. Ведение журнала запросов mysql для конкретной таблицы
- 17. настройки общего журнала запросов в MySQL
- 18. Ускорение медленного обновления SubQuery MySQL
- 19. Индекс для медленного MySQL Query
- 20. Оптимизация медленного MySQL select query
- 21. MySQL - Улучшение производительности медленного подзапроса
- 22. Оптимизация необъяснимо медленного запроса MySQL
- 23. Размер журнала запросов MySQL MySQL на AWS RDS
- 24. Открытый MySQL медленный журнал запросов с PHP
- 25. sphinxQl получение журнала запросов
- 26. Анализ медленного запроса MySQL и его индексирование
- 27. Tools или патч для Sequel рубина или ORM инструментирования запросов SQL для медленного анализа лога запросов
- 28. MySQL - медленная оптимизация запросов
- 29. Анализ журнала медленных запросов Drupal
- 30. Объединение двух быстрых индексированных запросов делает результат медленного
Может быть, PhpMyAdmin запросы с низким приоритетом, что может вызвать их, чтобы показать, как «медленный» – karim79
я просто упомянуть, что сказать что ни один из них не был запрошен на сайте. –
Если вы хотите более точные измерения, чем в принятом ответе, чтобы найти, где находится документ, ваше узкое место - вы можете проверить Benchmark от PEAR. Это позволяет вам указать маркеры в вашем коде, чтобы найти шею бутылки. –