|
Подвисание Firebird
|
|||
---|---|---|---|
#18+
Добрый день! Вопрос в первую очередь к разработчикам... Имеется Firebird x86 Classic V2.5.3.26778 База ~800Г Пользователей ~200 Win2012 x64 *** Время от времени (один раз в 2-3 месяца, иногда и реже) происходит "залипание" всех FB-процессов при 100% загрузке одного из них. Помогает только terminate процесса. При этом дисковые операции по всем процессам отсутствуют. Версия Ос/железо не имеет значения, т.к. за время существования проблемы менялась и ОС и железо, а проблема осталась (была Win2008x32, сейчас Win2012x64, железо сменилось с HP на Intel). Касается всех версий FB2.5 до 2.5.3.26778 включительно. Проблема не воспроизводится на тестах и не зависит от выполняемой задачи. Сегодня удалось поймать и снять стек "зависшего" потока, а также дамп этого процесса (SysInternals). Фрагмент зависшего потока, есть стеки и остальных потоков проблемного процесса. ======================================= Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9.
Если нужно, дамп могу куда-то выложить. Или подскажите куда еще смотреть. Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2015, 13:12 |
|
Подвисание Firebird
|
|||
---|---|---|---|
#18+
hvlad, то есть, надо 2.5.4, а точнее - снапшот 2.5.5. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2015, 14:39 |
|
Подвисание Firebird
|
|||
---|---|---|---|
#18+
У меня какие-то похожие подвисания происходят на версии "WI-V2.5.4.26856 Firebird 2.5". Эти подвисания начались давно, еще на 2.5.(не помню, вроде 2). Недавно, уже на 2.5.4.26856, попробовал вместо TCP/IP подключаться по локальному протоколу. Результат: зависания стали короче. Если раньше (на TCP) зависание длилось от 2 до 4 минут, то теперь (на локальном протоколе) не более минуты. Во время обычной работы кол-во пользователей, одновременно подключенных к базе, не более 15. База >200Гб. В момент подвисания кол-во пользователей доходит до ~60. У нас CGI приложение, без пула коннектов. Т.е. работа происходит в режиме "коннект-запрос-дисконнект". Подключения по TCP/IP сейчас есть, но в существенно меньших количествах, - это репликация работает, с другого сервака коннекты. Пробовал "фотографировать" вывод fb_lock_print.exe -d %BASE% (зашедулил ежеминутно проверку на кол-во процессов fb_inet_server.exe, если более 20, то запускается fb_lock_print) Во время работы по TCP\IP вывод был примерно такой: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Во время работы по локальному протоколу вывод стал примерно такой: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Когда подвисания нет, вывод такой: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Эти цифры содержат какую-нибудь информацию, полезную для понимания причин зависаний ? Вопрос в том, вылечатся ли зависания сменой версии на новый снапшот ? Так-то в работу снапшот ставить как-то страшновато ... ... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2015, 10:09 |
|
Подвисание Firebird
|
|||
---|---|---|---|
#18+
Секретное имя пользователяУ меня какие-то похожие подвисания происходятЧто в них "похожего", кроме самого факта ? Секретное имя пользователяЭти цифры содержат какую-нибудь информацию, полезную для понимания причин зависаний ?Нет ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2015, 09:22 |
|
Подвисание Firebird
|
|||
---|---|---|---|
#18+
Секретное имя пользователя, если есть возможность попробуй суперклассик. Мне кажется он должен быть быстрее в режиме соединился/разъединился ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2015, 09:50 |
|
Подвисание Firebird
|
|||
---|---|---|---|
#18+
Симонов ДенисСекретное имя пользователя, если есть возможность попробуй суперклассик. Мне кажется он должен быть быстрее в режиме соединился/разъединилсяПроверял на другом проекте - там действительно быстрее, оно и понятно, не требуется запускать новые процессы. Но в данном проекте пока нет возможности, ибо УДФ переписывать придется на 64 бита, пока не до этого. А суперклассик на 32 битах - низко летает. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2015, 13:58 |
|
Подвисание Firebird
|
|||
---|---|---|---|
#18+
Добрый день! Заменил сервер на V2.5.5.26916, проблема с зависанием процесса и блокировкой остальных процессов сохраняется. Помогает, как всегда, только terminate процесса. Имеется дамп зависшего процесса. Стек зависшего потока ================================ ntoskrnl.exe!KiSwapContext+0x76 ntoskrnl.exe!KiDeferredReadyThread+0x2f0 ntoskrnl.exe!KeSetEvent+0x2aa ntoskrnl.exe!KiDispatchInterruptContinue+0x16 ntoskrnl.exe!KiDpcInterruptBypass+0x25 ntoskrnl.exe!KiIpiInterrupt+0x10c fb_inet_server.exe!Firebird::SortedVector<Firebird::SparseBitmap<unsigned __int64,Firebird::BitmapTypes_64>::Bucket,25,unsigned __int64,Firebird::SparseBitmap<unsigned __int64,Firebird::BitmapTypes_64>::Bucket,Firebird::DefaultComparator<unsigned __int64> fb_inet_server.exe!BTreeNode::readNode+0xd fb_inet_server.exe!scan+0x432 fb_inet_server.exe!BTR_evaluate+0x3ae fb_inet_server.exe!EVL_bitmap+0x1de fb_inet_server.exe!EVL_bitmap+0x5a fb_inet_server.exe!RSE_open+0x297 fb_inet_server.exe!fetch_record+0x66 fb_inet_server.exe!fetch_record+0x58 fb_inet_server.exe!get_record+0x5fd fb_inet_server.exe!get_union+0x2e fb_inet_server.exe!get_record+0x611 fb_inet_server.exe!open_sort+0xe1 fb_inet_server.exe!RSE_open+0x34a fb_inet_server.exe!EXE_looper+0x3ae fb_inet_server.exe!looper_seh+0x45 fb_inet_server.exe!execute_looper+0x89 fb_inet_server.exe!EXE_receive+0xef fb_inet_server.exe!execute_procedure+0x1e6 fb_inet_server.exe!EXE_looper+0x35a fb_inet_server.exe!looper_seh+0x45 fb_inet_server.exe!execute_looper+0x89 fb_inet_server.exe!EXE_receive+0xef fb_inet_server.exe!get_procedure+0x15e fb_inet_server.exe!get_record+0x55c fb_inet_server.exe!RSE_get_record+0x5f fb_inet_server.exe!EXE_looper+0x383 fb_inet_server.exe!looper_seh+0x45 fb_inet_server.exe!execute_looper+0x89 fb_inet_server.exe!EXE_receive+0xef fb_inet_server.exe!JRD_receive+0x2f fb_inet_server.exe!DSQL_fetch+0x28b fb_inet_server.exe!jrd8_fetch+0xd7 fb_inet_server.exe!isc_dsql_fetch_m+0xa5 fb_inet_server.exe!rem_port::fetch+0x172 fb_inet_server.exe!process_packet+0x3ec fb_inet_server.exe!loopThread+0x187 fb_inet_server.exe!`anonymous namespace'::threadStart+0x52 MSVCR80.dll!_callthreadstartex+0x1b MSVCR80.dll!_threadstartex+0x66 KERNEL32.DLL!@BaseThreadInitThunk@12+0x24 ntdll.dll!__RtlUserThreadStart+0x2f ntdll.dll!__RtlUserThreadStart@8+0x1b ================================ ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2015, 13:33 |
|
Подвисание Firebird
|
|||
---|---|---|---|
#18+
fb_lock_print, если нужен LOCK_HEADER BLOCK Version: 17, Active owner: 0, Length: 18874368, Used: 17861124 Flags: 0x0001 Enqs: 2688378808, Converts: 5457207, Rejects: 2162864, Blocks: 8565591 Deadlock scans: 3283, Deadlocks: 0, Scan interval: 10 Acquires: 3348304407, Acquire blocks: 309911090, Spin count: 0 Mutex wait: 9.3% Hash slots: 1009, Hash lengths (min/avg/max): 41/ 62/ 86 Remove node: 0, Insert queue: 0, Insert prior: 0 Owners (151): forward: 15783352, backward: 12977912 Free owners (7): forward: 9543776, backward: 10638848 Free locks (17343): forward: 2353412, backward: 13488340 Free requests (17349): forward: 14081072, backward: 4495180 Lock Ordering: Enabled ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2015, 13:39 |
|
Подвисание Firebird
|
|||
---|---|---|---|
#18+
Viktor_bs, Этот поток вовсю трудится ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2015, 13:43 |
|
Подвисание Firebird
|
|||
---|---|---|---|
#18+
да, на 99% Есть еще один поток который на 1% Вот еще есть один стек, спустя некоторое время ========= thread 99% ========= ntoskrnl.exe!KiSwapContext+0x76 ntoskrnl.exe!KiSwapThread+0x196 ntoskrnl.exe!KiCommitThreadWait+0x129 fb_inet_server.exe!EVL_boolean+0x62 MSVCR80.dll!LeadUpVec+0x70 fb_inet_server.exe!insert_node+0xa43 fb_inet_server.exe!lockSharedSection+0x11 fb_inet_server.exe!CVT_get_double+0x688 fb_inet_server.exe!MOV_get_double+0xf fb_inet_server.exe!CVT_get_double+0x688 fb_inet_server.exe!CCH_release+0x1ff fb_inet_server.exe!BTR_insert+0x5b2 fb_inet_server.exe!insert_key+0x154 ========= thread 1% ========= ntoskrnl.exe!KiSwapContext+0x76 ntoskrnl.exe!KiSwapThread+0x14e ntoskrnl.exe!KiCommitThreadWait+0x129 ntoskrnl.exe!KeWaitForSingleObject+0x2c0 ntoskrnl.exe!NtWaitForSingleObject+0xb2 ntoskrnl.exe!KiSystemServiceCopyEnd+0x13 wow64cpu.dll!CpupSyscallStub+0x2 wow64cpu.dll!Thunk0ArgReloadState+0x5 wow64.dll!RunCpuSimulation+0xa wow64.dll!Wow64LdrpInitialize+0x172 ntdll.dll!_LdrpInitialize+0xcb ntdll.dll!LdrInitializeThunk+0xe ntdll.dll!_NtWaitForSingleObject@12+0xc fb_inet_server.exe!Jrd::LockManager::LocalCheckout::~LocalCheckout+0x40 KERNELBASE.dll!_WaitForSingleObject@8+0x12 fb_inet_server.exe!ISC_event_wait+0x5a fb_inet_server.exe!Jrd::LockManager::blocking_action_thread+0x18a fb_inet_server.exe!Jrd::LockManager::blocking_action_thread+0x9 fb_inet_server.exe!`anonymous namespace'::threadStart+0x52 MSVCR80.dll!_callthreadstartex+0x1b MSVCR80.dll!_threadstartex+0x66 KERNEL32.DLL!@BaseThreadInitThunk@12+0x24 ntdll.dll!__RtlUserThreadStart+0x2f ntdll.dll!__RtlUserThreadStart@8+0x1b ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2015, 13:58 |
|
Подвисание Firebird
|
|||
---|---|---|---|
#18+
Viktor_bs, здесь нет проблем. Изучайте свои запрос и их планы. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2015, 14:47 |
|
Подвисание Firebird
|
|||
---|---|---|---|
#18+
hvladViktor_bs, здесь нет проблем. Изучайте свои запрос и их планы. И что не оптимальные планы или не корректные запросы могут залочить 150 других процессов на 30 минут в классике? Ни один процесс не выполняет никакой активности, дисковые операции на 0. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2015, 15:02 |
|
Подвисание Firebird
|
|||
---|---|---|---|
#18+
Viktor_bsИ что не оптимальные планы или не корректные запросы могут залочить 150 других процессов на 30 минут в классике? Ты от целой лок-таблицы привёл только заголовок. Причина может быть в том остатке, которые тебе стоило внимательно изучить. Viktor_bsHash slots: 1009, Hash lengths (min/avg/max): 41/ 62/ 86 Хэш-слотов явно не хватает. Причём очень сильно. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2015, 15:18 |
|
Подвисание Firebird
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovViktor_bsHash slots: 1009, Hash lengths (min/avg/max): 41/ 62/ 86 Хэш-слотов явно не хватает. Причём очень сильно. Я так понял что нужно увеличением количества слотов выйти в показатели < 10? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2015, 16:00 |
|
Подвисание Firebird
|
|||
---|---|---|---|
#18+
Viktor_bs, поставь 30 тыщ, а там посмотришь. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2015, 16:01 |
|
Подвисание Firebird
|
|||
---|---|---|---|
#18+
Это должно быть простое число. 30011, например :) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2015, 16:37 |
|
Подвисание Firebird
|
|||
---|---|---|---|
#18+
Viktor_bsИ что не оптимальные планы или не корректные запросы могут залочить 150 других процессов на 30 минут в классике? Ни один процесс не выполняет никакой активности, дисковые операции на 0.Я не гадалка, отсюда мне не видно что там происходит. Всё, что можно извлечь из приведенных обрывков стеков - я сказал. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2015, 18:21 |
|
Подвисание Firebird
|
|||
---|---|---|---|
#18+
Во-первых, попробуйте оптимизированный конфиг использовать http://ib-aid.com/ru/optimized-firebird-configuration/ Во-вторых, нужна подробная статистика изменения маркеров транзакций и статистика БД. С уважением, Алексей ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2015, 21:25 |
|
|
start [/forum/topic.php?fid=40&msg=39049709&tid=1562632]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
41ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
2ms |
others: | 15ms |
total: | 162ms |
0 / 0 |