Увеличить скорость работы небольшого офисного сервера MySQL
Я работаю в небольшой команде разработчиков - приложение PHP/MySQL.
Каждый внутренний разработчик имеет установленный Apache/PHP и получает доступ к Windows 7 с установленной MySQL 5.1. Коробка 32-битная, Pentium D, 4 ГБ оперативной памяти, ничего не подправлено с my.cnf. Сеть находится на гигабитном коммутаторе, гигабитных сетевых картах.
Мне любопытно, почему эта установка так медленно работает. Доступ к пустой базе данных на этом сервере с моего рабочего стола очень медленный. 5 секунд или около того, чтобы просто перечислить базы данных.
Я не ожидаю, что он будет таким же быстрым, как наш производственный кластер @Softlayer, но 5 секунд для отображения пустой базы данных кажется немного большим.
Кто-нибудь сделал определенные вещи, чтобы ускорить настройку разработки офиса с использованием сервера базы данных?
4 ответа
Это может показаться немного странным, но убедитесь, что сервер MySQL может разрешать домены быстро и правильно. Некоторые браузеры запросов отправляют аутентификацию с каждой командой, и если у вас медленные распознаватели, это снижает производительность.
Однажды у нас была очень похожая проблема, когда наш внутренний DNS был недоступен для обслуживания.
Добавить в my.cnf:
skip_name_resolve в разделах [mysqld_safe] и [mysqld]
Он не должен быть таким медленным в зависимости от конфигурации, которую вы упомянули, даже без какой-либо оптимизации / настройки. Скорее всего, есть другая проблема.
Попробуйте использовать клиенты mysql на одной машине с Windows 7 и посмотрите, работают они медленно или нет. По крайней мере, это поможет решить, связана ли проблема с сетью или нет.
Если проблема связана с сетью, то захват пакетов с помощью wireshark, чтобы увидеть, что на самом деле на проводе, действительно помогает в устранении проблем с задержкой.
Если проблема связана с хостом, проверьте:
- Сколько места на жестком диске свободно и много разделено.
- Какой-то другой процесс ест ОЗУ
- Какой-то другой процесс, использующий процессор
- Просмотрите журналы MySQL, чтобы увидеть, не сообщило ли MySQL о какой-либо проблеме.
Логи наверняка помогут здесь -
Я бы начал с базового мониторинга MySQL - вот несколько инструментов, которые могут помочь:
- top (по умолчанию в linux)
- mtop: http://mtop.sourceforge.net/
- innotop: http://innotop.sourceforge.net/
Вы также можете прибегнуть к инструменту мониторинга MySQL из командной строки (cli)
# mysqladmin processlist
# mysqladmin proc
К сожалению, многие люди будут использовать шаблоны по умолчанию, доступные в / usr / share / mysql
Я НАСТОЯТЕЛЬНО РЕКОМЕНДУЮ ПРОПУСТИТЬ ИХ - они старые и их не стоит использовать по следующим причинам:
- Неверные настройки для некоторых версий ОС или MySQL (например, thread_concurrency и skip-lock)
- Добавление огромных переменных массива, которые вы можете не понять, что они
- Производительность при тестировании их с другими настройками не только сомнительна
После их запуска и некоторой настройки дайте MySQL работать не менее 24-48 часов, а затем используйте следующие диагностические инструменты:
MySQL tuner (просто наберите wget mysqltuner.pl в linux, чтобы скачать, затем chmod755 mysqltuner.pl и запустите его, выполнив./mysqltuner.pl;-)
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, для отчетов о состоянии