Отладка медленных запросов в MariaDB / MySQL

Я установил сервер MariaDB, и все работает хорошо, причем большинство запросов выполняются в течение менее 20 миллисекунд, но каждый раз запрос будет занимать полсекунды или больше (иногда несколько секунд) без каких-либо причин, по которым я был способный к пониманию.

Я знаю, что> 0,5 секунды может показаться не слишком длинной, но если я выполню аналогичный запрос, то он не завершится без заметной задержки, поэтому сам запрос не будет ошибочным. Я использую slow_query_log для отслеживания отложенных запросов, но он не показывает никаких очевидных преступников; время блокировки отложенных запросов составляет <1 мс, индексы используются с короткими длинами клавиш, затрагиваются несколько строк и т. д.

Моя настройка – Ubuntu Server 14.04 с MariaDB 10.0.22, в основном настройки ванили. У меня есть бинарный журнал включен (в режиме MIXED), поэтому я могу настроить репликацию позже, но я также заметил, что проблема с ним отключена. База данных хранит данные для приложения с низким уровнем воздействия PHP, работающего на одном сервере, но я не получаю более нескольких десятков одновременных соединений; в то время как это может повлиять на одну таблицу, ни одна из них не влияет на одну и ту же строку, и все мои таблицы – InnoDB (XtraDB на MariaDB, я считаю), поэтому блокировка не должна быть проблемой, и медленный журнал запросов, похоже, поддерживает это.

Запросы, которые задерживаются, – это все запросы UPDATE , но для таргетинга только одиночных строк с использованием короткого (целочисленного) первичного ключа, возможно, только 1 из 100 задерживается, но в течение дня такое количество запросов регулярно повторяется. Все поля имеют фиксированную длину (без капли или текстовых полей, только целые числа и короткие varchars).

Это относительное несоответствие времени (от 20 мс до 3 с +), которое меня озадачило, поскольку я не вижу никакой причины для этого, даже когда речь идет о нераскрытых таблицах и т. П. Я не вижу никаких очевидных всплесков производительности других программ; Я выполняю ежедневные резервные копии, которые иногда замедляют работу, но они выполняются в определенное время, в то время как медленные запросы происходят через весь день. Я использую HHVM для запуска PHP-скриптов в случае, если это имеет значение, но я нашел, что его память и использование ЦП намного более стабильны, чем ванильный PHP, и производительность отличная (когда не задерживается медленными запросами), поэтому она не кажется явный виновник, конечно, не для задержек в несколько секунд, поскольку он имеет тот же приоритет, что и MariaDB.

Есть ли что-то еще, что я могу сделать, чтобы отлаживать это, любые возможные настройки MariaDB, которые, возможно, необходимо настроить?

[править] В соответствии с просьбой Руи Ф. Рибейро, вот некоторые дополнительные статистические данные; это довольно скромный сервер, но он очень легко используется:

free -m :

  total used free shared buffers cached Mem: 993 768 225 8 83 304 -/+ buffers/cache: 380 613 Swap: 0 0 0 

vmstat :

 procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- rb swpd free buff cache si so bi bo in cs us sy id wa st 0 0 0 231752 85788 311716 0 0 15 38 30 32 0 0 99 1 0 

uptime :

  12:12:24 up 11 days, 21:32, 1 user, load average: 0.11, 0.08, 0.06 

sudo /etc/init.d/mysql status :

  * /usr/bin/mysqladmin Ver 9.1 Distrib 10.0.22-MariaDB, for debian-linux-gnu on x86_64 Copyright (c) 2000, 2015, Oracle, MariaDB Corporation Ab and others. Server version 10.0.22-MariaDB-1~precise-log Protocol version 10 Connection Localhost via UNIX socket UNIX socket /var/run/mysqld/mysqld.sock Uptime: 1 day 16 hours 23 min 23 sec Threads: 1 Questions: 32381 Slow queries: 1089 Opens: 92 Flush tables: 5 Open tables: 17 Queries per second avg: 0.222 

Поскольку mysql был в последний раз перезапущен, похоже, что у меня было намного больше, чем 1 из 100 медленных запросов (так как средний путь вверх). Также стоит отметить, что я использую постоянные подключения (которые должны учитывать низкое количество открытий), через PHP-интерфейс MySQLi (так что в то время как постоянные, блокировки и т. Д. Освобождаются автоматически).

Linux и Unix - лучшая ОС в мире.