Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / MySQL Новый топик    Ответить
 Висит таблица при первом открытии  [new]
hated
Member

Откуда:
Сообщений: 53
Здрасте всем!

В общем: Пару дней назад хостер перезагрузил наш впс и начались взаимоблокировки запросов в PROCESSLIST со всеми вытекающими. Которых раньше не было. Сколько ни искали причину мы, сколько не писали б хостеру в тикетах причина до сих пор не найдена.
Блокируются всегда запросы с одной и той же таблицей, но это логично так как она самая крупная ~750т. записей и самая востребованная)) Запросы блокирующие - всегда разные но всегда к этой таблице.

Что смущает больше всего это не стабильное время выполнения запроса. Смотришь в PROCESSLIST висит запрос 300сек. блокирует кучу других. Копирую его - убиваю - делаю в ручную в phpmyadmin = отрабатывает за микросекунды. И вопрос не в кеше первое что попробовали это:
set @@global.query_cache_size=0;
результатов ни каких не дало.
Едем дальше... Стабильно висят запросы при первом обращении:
1) перезагружаю сервер
2) Захожу в phpMyadmin под рутом и запускаю простой запрос
select SQL_NO_CACHE count(`id`) FROM `bigTable` where tip=2
и получаю зависание длиною 30-70секунд! Висит всё! Даже SHOW PROCESSLIST висит и phpMyadmin не откликается. Иногда SHOW PROCESSLIST не висит, работает, но запроса этого он не показывает на всём пути его выполнения.
3) В итоге запрос всё таки отрабатывает и возвращает результат. Тут же запускаю его снова и он отрабатывает уже меньше чем за секунду!
4) Убираю SQL_NO_CACHE отрабатывает за несколько миллисекунд.(из кэша)
5) Проходит время таблица видимо притерпевает изменения данных. И снова запрос работает 50+ секунд...

Что это и почему так происходит?
12 авг 17, 13:38    [20718569]     Ответить | Цитировать Сообщить модератору
 Re: Висит таблица при первом открытии  [new]
miksoft
Member

Откуда:
Сообщений: 36322
hated,

таблица на каком движке?
12 авг 17, 14:29    [20718616]     Ответить | Цитировать Сообщить модератору
 Re: Висит таблица при первом открытии  [new]
hated
Member

Откуда:
Сообщений: 53
miksoft
hated,

таблица на каком движке?


MyISAM
12 авг 17, 14:41    [20718634]     Ответить | Цитировать Сообщить модератору
 Re: Висит таблица при первом открытии  [new]
hated
Member

Откуда:
Сообщений: 53
Очень прошу помощи... Уже головы сломали - всё без толку... Клиенты на части уже рву всё висит...
12 авг 17, 15:09    [20718693]     Ответить | Цитировать Сообщить модератору
 Re: Висит таблица при первом открытии  [new]
hated
Member

Откуда:
Сообщений: 53
Ну хоть чисто теоретически ответьте.
Как работает мускул при первом запросе к таблице? Почему первый запрос после запуска сервера всегда дольше, чем все последующие запросы?
12 авг 17, 18:05    [20718887]     Ответить | Цитировать Сообщить модератору
 Re: Висит таблица при первом открытии  [new]
javajdbc
Member

Откуда: Montreal
Сообщений: 17086
hated
Очень прошу помощи... Уже головы сломали - всё без толку... Клиенты на части уже рву всё висит...



задержки в конкретное число секунд 10, 30, 60, 300 могут быть
вызваны сетевыми проблемами.
У нас был случай что слетел локальный нейм-ресолюшн и
ВСЕ первые запросы зависали на конкретно 30 секунд.
"первые запросы" -- первый запрос на новой конекции.

Решилось за 5 секунд рестартом сервера с опцией
скип-нейм-ресолюшн... при ето, естесвено,
никаких ИМЕНЫХ грантов не должно быть, только по ИП.

(не доказано что это ваш случай, но вдруг поможет)
12 авг 17, 18:09    [20718892]     Ответить | Цитировать Сообщить модератору
 Re: Висит таблица при первом открытии  [new]
javajdbc
Member

Откуда: Montreal
Сообщений: 17086
доки по теме:

https://dev.mysql.com/doc/refman/5.7/en/host-cache.html

https://dev.mysql.com/doc/refman/5.7/en/server-options.html#option_mysqld_skip-name-resolve
12 авг 17, 18:10    [20718894]     Ответить | Цитировать Сообщить модератору
 Re: Висит таблица при первом открытии  [new]
hated
Member

Откуда:
Сообщений: 53
javajdbc
hated
Очень прошу помощи... Уже головы сломали - всё без толку... Клиенты на части уже рву всё висит...



