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

Нужно ли мне выделять больше ресурсов серверу mysql?

Мне кажется, что мой сервер mysql работает медленнее, чем обычно, при обработке запросов с веб-сайта PHP.

Есть ли что-нибудь вроде того, как я могу выделить больше ресурсов для сервера Mysql, чтобы он работал быстрее?

Я мало что знаю об этом, поэтому мне нужна твоя помощь.

Я на сервере Ubuntu 10.

Примечание: если вопрос выше глупый и непрактичный, тогда NVM. :).

Попробуйте включить все буферы и кеш mysql. Также убедитесь, что на сервере достаточно оперативной памяти для этого (я рекомендую не менее 6 ГБ памяти для небольшого количества запросов). Ниже вы можете найти некоторые из буферов, которые я добавил в свой my.cnf:

key_buffer = 128 МБ

join_buffer_size = 5120 КБ

innodb_buffer_pool_size = 8129 млн

key_buffer = 16M

max_allowed_packet = 64 млн

table_cache = 2048

query_cache_limit = 128 МБ

query_cache_size = 512 МБ

tmp_table_size = 128M

max_heap_table_size = 128 МБ

Также вам следует отключить обратный поиск. Вот переменная для конфигурации:

пропустить имя-разрешение

Кроме того, измените wait_timeout (сколько времени ребенок должен быть жив, если запрос не сделан):

wait_timeout = 300

Все вышеперечисленные настройки нуждаются в точной настройке для вашей конфигурации, поэтому, пожалуйста, не просто копируйте / вставляйте, потому что есть возможность получить худшие результаты. После того, как вы выполнили все эти настройки, отслеживайте все с помощью mysqlreport (mysqlreport -u username --password = password)

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

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

Итак, что вам нужно, так это немного отладить свой код, и это не весело.

Вы можете попробовать «mtop», это инструмент «top» или «htop», чтобы заглянуть внутрь сервера mysql, с его помощью вы сможете узнать, какие запросы занимают больше времени.

Кроме того, если mysql находится на другом сервере, а вы не используете DNS, он обычно добавляет 20 секунд к вашим запросам, звучит странно, но это случилось со мной месяц назад.

Если ничего из того, что я сказал, не помогает, объясните, пожалуйста, еще немного. Спасибо.

Вы можете активировать журнал медленных запросов и начать с длительных запросов. Я добавил в закладки следующую страницу, даже если она на немецком языке: http://techblog.tilllate.com/2006/12/23/optimierung-von-mysql-abfragen-der-slow-query-log/

mysqldumpslow slow.log -t 10 -s t

Может быть, вы слишком часто выполняете эти запросы? Вы можете использовать EXPLAIN и посмотреть, нужно ли создать другой индекс для повышения производительности.

Есть блог о производительности mysql: http://www.mysqlperformanceblog.com/

В руководстве по mysql есть глава для вопросов по производительности: http://dev.mysql.com/doc/refman/5.5/en/innodb-performance.html

Во-первых, убедитесь, что вы используете 64-битную версию вместо 32-битной. Во-вторых, проверьте, как работает ваше хранилище (ожидает ввода-вывода). Если вы видите много% ожидания ввода-вывода, вероятно, вам потребуется улучшить подсистему хранения. (Улучшенный контроллер, более быстрые диски, RAID и т. Д.) В-третьих, убедитесь, что у вас есть журналы, записанные на другой раздел (DISK), чтобы вы могли изолировать записи.