|
"Подвисает" OLTP на IDS 7.31. Чем (и как) узнать причину?
|
|||
---|---|---|---|
#18+
День добрый. Есть БД на IDS 7.31 на SCO OSR 507. Трудится над OLTP 24х7. До 20ти запросов в секунду. Все запросы простые: выборка по PK, insert одной записи, update по индекс. полю. Все бы хорошо, но БД начала периодически и без явных причин "подвисать". Т.е. в один прекрасный момент все приложения, которые работают с базой, блокируют свое дальнейшее выполнение при любом запросе на изменение данных в БД. Затем все одновременно (с точностью до 0.01 сек) продолжают свою работу. Т.е. выглядит это примерно так: 1) что-то случается с БД в 12:00:00 2) С 12:00:00 по 12:00:05 все приложения делают запрос к БД и подвисают на нем. 3) С 12:00:05 по 12:00:25 вся система парализована. 4) В 12:00:25 все приложения отвисают. Такие вещи происходят до 10 раз в сутки. В online.log только записи о КТ (0-2 сек), окончании очередного журнала и о бекапе журналов (2-7 сек). База под репликацией HDR (!). Вопроса насчет этого безобразия 2: 1) Кто-нибудь на основании этого описания и своего опыта может предложить возможную причину? Буду крайне признателен. 2) Как и чем мне вычислить такую ситуацию. Предполагаю, что нужно запустить какое-то периодическое считование счетчиков IDS и ОС, но не знаю что именно... Еще этим мониторингом нельзя мешать работе самой системы. Вот еще: создается впечатление, что такие зависания наиболее вероятны после запроса UPDATE на несколько тыс. записей. Заранее всем спасибо за помощь! ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2009, 11:50 |
|
"Подвисает" OLTP на IDS 7.31. Чем (и как) узнать причину?
|
|||
---|---|---|---|
#18+
IDS admin Есть БД на IDS 7.31 Более точно версию, пожалуйста. IDS admin блокируют свое дальнейшее выполнение при любом запросе на изменение данных в БД. Затем все одновременно (с точностью до 0.01 сек) продолжают свою работу. ... Такие вещи происходят до 10 раз в сутки. В online.log только записи о КТ (0-2 сек), окончании очередного журнала и о бекапе журналов (2-7 сек). База под репликацией HDR (!). Описанные остановки - достаточно яркий признак. И обычно это чекпоинт - но слишком уж период остановки долгий. Репликация - вполне вероятно - но нужно явно больше информации. 1. Проверяли ли следующее: читающие запросы из какой-нибудь утилиты (dbaccess, eSQLEditor, ...) в моменті зависаний отрабатывают нормально? 2. Проверяли-ли состояние репликации onstat -g dri? (Хотя в online.log по Вашим словам ничего подозрительного. Отсюда следствие №1 "Не пересказівайте своими словами то, что можете взять из системы" (почти (с) ЧаВО) IDS admin Как и чем мне вычислить такую ситуацию. Предполагаю, что нужно запустить какое-то периодическое считование счетчиков IDS и ОС, но не знаю что именно... Еще этим мониторингом нельзя мешать работе самой системы. Как минимум, периодический onstat: работать должен с памятью, объём информации сохраняемый на винчестер достаточно небольшой при разумном пользовании. Даже если вы сделаете вручную в нужные моменты: до начала проблемы, в период зависания и после отвисания - уже неплохо. IDS admin Вот еще: создается впечатление, что такие зависания наиболее вероятны после запроса UPDATE на несколько тыс. записей. Подумайте, можете ли воспроизвести ситуацию либо определить моменты выполнения таких апдейтов для пристального слежения за системой. 10 раз в сутки на полчаса - это много - имхо, не самое время переживать о том, "чтобы мониторинг чего-нить там не затормозил" (хотя позаботиться - по мере возможности - стоит...). ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2009, 12:55 |
|
"Подвисает" OLTP на IDS 7.31. Чем (и как) узнать причину?
|
|||
---|---|---|---|
#18+
Следствие №2: почитайте "Как правиьно задвать вопросы" хотя юы ПОСЛЕ того, как спадёт горячка. №2: online.log в архив - и сюда в аттач. №3: Поскольку у Вас HDR - online.log с HDR - тоже сюда. №4: HDR используется только как резервный - или используется сессиями для получения данных? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2009, 13:01 |
|
"Подвисает" OLTP на IDS 7.31. Чем (и как) узнать причину?
|
|||
---|---|---|---|
#18+
Ну не на полчаса, а на 25 секунд. Возможно хватит обычного onstat -u в момент подвисания, для того чтобы увидеть, кого все ждут. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2009, 13:33 |
|
"Подвисает" OLTP на IDS 7.31. Чем (и как) узнать причину?
|
|||
---|---|---|---|
#18+
IDS admin...Все бы хорошо, но БД начала периодически и без явных причин "подвисать". Т.е. в один прекрасный момент все приложения, которые работают с базой, блокируют свое дальнейшее выполнение при любом запросе на изменение данных в БД. Затем все одновременно (с точностью до 0.01 сек) продолжают свою работу... Вопроса насчет этого безобразия 2: 1) Кто-нибудь на основании этого описания и своего опыта может предложить возможную причину? Буду крайне признателен... Вот еще: создается впечатление, что такие зависания наиболее вероятны после запроса UPDATE на несколько тыс. записей... Похоже на ожидание чекпоинта (контрольной точки, как Вы его называете). Также похоже на недостаточность размера физического журнала (если он заполняется на 75%, то инициируется чекпоинт). Желательно увидеть фрагмент online.log'а, охватывающий несколько таких зависаний, конфигурационный файл (обычно $INFORMIXDIR/etc/onconfig) или, как минимум, значение конф. параметра CKPTINTVL и выход onstat -l (идеально в момент зависания). К слову, onstat не замедлит работу Вашей системы. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2009, 13:38 |
|
"Подвисает" OLTP на IDS 7.31. Чем (и как) узнать причину?
|
|||
---|---|---|---|
#18+
АлексанIDS adminВот еще: создается впечатление, что такие зависания наиболее вероятны после запроса UPDATE на несколько тыс. записей... Похоже на ожидание чекпоинта (контрольной точки, как Вы его называете). Поддерживаю Александра. Инициируется КТ, все транзакции приостанавливаются, но алгоритм старых версий IDS не может приостановить ВСЕ текущие транзакции - продолжает работать та, в которой выполняется "критическая секция кода" (по доке). Сюда относятся, в том числе, и транзакции, которые ведут активную запись (вот вам и Update нескольких тысяч записей). Пока эта транзакция не закончит свое дело. все будут стоять и ждать. Ранее этого не наблюдалось, скорее всего, из-за того, что объемы UPDATE были меньше (таблицы со временем разрослись или пользователей стало больше). Если диагноз подтвердится - методі лечения предложим. Второй причиной может быть блокировка какой-то ключевой таблицы, с которой работают все приложения (пользователи) и которую "прихватывает" тот самый update. Нужен onstat -p за период активной работы (1-2 часа) или периодический просмотр блокировок или запрос по ожиданиям на блокировках по таблицам. Если не знаете как - спросите. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2009, 16:17 |
|
"Подвисает" OLTP на IDS 7.31. Чем (и как) узнать причину?
|
|||
---|---|---|---|
#18+
DaugavaНу не на полчаса, а на 25 секунд. Возможно хватит обычного onstat -u в момент подвисания, для того чтобы увидеть, кого все ждут. Мда, спасибо, облажался (с) Тогда и про контрольную точку можно подумать. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2009, 16:46 |
|
"Подвисает" OLTP на IDS 7.31. Чем (и как) узнать причину?
|
|||
---|---|---|---|
#18+
vasilisПоддерживаю Александра. Инициируется КТ, все транзакции приостанавливаются, но алгоритм старых версий IDS не может приостановить ВСЕ текущие транзакции - продолжает работать та, в которой выполняется "критическая секция кода" (по доке). IDS adminТакие вещи происходят до 10 раз в сутки. В online.log только записи о КТ (0-2 сек), окончании очередного журнала и о бекапе журналов (2-7 сек). vasilis, а что, в этом случае длительность КТ измеряется от момента начала непосредственно записи на диск, а не от момента начала всего процесса? Или делаем допуск на недостаточную внимательность IDS admin при чтении online.log? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2009, 16:50 |
|
"Подвисает" OLTP на IDS 7.31. Чем (и как) узнать причину?
|
|||
---|---|---|---|
#18+
Спасибо за советы. Пойду осмыслять) Вот доп. информация: onstat -g dri: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Последнее зависание произошло Код: plaintext 1.
Записи в online.log PRIMARY: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
Записи в online.log SECONDARY: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
Не могу понять, почему чекпойнты на read-only сервере дольше чем на основном. да и 22 секунды - это как то очень круто. Время окончания совпадает с временем "отвисания". И длительность похожа. Может как-то связано... ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2009, 18:43 |
|
"Подвисает" OLTP на IDS 7.31. Чем (и как) узнать причину?
|
|||
---|---|---|---|
#18+
IDS adminНе могу понять, почему чекпойнты на read-only сервере дольше чем на основном. да и 22 секунды - это как то очень круто. Время окончания совпадает с временем "отвисания". И длительность похожа. Может как-то связано... Таки Александр и vasilis были правы. Дальше нужно разбираться с железом, ОС и конфигом secondary... ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2009, 18:54 |
|
"Подвисает" OLTP на IDS 7.31. Чем (и как) узнать причину?
|
|||
---|---|---|---|
#18+
2 АнатоЛой АнатоЛой1. Проверяли ли следующее: читающие запросы из какой-нибудь утилиты (dbaccess, eSQLEditor, ...) в моменті зависаний отрабатывают нормально? Не могу сказать. Нужно "ловить" момент и запускать читающую утилиту. Как это сделать - ума не приложу. АнатоЛой Подумайте, можете ли воспроизвести ситуацию либо определить моменты выполнения таких апдейтов для пристального слежения за системой. Нет, никак. Данные генерируются "на лету". Много уникальных параметров. Чтобы воспроизвести реальные условия нужно очень большой стенд собирать. А синтетические тесты и бенчмарки тут, боюсь, не помогут, т.к. ни в одном из них не наблюдалось такое поведение. АнатоЛой №4: HDR используется только как резервный - или используется сессиями для получения данных? Насколько мне известно - только как резерв. Но я это еще проверю. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2009, 19:05 |
|
"Подвисает" OLTP на IDS 7.31. Чем (и как) узнать причину?
|
|||
---|---|---|---|
#18+
АнатоЛой, АнатоЛойТаки Александр и vasilis были правы. Дальше нужно разбираться с железом, ОС и конфигом secondary... А почему тогда зависания не наблюдаются, когда на Secondary проходит менее длительный чекпойнт? Например, когда он был Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2009, 19:08 |
|
"Подвисает" OLTP на IDS 7.31. Чем (и как) узнать причину?
|
|||
---|---|---|---|
#18+
DaugavaВозможно хватит обычного onstat -u в момент подвисания, для того чтобы увидеть, кого все ждут. Да я бы с радостью, но не знаю как мне это сделать непосредственно в момент подвисания. Только если делать его постоянно, раз в 5-10 секунд. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2009, 19:15 |
|
"Подвисает" OLTP на IDS 7.31. Чем (и как) узнать причину?
|
|||
---|---|---|---|
#18+
2 vasilis Thx. vasilisПоддерживаю Александра. Инициируется КТ, все транзакции приостанавливаются, но алгоритм старых версий IDS не может приостановить ВСЕ текущие транзакции - продолжает работать та, в которой выполняется "критическая секция кода" (по доке). Сюда относятся, в том числе, и транзакции, которые ведут активную запись (вот вам и Update нескольких тысяч записей). Пока эта транзакция не закончит свое дело. все будут стоять и ждать. Ранее этого не наблюдалось, скорее всего, из-за того, что объемы UPDATE были меньше (таблицы со временем разрослись или пользователей стало больше). Если диагноз подтвердится - методі лечения предложим. Второй причиной может быть блокировка какой-то ключевой таблицы, с которой работают все приложения (пользователи) и которую "прихватывает" тот самый update. Нужен onstat -p за период активной работы (1-2 часа) или периодический просмотр блокировок или запрос по ожиданиям на блокировках по таблицам. А разве КТ на Secondary сервере влияет на работу Primary? Ведь на Primary все КТ проходят быстро, а не 2-25 сек, как на Secondary. Сорри, возможно я не совсем понятно написал. Тот большой update, о котором идет речь, успевает закончится до зависаний за несколько минут. Иногда зависания вообще нельзя связать с этим update. Насчет блокировки ключевой таблицы - это вряд ли, т.к. подвисают ф-и разных приложений, работающие с разными таблицами. Там простые запросы, триггеров нет. onstat -p сделаю. Как лучше делать? Обнулить один раз (onstat -z) и через 1 час сделать onstat -p, либо за 1 час сделать N onstat-p и onstat-z? Если не знаете как - спросите. Как сделать периодический просмотр блокировок или запрос по ожиданиям на блокировках по таблицам? ) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2009, 19:38 |
|
"Подвисает" OLTP на IDS 7.31. Чем (и как) узнать причину?
|
|||
---|---|---|---|
#18+
IDS admin Код: plaintext 1.
Вместо UС5 что-нить побольше поставить не хотите-ли (по памяти, как минимум UD8 был)? Можно, конечно, сначала пошерстить и в перечне пофиксеных багов... ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2009, 19:42 |
|
"Подвисает" OLTP на IDS 7.31. Чем (и как) узнать причину?
|
|||
---|---|---|---|
#18+
IDS admin onstat -p сделаю. Как лучше делать? Обнулить один раз (onstat -z) и через 1 час сделать onstat -p, либо за 1 час сделать N onstat-p и onstat-z? Обнулить один раз (onstat -z) и в crontab повесить регулярный раз в 1 мин onstat -p с приписыванием имени файла даты-времени. IDS admin Как сделать периодический просмотр блокировок или запрос по ожиданиям на блокировках по таблицам? ) аналогично onstat -k - и в кронтаб ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2009, 19:51 |
|
"Подвисает" OLTP на IDS 7.31. Чем (и как) узнать причину?
|
|||
---|---|---|---|
#18+
АнатоЛойIDS admin Код: plaintext 1.
Вместо UС5 что-нить побольше поставить не хотите-ли (по памяти, как минимум UD8 был)? Можно, конечно, сначала пошерстить и в перечне пофиксеных багов... Хотим. Но не можем к сожалению. Тем более планируем вообще уходить со SCO и пересесть на 11.50 под Linux. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2009, 19:58 |
|
"Подвисает" OLTP на IDS 7.31. Чем (и как) узнать причину?
|
|||
---|---|---|---|
#18+
АнатоЛой Обнулить один раз (onstat -z) и в crontab повесить регулярный раз в 1 мин onstat -p с приписыванием имени файла даты-времени. аналогично onstat -k - и в кронтаб Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2009, 19:58 |
|
"Подвисает" OLTP на IDS 7.31. Чем (и как) узнать причину?
|
|||
---|---|---|---|
#18+
Всем спасибо за советы. Теперь есть четкое понимание: Зависания происходят в тот же момент, что и начало checkpoint'а на Secondary (!!!) сервере. Зависания заканчиваются одновременно с checkpoint'ом на Secondary сервере. Все с точностью до 0.5 сек. (время ИМХО по разному округляется в трассах) Теперь вопросы, 1) что из этого причина, а что следствие (зависания / долгие checkpoint'ы)? Либо эти оба факта есть следствия 3ей проблемы? 2) Почему так долго делаются checkpoint'ы на Secondary? 3) Как checkpoint'ы Secondary блокируют транзакции на Primary? 4) И главное. Если дело все-таки в checkpoint'ах на Secondary, то как их ускорить? Там неплохой сервер, корзина на 15 дисков, нормальный контроллер с кешем (150 МБ чтение, 360 запись). ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2009, 20:12 |
|
"Подвисает" OLTP на IDS 7.31. Чем (и как) узнать причину?
|
|||
---|---|---|---|
#18+
IDS admin4) И главное. Если дело все-таки в checkpoint'ах на Secondary, то как их ускорить? Там неплохой сервер, корзина на 15 дисков, нормальный контроллер с кешем (150 МБ чтение, 360 запись). "Хороший сервер" - это ВСЕГДА относительно :). Вы не так уж много рассказывали про нагрузку - только про "20 запросов в секунду" (как Вы их, кстати, считали?), "выборка по PK, insert одной записи, update по индекс. полю.". Реальный объём изменяемых и получаемых данных всё так же у нас в предположениях. "onstat -p" мы так и не увидели :) :(. Конфиги с обоих серверов тоже. Стесняетесь? Боитесь? ОК. :( Сравнивайте железо и конфиги на двух серверах: первичном и вторичном. НЕ хотите показывать весь конфиг - спрашивайте об отличиях конкретных параметров конфига или насколько важно такое-то и такое отличие в железе и настройках операционки и файловой системы. Сравнивайте onstat перичного и вторичного сервера. Для разборок: параметры конфига CKPTINTVL, CLEANERS, DRINTERVAL, LOGBUFF, LOGSIZE, LOGFILES, LRUS, LRU_MIN_DIRTY, LRU_MAX_DIRTY, NUMAIOVPS, ONDBSPACEDOWN, PHYSBUFF, PHYSFILE. Не помешает onstat -g iof, iov. Надеюсь, проверять скорость работы сетевого соединения между серверами не понадобится, а также не понадобится проверять, а не нагружен ли вторичный посторонней работой по отношению к Informix HDR :) Кроме того, возникают типичные вопросы: допустим у первого сервера проблем нет, и всякие обыденные мелочи типа разделения физического журнала, логического журнала, и rootdbs уже имеются. Тем не менее, нормально ли вторичном сервере расположены чанки на дисках, нормально ли работает дисковая система, чанки используются cooked, raw, ... Вопросов и идей много - поможет ли оно Вам без наличия нормальной обратной связи? Удачи. %) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2009, 23:06 |
|
"Подвисает" OLTP на IDS 7.31. Чем (и как) узнать причину?
|
|||
---|---|---|---|
#18+
IDS admin Код: plaintext 1. 2. 3. 4. 5. 6. 7.
а почему у вас чекпойнты так часто? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2009, 08:39 |
|
"Подвисает" OLTP на IDS 7.31. Чем (и как) узнать причину?
|
|||
---|---|---|---|
#18+
ТанIDS admin Код: plaintext 1. 2. 3. 4. 5. 6. 7.
а почему у вас чекпойнты так часто? Предполагаю, что это из-за CKPTINTVL = 0. Хотя судя по документации IBMСервер баз данных также может производить обработку контрольных точек при других условиях, например, когда физический журнал заполнится на 75 процентов. но интервал в обеих IDS строго 30 секунд. Особенность 7.31? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2009, 09:15 |
|
"Подвисает" OLTP на IDS 7.31. Чем (и как) узнать причину?
|
|||
---|---|---|---|
#18+
2 АнатоЛой, 2 ALL Итак, поехали: onstat -p за 1 час 30 минут работы Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
Сервера PRIMARY и SECONDARY 2 одинаковые машины (ОС, параметры ядра, onconfig, внутренние диски/контроллер). Различие есть только дисковой подсистеме, на которых работает информикс: на Primary SAS и 256 МБ кеш на Secondary SCSII U320 и 512 МБ кеш. На обоих серваках по 8 Core 2. По 4 ГБ ОП. Чанки везде - это RAW, под ними разделы дисков SCO (т.е. SCO видит диски, сконфигуренные на контроллере RAID 1+ 0, они fdisk'ом побиты на партиции, и каждая партиция затем побита на "разделы" divvy. Вот ссылки из /dev/r* - это и есть чанки. У всех, понятное дело crw-------) Месяц назад текущий Secondary был Primary. Работал точно так же, как сейчас работает бывший Secondary. Сеть между ними - это сеть только между ними (отдельные сетевухи у каждого из серваков воткнутые в один свитчик). Пинг в обе стороны < 1 ms. Скорость закачки файлов по FTP 9390.73 Kbytes/s (Primary - сервер, secondary - клиент). С сетью вроде все Ок. Почти все 100 МБит. Secondary сервер ничем кроме информикса в ReadOnly не нагружен. onconfig (одинаковый для обоих серверов приложил) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2009, 10:31 |
|
"Подвисает" OLTP на IDS 7.31. Чем (и как) узнать причину?
|
|||
---|---|---|---|
#18+
На всякий случай, 2 разных onstat -p. Для Prim и Sec. За онид и тот же промежуток времени. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
Видно, что Secondary читает с диска больше в 3.6 раза, а пишет меньше в 2.8 раза. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2009, 11:04 |
|
"Подвисает" OLTP на IDS 7.31. Чем (и как) узнать причину?
|
|||
---|---|---|---|
#18+
ТанIDS admin Код: plaintext 1. 2. 3. 4. 5. 6. 7.
а почему у вас чекпойнты так часто?Потому что сервер не настроен; как Вам, например, такое соотношение: размер одного журнала тр-й - 256 Мб (судя по конфигу, onstat -l он так и не показал; заметьте, и его хватает на 1,5-2 минуты...), а размер физического журнала - 32 Мб, и, кроме того, LRU_MIN_DIRTY/LRU_MAX_DIRTY - 20/30 и клинеров всего 8. Ещё и NUMAIOVPS не установлен - по-умолчанию используется 4 AIO VPs, кажется...). Соответственно, ему ничего не остаётся, как настроить чекпоинты как можно чаще - он и поставил в 0 (правда, тут уже сервер отказывается их делать чаще, чем раз в 30 секунд...) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2009, 11:34 |
|
|
start [/forum/topic.php?fid=44&msg=36044591&tid=1607802]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
60ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
others: | 332ms |
total: | 490ms |
0 / 0 |