|
Мучают блокировки...
|
|||
---|---|---|---|
#18+
Вобщем, "ты ещё заходи - идеи есть!" (с) анекдот ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2009, 16:11 |
|
Мучают блокировки...
|
|||
---|---|---|---|
#18+
ДбашкабррСтатистика... 1-й сервер: Код: plaintext 1. 2. 3. 4. 5. 6.
2-сервер: Код: plaintext 1. 2. 3. 4. 5. 6.
на втором сервере нет проблемы с seqscans ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2009, 16:32 |
|
Мучают блокировки...
|
|||
---|---|---|---|
#18+
я думаю что высокая нагрузка на диски из-за роллбеков. Роллбеки из-за дидлоков и откатов из-за таймаута ожидания блокировки. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2009, 17:32 |
|
Мучают блокировки...
|
|||
---|---|---|---|
#18+
ну и бурное обсуждение прошло - пришлось кучу времени потратить на беглый просмотр. Толи тема очень актуальная, то ли на работе у многих время появилось :) АнатоЛойАга, то есть править можно только со стороны БД? Какой интересный случай, коллеги :). Согласен, не просто интересный, а очень редкий. Просто мечта админа :) АнатоЛой Что ж, анализируйте использование вышепомянутых "проблемных" таблиц: cdr, deals_tq, accounts, ... - и будет вам счастье... Кстати, тот же deals_tq в сочетании с SEQSCAN в sqexplain ХП не упоминается - но поводом для большого pagereads может быть и неудачный индекс.... или его "корявость" А почему никто не предложил прочекать вторую базу ? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2009, 18:53 |
|
Мучают блокировки...
|
|||
---|---|---|---|
#18+
Журавлев Денися думаю что высокая нагрузка на диски из-за роллбеков. Роллбеки из-за дидлоков и откатов из-за таймаута ожидания блокировки. а блокировки из-за высокой нагрузки на диски ? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2009, 19:43 |
|
Мучают блокировки...
|
|||
---|---|---|---|
#18+
ТанДбашкабррСтатистика... 1-й сервер: seqscans 73969 2-сервер: seqscans 9559 на втором сервере нет проблемы с seqscans Не вижу даже 50% прямой зависимости между величиной показателя seqscans и прочими проблемами. Я как раз и приводил такой пример с большим количеством seqscan'ов и SELECT FIRST 1. Если считать что подобных "приколов" нет, и все seqscan нужно умножать на "seqscannedtable".nrows - увидим совсем другую картину... Если бы на обоих сервера во всех таблицах количество записей было пропорционально, и функциональность бы использовалась пропорционально, и период, за который собрана статистика, и ... Ну представьте на минутку, что на втором сервере проблема выглядит следующим образом: 1. в deals_tq - 7 млн записей, в отличие от сервера 1 2. часть "непроблемных seqscan" была по deals_tq - и поскольку на 1-ом сервере 0 записей, а на втором 7 млн, получаем, что для получения 250 млн pagereads на втором достаточно запустить запрос c seqscan аж 35 раз (раз в 5 мин в течение рабочего дня или раз в 15 мин в течение суток - за это время из буферов записи этой таблицы уже успевают вытесниться) 3. В результате активного чтения с диска (SECSCAN deals_tq) возрастает время работы других запросов. Ожидания блокировок начинают превышать lock time (приводит к откатам транзакций и возрастанию нагрузки на диски) 4. Общая производительность системы немного падает 5. В программном коде из-за использования "SET LOCK MODE TO WAIT;" падение производительности приводит к более длительному ожиданию, что в свою очередь приводит к выявлению сервером deadlocks, последующей генерацией жертвами-сессиями exception и последующими откатами транзакций, что начинает загонять сервер в глухой угол. (Всё это на фоне мрачного RAID 5 с WriteThru - слово-то какое ) Апокалипсис... П.С.: Берёте в сценаристы? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2009, 22:46 |
|
Мучают блокировки...
|
|||
---|---|---|---|
#18+
АнатоЛойТанДбашкабррСтатистика... 1-й сервер: seqscans 73969 2-сервер: seqscans 9559 на втором сервере нет проблемы с seqscans Не вижу даже 50% прямой зависимости между величиной показателя seqscans и прочими проблемами. Я как раз и приводил такой пример с большим количеством seqscan'ов и SELECT FIRST 1. Если считать что подобных "приколов" нет, и все seqscan нужно умножать на "seqscannedtable".nrows - увидим совсем другую картину... Если бы на обоих сервера во всех таблицах количество записей было пропорционально, и функциональность бы использовалась пропорционально, и период, за который собрана статистика, и ... Ну представьте на минутку, что на втором сервере проблема выглядит следующим образом: 1. в deals_tq - 7 млн записей, в отличие от сервера 1 2. часть "непроблемных seqscan" была по deals_tq - и поскольку на 1-ом сервере 0 записей, а на втором 7 млн, получаем, что для получения 250 млн pagereads на втором достаточно запустить запрос c seqscan аж 35 раз (раз в 5 мин в течение рабочего дня или раз в 15 мин в течение суток - за это время из буферов записи этой таблицы уже успевают вытесниться) 3. В результате активного чтения с диска (SECSCAN deals_tq) возрастает время работы других запросов. Ожидания блокировок начинают превышать lock time (приводит к откатам транзакций и возрастанию нагрузки на диски) 4. Общая производительность системы немного падает 5. В программном коде из-за использования "SET LOCK MODE TO WAIT;" падение производительности приводит к более длительному ожиданию, что в свою очередь приводит к выявлению сервером deadlocks, последующей генерацией жертвами-сессиями exception и последующими откатами транзакций, что начинает загонять сервер в глухой угол. (Всё это на фоне мрачного RAID 5 с WriteThru - слово-то какое ) Апокалипсис... П.С.: Берёте в сценаристы? :) я хотела сказать, что в данном случае не стоит кидаться на изучение sqexplain с целью побороть сексканы. что надо в другом месте проблему искать ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2009, 09:12 |
|
Мучают блокировки...
|
|||
---|---|---|---|
#18+
АнатоЛой П.С.: Берёте в сценаристы? :) +1 сценарий поддерживаю. Тан я хотела сказать, что в данном случае не стоит кидаться на изучение sqexplain с целью побороть сексканы. что надо в другом месте проблему искать Тоже +1. Там все ясно, нужно что то делать с deals_tq. По таблице в 0 записей на сервере 1 планы будут( могут показывать) фулсканы, а по серверу 2 могут их не показывать для одних запросов, а для других показывать. В приложении нужно выключать функционал заполняющий данными таблицу deals_tq. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2009, 09:56 |
|
Мучают блокировки...
|
|||
---|---|---|---|
#18+
Итак подвожу итоги :) Основная проблема второго сервера все таки в 5-рейде... как ни крути, а для БД это не лучшее решение... Усугубляет дело отсутствие батарейки и как следствие выключенный режим Write-Back. Смею предположить, что если б это был какой нить 10-рейд с 6 дисками... то сервер бы "скушал" такой объем IO без всяких проблем. АнатоЛой Не вижу даже 50% прямой зависимости между величиной показателя seqscans и прочими проблемами. Я как раз и приводил такой пример с большим количеством seqscan'ов и SELECT FIRST 1. Если считать что подобных "приколов" нет, и все seqscan нужно умножать на "seqscannedtable".nrows - увидим совсем другую картину... Если бы на обоих сервера во всех таблицах количество записей было пропорционально, и функциональность бы использовалась пропорционально, и период, за который собрана статистика, и ... Ну представьте на минутку, что на втором сервере проблема выглядит следующим образом: 1. в deals_tq - 7 млн записей, в отличие от сервера 1 2. часть "непроблемных seqscan" была по deals_tq - и поскольку на 1-ом сервере 0 записей, а на втором 7 млн, получаем, что для получения 250 млн pagereads на втором достаточно запустить запрос c seqscan аж 35 раз (раз в 5 мин в течение рабочего дня или раз в 15 мин в течение суток - за это время из буферов записи этой таблицы уже успевают вытесниться) 3. В результате активного чтения с диска (SECSCAN deals_tq) возрастает время работы других запросов. Ожидания блокировок начинают превышать lock time (приводит к откатам транзакций и возрастанию нагрузки на диски) 4. Общая производительность системы немного падает 5. В программном коде из-за использования "SET LOCK MODE TO WAIT;" падение производительности приводит к более длительному ожиданию, что в свою очередь приводит к выявлению сервером deadlocks, последующей генерацией жертвами-сессиями exception и последующими откатами транзакций, что начинает загонять сервер в глухой угол. (Всё это на фоне мрачного RAID 5 с WriteThru - слово-то какое ) Апокалипсис... П.С.: Берёте в сценаристы? :) Тут АнатоЛой соверенно прав. На уровне БД была включена логика проведения бухгалтерских проводок... огромный потом IO в таблице deals_tq ... генерация IOs была мощнейшая... затык в дисках, LOCK, ROLLBACK и диски были завалены операциями отката... В итоге вечером я отключил ненужный функционал и сервер вздохнул :) Блокировки редко проскакивают .. сервер стал "пошустрее работать". Так же принято решение купить таки батарейку и включить Write-Back, благо не такие большие деньги. Вот свежая картина :) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42.
Уровень IOs упал почти в 10 раз :) Проблемки с локами наблюдаются небольшие, но я думаю они локализуются после покупки батарейки +большая свобода действий с моей стороны на уровне БД поможет делу :) Спасибо всем кто принимал участие... Помогли :) Отдельное спасибо: Журавлев Денис,onstat- ,svat2 ,АнатоЛой за разбор полетов :) З.Ы. тему можно закрыть. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2009, 10:37 |
|
Мучают блокировки...
|
|||
---|---|---|---|
#18+
Дбашкабрр В итоге вечером я отключил ненужный функционал и сервер вздохнул :) Блокировки редко проскакивают .. сервер стал "пошустрее работать". А вы почистили ту самую табличку от 7 млн. строк ? Функционал записи в табличку вы отключили, но , боюсь. что она по прежнему читается другими запросами. Дбашкабрр Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Хотя интенсивность работы с диском и уменьшилась на порядок, но она все еще большая. У вас, помнится, на 2-м сервере 4 гига ОП , а использовалось Информиксом менее 700М. Да и дополнительные сегменты памяти добавлялись... Можно значительно расширить буферный пул (почти в два раза) и настроить, чтобы совсем не было дополнительных сегментов. кстати. они могут возникать из-за динамического увеличения блокировок (у вас row на больших таблицах). ДбашкабррОтдельное спасибо: Журавлев Денис,onstat- ,svat2 ,АнатоЛой за разбор полетов :) А мы с Даугавой первыми обратили внимание на железячные проблемы :) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2009, 17:24 |
|
Мучают блокировки...
|
|||
---|---|---|---|
#18+
> time dd if=/dev/zero bs=1024k count=1000 of=/home/1Gb.file Лень было мне раньше писать, напишу сейчас. Вы тестируете блоком 1024k и диск может показать неплохую произв., но информикс работает с bs=2k и проблема в том что они рандомны. Т.е. при записи 2кб, рейд без батарейки вынужден переписать 64кб (размер страйпа) на всех дисках, writeback это нивелирует потому что копит порцию изменений и меньше дергает диски. Тестируйте с помощью iometer, iozone, bonie, и прежде всего рандомное чтение/запись 2кб блоков (размер страницы в вашей бд), на больших файлах (разделах) превосходящих размер кеша рейда в разы. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2009, 09:00 |
|
Мучают блокировки...
|
|||
---|---|---|---|
#18+
Кроме того, тестировать надо не один поток, а несколько. Ибо работает то не один юзер. Когда я проводил свой тест с помощью dd у меня на одном потоке RAID5 чуть не в лидерах был. Кстати, вместо "iometer, iozone, bonie" нужно просто запустить количество dd равное среднему количеству активных юзеров. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2009, 09:33 |
|
Мучают блокировки...
|
|||
---|---|---|---|
#18+
Daugava нужно просто запустить количество dd равное среднему количеству активных юзеров. Если не используется KAIO, то лучше количество активyых VIO + LIO + PIO серверов из onstat -g glo . ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2009, 12:01 |
|
Мучают блокировки...
|
|||
---|---|---|---|
#18+
onstat-Daugava нужно просто запустить количество dd равное среднему количеству активных юзеров. Если не используется KAIO, то лучше количество активyых VIO + LIO + PIO серверов из onstat -g glo . Даже если KAIO и используется, то все равно Daugava погорячился :) Ведь пишут на диск не юзеры (пользовательские нити), а ограниченное число пишущих процессов IDS. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2009, 12:41 |
|
Мучают блокировки...
|
|||
---|---|---|---|
#18+
Да, не подумал. У меня просто количество юзеров и пишущих процессов примерно равны, пожалуй даже юзеров поменьше будет :). Но основная мысль была в том, что замерять надо не один активный процесс. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2009, 12:46 |
|
Мучают блокировки...
|
|||
---|---|---|---|
#18+
А что за софт такой, здесь в скриншотах иллюстрируется? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.09.2009, 12:59 |
|
Мучают блокировки...
|
|||
---|---|---|---|
#18+
vasilisДаже если KAIO и используется, то все равно Daugava погорячился :) Ведь пишут на диск не юзеры (пользовательские нити), а ограниченное число пишущих процессов IDS. Признаю, вспылил был не прав :). Просто сейчас у меня активных юзеров меньше, чем пишущих процессов IDS. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2009, 09:21 |
|
Мучают блокировки...
|
|||
---|---|---|---|
#18+
Вопрос к топикстартеру: Заглянул в тему и вот что заметил в ваших конфигах: Первая система: ... NUMCPUVPS 16 NUMAIOVPS 2 Вторая система: ... NUMCPUVPS 4 NUMAIOVPS 12 Почему такой странное и как мне кажется нелогичное кол-во NUMAIOVPS для обоих систем? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2009, 16:18 |
|
Мучают блокировки...
|
|||
---|---|---|---|
#18+
DaugavavasilisДаже если KAIO и используется, то все равно Daugava погорячился :) Ведь пишут на диск не юзеры (пользовательские нити), а ограниченное число пишущих процессов IDS. Признаю, вспылил был не прав :). Просто сейчас у меня активных юзеров меньше, чем пишущих процессов IDS. Дежавю :) Ты ведь уже реагировал на мое сообщение буквально следующим постом от 29 мая http://sql.ru/forum/actualthread.aspx?tid=666972&pg=5 Может тебе его не видно ? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2009, 19:46 |
|
Мучают блокировки...
|
|||
---|---|---|---|
#18+
vasilisДежавю :) Голова забита черт знамо чем :) Старая тема всплыла, вскольз глазами пробежал, свой ответ проглядел. Одно хорошо, что отреагировал практически одинаково. Наверное правду сказал :). ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2009, 12:02 |
|
Мучают блокировки...
|
|||
---|---|---|---|
#18+
Здавствуйте, уважаемые форумчане! Подскажите, как рассчитать EXTENT SIZE и NEXT SIZE. Работаю с Informix 9.xx на платформе UNIX. Дело в загрузке данных. Имеется сруктура таблица, количесво загружаемых записей. Просьба помочь, не получается разобраться... Формула, ссылка, объяснение, буду очень признателен Модератор: создавайте новые темы, не надо задавать вопросы в старых, не имеющих отношения к вопросу. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2009, 11:00 |
|
Мучают блокировки...
|
|||
---|---|---|---|
#18+
first - rowsize* numrows + малость накинуть, так как не все место идет под данные rowsize можно вытянуть c systables echo "select * from systables where tabname = '<...>' " | dbaccess <dbname> numrows - думаю ясно откуда next - эт как места не жалко и от размера зависит, в вашем случае скорее даже на глаз - чтоб и не слишком много и не слишком мало. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2009, 11:17 |
|
|
start [/forum/topic.php?fid=44&msg=36015451&tid=1607681]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
55ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
others: | 327ms |
total: | 482ms |
0 / 0 |