Мне кажется, что мой сервер 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), чтобы вы могли изолировать записи.