У меня есть сервер Linux, который я использую для запуска БД моего приложения (MySql), у сервера есть 8 ГБ оперативной памяти и 4 ядра. на сервере нет других приложений, кроме MySql.
В большинстве случаев использование дискового ввода-вывода сервера составляет около 90–100%.
Вот дополнительная информация:
Uptime: 2387312 Threads: 29 Questions: 344977869 Slow queries: 3380301 Opens: 200483225 Flush tables: 1 Open tables: 9 Queries per second avg: 144.504
размер БД составляет около 70 ГБ, и если бы мне пришлось определить тип запросов, я бы сказал, что 60% - это простые запросы, а остальные более сложные (присоединитесь к нескольким таблицам и т. д.)
Я использую New Relic, чтобы получить коэффициент использования ввода-вывода, согласно Linode (где размещен сервер), средняя скорость ввода-вывода на сервере составляет: скорость ввода-вывода 10780 блоков в секунду
это нормально?
Количество «медленных запросов» немного велико. Загрузка диска также указывает на полное сканирование таблицы. Мне кажется, что в вашей базе данных отсутствуют некоторые индексы по часто используемым запросам. Присмотритесь к запросам - это значения выбора из индексированных таблиц?
В большинстве случаев загрузка дискового ввода-вывода сервера составляет около 90-100%.
Тогда ваш сервер привязан к вводу-выводу.
Обычное решение - добавить дополнительную емкость дискового ввода-вывода (= шпиндели).
Чистая догадка: возможно, ваш сервер создает на диске множество временных таблиц? Делает SHOW GLOBAL STATUS LIKE '%tmp%';
вернуть много дисковых таблиц, созданных по сравнению с таблицами tmp?
Если да, проанализируйте запросы и / или подумайте о повышении tmp_table_size
значение, если у вашего сервера есть место для дыхания с точки зрения памяти.