задержки в конкретное число секунд 10, 30, 60, 300 могут быть
вызваны сетевыми проблемами.
У нас был случай что слетел локальный нейм-ресолюшн и
ВСЕ первые запросы зависали на конкретно 30 секунд.
"первые запросы" -- первый запрос на новой конекции.

Решилось за 5 секунд рестартом сервера с опцией
скип-нейм-ресолюшн... при ето, естесвено,
никаких ИМЕНЫХ грантов не должно быть, только по ИП.

(не доказано что это ваш случай, но вдруг поможет)


Не, такой конкретики нет. Скорее в процентном соотношении. любая таблица базы. Допустим беру табличку полегче после рестарта сервера первый запрос к ней 2секунды, повторные уже как надо 0,2-0,1 убираю из запроса sql_no_cache работает кэш и запрос отлетает за 0.00001.
Просто я пытаюсь понять это нормальная работа мускула или это симптом той болячки которую мы уже 3тьи сутки ищем.?
12 авг 17, 18:31    [20718919]     Ответить | Цитировать Сообщить модератору
 Re: Висит таблица при первом открытии  [new]
javajdbc
Member

Откуда: Montreal
Сообщений: 17086
hated
javajdbc
пропущено...



задержки в конкретное число секунд 10, 30, 60, 300 могут быть
вызваны сетевыми проблемами.
У нас был случай что слетел локальный нейм-ресолюшн и
ВСЕ первые запросы зависали на конкретно 30 секунд.
"первые запросы" -- первый запрос на новой конекции.

Решилось за 5 секунд рестартом сервера с опцией
скип-нейм-ресолюшн... при ето, естесвено,
никаких ИМЕНЫХ грантов не должно быть, только по ИП.

(не доказано что это ваш случай, но вдруг поможет)


Не, такой конкретики нет. Скорее в процентном соотношении. любая таблица базы. Допустим беру табличку полегче после рестарта сервера первый запрос к ней 2секунды, повторные уже как надо 0,2-0,1 убираю из запроса sql_no_cache работает кэш и запрос отлетает за 0.00001.
Просто я пытаюсь понять это нормальная работа мускула или это симптом той болячки которую мы уже 3тьи сутки ищем.?


скачайте вот эту утилитку и посмотрите что она подсоветует.
https://raw.githubusercontent.com/major/MySQLTuner-perl/master/mysqltuner.pl
12 авг 17, 19:27    [20718989]     Ответить | Цитировать Сообщить модератору
 Re: Висит таблица при первом открытии  [new]
Jude
Member

Откуда: Mars
Сообщений: 2471
hated
Здрасте всем!

В общем: Пару дней назад хостер перезагрузил наш впс и начались взаимоблокировки запросов в PROCESSLIST со всеми вытекающими. Которых раньше не было. Сколько ни искали причину мы, сколько не писали б хостеру в тикетах причина до сих пор не найдена.
Блокируются всегда запросы с одной и той же таблицей, но это логично так как она самая крупная ~750т. записей и самая востребованная)) Запросы блокирующие - всегда разные но всегда к этой таблице.

Что смущает больше всего это не стабильное время выполнения запроса. Смотришь в PROCESSLIST висит запрос 300сек. блокирует кучу других. Копирую его - убиваю - делаю в ручную в phpmyadmin = отрабатывает за микросекунды. И вопрос не в кеше первое что попробовали это:
set @@global.query_cache_size=0;
результатов ни каких не дало.
Едем дальше... Стабильно висят запросы при первом обращении:
1) перезагружаю сервер
2) Захожу в phpMyadmin под рутом и запускаю простой запрос
select SQL_NO_CACHE count(`id`) FROM `bigTable` where tip=2
и получаю зависание длиною 30-70секунд! Висит всё! Даже SHOW PROCESSLIST висит и phpMyadmin не откликается. Иногда SHOW PROCESSLIST не висит, работает, но запроса этого он не показывает на всём пути его выполнения.
3) В итоге запрос всё таки отрабатывает и возвращает результат. Тут же запускаю его снова и он отрабатывает уже меньше чем за секунду!
4) Убираю SQL_NO_CACHE отрабатывает за несколько миллисекунд.(из кэша)
5) Проходит время таблица видимо притерпевает изменения данных. И снова запрос работает 50+ секунд...

Что это и почему так происходит?

блокировки?
дедлоки?
может с майисам поменять на иннодб? и посмотреть че получится.

вероятный сценарий.
1) что-то пытается записаться в файл.
2) блочится файл ЦЕЛИКОМ
3) чтоние заблокированного файла не возможно - все висит.
4) повсле того, как убили блокирующий запрос все пошло бодрее.
14 авг 17, 12:28    [20721470]     Ответить | Цитировать Сообщить модератору
Все форумы / MySQL Ответить