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

Использование дискового ввода-вывода сервера БД

У меня есть сервер 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 значение, если у вашего сервера есть место для дыхания с точки зрения памяти.