Назад | Перейти на главную страницу

Увеличение скорости работы MySQL сервера для небольшого офиса

Я работаю в небольшой команде разработчиков - PHP / MySQL app.

У каждого внутреннего разработчика установлен Apache / PHP и он обращается к Windows 7 с установленным MySQL 5.1. Коробка 32-битная, Pentium D, оперативная память 4 ГБ, с my.cnf ничего не настраивалось. Сеть на гигабитном коммутаторе, гигабитные сетевые карты.

Мне любопытно, почему эта установка настолько медленная. Доступ к пустой базе данных на этом сервере с моего рабочего стола происходит очень медленно. 5 секунд или около того, чтобы вывести список баз данных.

Я не ожидаю, что он будет таким же быстрым, как наш производственный кластер @Softlayer, но 5 секунд для отображения пустой базы данных кажутся многовато.

Кто-нибудь сделал что-то конкретное, чтобы ускорить настройку офисной разработки с использованием сервера базы данных?

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

Однажды у нас была очень похожая проблема, когда наш внутренний DNS был недоступен для обслуживания.

добавить в my.cnf:

skip_name_resolve в разделах [mysqld_safe] и [mysqld]

Он не должен быть таким медленным в зависимости от конфигурации, которую вы упомянули, даже без какой-либо оптимизации / настройки. Скорее всего есть другая проблема.

Попробуйте использовать клиенты mysql на той же машине с Windows 7 и посмотрите, работают ли они медленно или нет. По крайней мере, это поможет решить, связана ли проблема с сетью или нет.

Если проблема связана с сетью, то захват пакетов с помощью wirehark для просмотра фактических данных по проводам действительно полезен для устранения проблем с задержкой.

Если проблема связана с хостом, проверьте:

  1. Сколько места на жестком диске свободно и сильно ли фрагментирован раздел.
  2. Какой-то другой процесс ест оперативную память
  3. Какой-то другой процесс использует CPU
  4. Просмотрите журналы MySQL, чтобы узнать, не сообщил ли MySQL о какой-либо проблеме.

Журналы здесь наверняка помогут -

Я бы начал с базового мониторинга MySQL - вот несколько инструментов, которые могут помочь:

  1. вверху (по умолчанию в Linux)
  2. mtop: http://mtop.sourceforge.net
  3. innotop: http://innotop.sourceforge.net

Вы также можете прибегнуть к инструменту мониторинга MySQL из командной строки (cli).

# mysqladmin processlist 
# mysqladmin proc

К сожалению, многие люди будут использовать шаблоны по умолчанию, доступные в / usr / share / mysql.

Я НАСТОЯТЕЛЬНО РЕКОМЕНДУЮ ПРОПУСКАТЬ ИХ - они старые и их не стоит использовать по следующим причинам:

  • Недействительные настройки для некоторых версий ОС или MySQL (например, thread_concurrency и skip-lock)
  • Добавление огромных переменных массива, которые вы могли не понимать, что это такое
  • Производительность от тестирования их с другими настройками более чем сомнительна

После их запуска и некоторой настройки дайте mysql поработать не менее 24-48 часов, а затем используйте следующие диагностические инструменты:

  1. Тюнер MySQL (просто введите wget mysqltuner.pl в linux для загрузки, затем chmod755 mysqltuner.pl и запустите его, выполнив ./mysqltuner.pl ;-)

  2. mysqlidxchk

    (Установите с помощью wget hackmysql.com/scripts/mysqlidxchk-1.1 chmod 755 mysqlidxchk * mv mysqlidxchk * mysqlidxchk), затем запустите, выполнив что-то вроде этого: (./mysqlidxchk --general / var / lib / mysql / general.log)

Если вам нужна помощь в их установке, дайте мне знать

PS - большинство из них являются скриптами только для Linux, но они очень помогут в настройке и управлении вашим сервером mySQL.

Наконец, используйте хороший инструмент для анализа журналов, такой как mysqlsla и mysqlreport, для отчета о состоянии.