ОБСУДИТЬ ПРОЕКТ
EN RU
Контакты
Напишите нам

Спасибо, что обратились к нам!

Ваше сообщение отправлено и в ближайшее время мы его рассмотрим и постараемся ответить

MySQL: средства анализа работы сервера при веб-разработке

Работая над одним из проектов, мы столкнулись с тем, что при высокой нагрузке он потребляет заоблачное количество ресурсов, на, казалось бы, простейшие операции вроде отрисовки списка комментариев к профилям. В результате этого, он превышал количество бесплатного процессорного времени, отводимого хостером и «падал».
MySQL: средства анализа работы сервера при веб-разработке
Работая над одним из проектов, мы столкнулись с тем, что при высокой нагрузке он потребляет заоблачное количество ресурсов, на, казалось бы, простейшие операции вроде отрисовки списка комментариев к профилям. В результате этого, он превышал количество бесплатного процессорного времени, отводимого хостером и «падал».

Работая над одним из проектов, мы столкнулись с тем, что при высокой нагрузке он потребляет заоблачное количество ресурсов, на, казалось бы, простейшие операции вроде отрисовки списка комментариев к профилям. В результате этого, он превышал количество бесплатного процессорного времени, отводимого хостером и «падал».

В результате первичного анализа ресурса было обнаружено что CMS ресурса (самописная, разработанная не нами) хранит разные типы объектов (профили, комменты, новости и т.д) в разных таблицах, используя одну «центральную» таблицу для связи всех объектов воедино. Такая структура базы данных предполагает большую загрузку на MySQL сервер, однако необходимо было точно выяснить какие именно запросы наиболее сильно загружают сервер для того чтобы локализовать где, как и как скрипт их вызывает.

Мы изучили способы просмотра того, чем «занимается» MySQL сервер и предлагаем Вам обзор этих методов.

1. Использование лога запросов и лога медленных запросов (slow queries)

MySQL сервер можно научить вести логи, на основании которых потом можно проводить необходимый анализ. Для этого необходимо зайти в файл my.cnf (его местоположение зависит от ОС и настроек MySQL) и добавить в нем две строки:

log-slow-queries=/slow.log
log=/log.log

MySQL сам создаст файлы и будет писать в них все запросы. Отдельно, он будет записывать т.н. «медленные» запросы, то есть запросы, выполняющиеся большее чем указанное в
long_query_time время.

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

2. Профайлинг запросов (взято отсюда)

Оказывается, MySQL при включении функции профайлинга умеет сам логгировать данные (причем не в лог файле) и выдавать статистику по запросам. Для демонстрации возможности, попробуйте выполнить следующие запросы:

mysql> set profiling=1;
mysql> select count(*) from comment;
mysql> select count(*) from message;
mysql> show profiles;

+----------+------------+------------------------------+
| Query_ID | Duration   | Query                        |
+----------+------------+------------------------------+
|        1 | 0.00012700 | select count(*) from comment |
|        2 | 0.00014200 | select count(*) from message |
+----------+------------+------------------------------+
2 rows in set (0.00 sec)

В дальнейшем можно узнать подробно на что тратилось время по каждому запросу:

mysql> show profile for query 1;
+--------------------------------+----------+
| Status                         | Duration |
+--------------------------------+----------+
| starting                       | 0.000015 |
| checking query cache for query | 0.000021 |
| checking permissions           | 0.000003 |
| Opening tables                 | 0.000007 |
| System lock                    | 0.000004 |
| Table lock                     | 0.000023 |
| init                           | 0.000005 |
| optimizing                     | 0.000005 |
| executing                      | 0.000025 |
| end                            | 0.000003 |
| end                            | 0.000001 |
| query end                      | 0.000002 |
| storing result in query cache  | 0.000003 |
| freeing items                  | 0.000003 |
| closing tables                 | 0.000004 |
| logging slow query             | 0.000002 |
| cleaning up                    | 0.000001 |
+--------------------------------+----------+
17 rows in set (0.00 sec)

3. Использование

Наиболее полную статистику чем заниматься MySQL сервер покажет ПО MONyog.

MONyog MySQL Monitor and Advisor – это «MySQL DBA в коробке», которая поможет MySQL DBA управлять большим количеством MySQL серверов, настраивать свои текущие MySQL сервера, находить и исправлять проблемы со своими MySQL приложениями, перед тем как появятся какие-либо серьезные проблемы или затраты.

MONyog MySQL Monitor and Advisor проактивно наблюдает за инфраструктурами баз данных предприятия и предоставляет советы экспертов по тому, как даже новичкам в MySQL получить большую безопасность, оптимизировать производительность и уменьшить торможение своих MySQL систем.

Эта программа создает HTTP сервер и «вешает» его на назначенный порт (по умолчанию 5555). С помощью веб-интерфейса можно просмотреть в реальном времени какие выполняются запросы и ознакомиться с детальной статистикой работы сервера. Есть версии и под Windows и под Linux.

Правда, и стоит такое средство недешево — $200.

гарантии

гарантии

  • 10 лет на международном рынке
  • Внутренние стандарты качества
  • AGILE - методики планирования разработки
  • Передовые методики управления проектами с помощью JIRA
  • Налаженный производственный цикл от планирования и прототипирования до ручного и автоматического тестирования
посмотреть сертификаты отзывы наших клиентов
ГЛАВНОЕ В УСПЕШНОМ ИНТЕРНЕТ-ПРОЕКТЕ
это подобрать надежного и профессионального подрядчика с полным циклом услуг
заполнить бриф