|
|
|
Многочасовой тест на открытие и убиение сотен ISQL-окон
|
|||
|---|---|---|---|
|
#18+
hi all Есть тест, который в беспробудн бесконечном цикле: 1) стартует сотни окон с запуском в них ISQL (start /min isql ...) с аттачем к базе (без какого либо входного скрипта, т.е. окна просто запускают ISQL и "ждуть"); 2) делает паузу в 30 сек, ожидая пока все окна откроются 3) вызывает psList -m | findstr /i /c:%FIREBIRD_PROCESS%, с логированием потребляемой процессом firebird памяти 4) вызывает psKill isql, что вызывает практически одновременное убиение всех аттачей. 5) делает паузу в 30 сек, ожидая пока все isql-окна будут убиты 6) снова вызывает psList -m | findstr /i /c:%FIREBIRD_PROCESS% 7) goto "1)" Количество открываемых isql-окон настраивается внутри батника, заданием переменной. Например, для 100 коннектов на SS (WI-T3.0.0.30590) с кешем базы = 256 в логе psList'a будем видеть: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Оставленный на ночь с заданием открывать 400 окон, к утру он загадил firebird.log мессагами-паразитами (INET/inet_error: read errno = 10054), но также вижу в логе в двух местах вот это: Код: plaintext 1. 2. 3. 4. 5. 6. 7. (один раз, как видим, ФБ не выдержал и рестартовал). 2 dimitr: 1) этот самый "errno: 0" - он критичен или нет ? 2) существует ли возможность заставить ФБ автоматически сбрасывать инфу из лок-таблицы в файл с именем типа fb_lock_print_YYYYMMDD_HHmmss.log, когда происходят вот такие ситуации и ФБ вынужден завершаться ? 3) (полуофф, но таки очень надо) нельзя ли в трёшке наконец-то добавить в конфиг параметр, запрещающий гадить в лог сообщениями, НЕ относящимися к работе собс-но движка или к состоянию базы ? (я всё про эти INET/inet_error'ы). ЗЫ. Есть модификация этого же теста (прототип его - тут ), но в ней ISQL'и уже не сидят без дела в ожидании убиения, а кое-что молотят и завершаются. Там тоже логируется потребление памяти - но об этом попозже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2013, 10:16:36 |
|
||
|
Многочасовой тест на открытие и убиение сотен ISQL-окон
|
|||
|---|---|---|---|
|
#18+
Таблоид1) этот самый "errno: 0" - он критичен или нет ? 2) существует ли возможность заставить ФБ автоматически сбрасывать инфу из лок-таблицы в файл с именем типа fb_lock_print_YYYYMMDD_HHmmss.log, когда происходят вот такие ситуации и ФБ вынужден завершаться ? 3) (полуофф, но таки очень надо) нельзя ли в трёшке наконец-то добавить в конфиг параметр, запрещающий гадить в лог сообщениями, НЕ относящимися к работе собс-но движка или к состоянию базы ? (я всё про эти INET/inet_error'ы). 1) когда как. Надо его ловить и смотреть. 2) должен был создаться файл fb_lock_table.dump, на него можно натравить fb_lock_print 3) нельзя. А вот условно или безусловно вынести все сетевые ошибки в отдельный лог - можно подумать. Если в трекере этого еще нет, то пиши. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2013, 10:34:44 |
|
||
|
Многочасовой тест на открытие и убиение сотен ISQL-окон
|
|||
|---|---|---|---|
|
#18+
dimitr2) должен был создаться файл fb_lock_table.dump, на него можно натравить fb_lock_printнарыл я его, у чёрта на рогах он был: "C:\Documents and Settings\All Users\Application Data\firebird\" (почему не в FIREBIRD_TMP или в TEMP ПРОСТО ??) В аттаче - сам дамп и результаты fb_lock_print [-a] к нему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2013, 10:44:59 |
|
||
|
Многочасовой тест на открытие и убиение сотен ISQL-окон
|
|||
|---|---|---|---|
|
#18+
Таблоид, дык майкрософт туда рекомендует все настроечные и временные файлы сбрасывать. Одно время переводили одну программу, так там 7 все мозги высосала из-за прав администратора, пришлось складывать согласно их рекомендациям. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2013, 10:50:37 |
|
||
|
Многочасовой тест на открытие и убиение сотен ISQL-окон
|
|||
|---|---|---|---|
|
#18+
Симонов Денисдык майкрософт туда рекомендует все настроечные и временные файлы сбрасывать. Одно время переводили одну программу, так там 7 все мозги высосала из-за прав администратора, пришлось складывать согласно их рекомендациям.Ну ладно настроечные файлы (небольшого размера!), но ВРЕМЕННЫЕ, в т.ч. дампы, - какое дело маздаю маздаю, где я буду их держать ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2013, 11:01:04 |
|
||
|
Многочасовой тест на открытие и убиение сотен ISQL-окон
|
|||
|---|---|---|---|
|
#18+
Таблоид, там сервер держит лок-таблицы, там же и дампы заодно создаются ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2013, 11:01:55 |
|
||
|
Многочасовой тест на открытие и убиение сотен ISQL-окон
|
|||
|---|---|---|---|
|
#18+
Таблоид, В Windows все дампы падающих программ размещаются по такому принципу. Правда не знаю какое отношение к этому имеет fb_lock_table.dump и насколько он похож на те что генерятся виндой ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2013, 11:05:29 |
|
||
|
Многочасовой тест на открытие и убиение сотен ISQL-окон
|
|||
|---|---|---|---|
|
#18+
dimitr2) должен был создаться файл fb_lock_table.dump, на него можно натравить fb_lock_printповторил забег - снова завалился, лок-таблу и фрагмент лога ФБ см в аттаче ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2013, 13:30:10 |
|
||
|
Многочасовой тест на открытие и убиение сотен ISQL-окон
|
|||
|---|---|---|---|
|
#18+
dimitrТаблоид3) (полуофф, но таки очень надо) нельзя ли в трёшке наконец-то добавить в конфиг параметр, запрещающий гадить в лог сообщениями, НЕ относящимися к работе собс-но движка или к состоянию базы ? (я всё про эти INET/inet_error'ы).... 3) нельзя. А вот условно или безусловно вынести все сетевые ошибки в отдельный лог - можно подумать. Если в трекере этого еще нет, то пиши.Просмотрел трекер в поисках "inet" в темах топиков - не нашел просьб по этому вопросу. Короче, CORE-4182 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2013, 13:42:52 |
|
||
|
Многочасовой тест на открытие и убиение сотен ISQL-окон
|
|||
|---|---|---|---|
|
#18+
dimitr > А вот условно или безусловно вынести все сетевые ошибки в отдельный лог - можно подумать Хозяин барин, конечно, но не расплодится ли? Впрочем, если "условно"... Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2013, 13:57:19 |
|
||
|
Многочасовой тест на открытие и убиение сотен ISQL-окон
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов РустамХозяин барин, конечно, но не расплодится ли? Впрочем, если "условно"... расплодится число логов имеешь ввиду? В трекере еще вывод валидации предлагали в отдельный лог писать, АК/ДК вроде этого хотели. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2013, 15:07:53 |
|
||
|
Многочасовой тест на открытие и убиение сотен ISQL-окон
|
|||
|---|---|---|---|
|
#18+
dimitr> расплодится число логов имеешь ввиду? Ну да. dimitr> В трекере еще вывод валидации предлагали в отдельный лог писать, АК/ДК вроде этого хотели. gfix в смысле? Это поддерживаю, ибо валидация автоматом никак не запускается и результат её работы нужен и важен сразу и интерактивно - в отдельном логе gfix-a. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2013, 15:21:10 |
|
||
|
Многочасовой тест на открытие и убиение сотен ISQL-окон
|
|||
|---|---|---|---|
|
#18+
В общем, нарыл следующее. Если : I. на машине-1 (машина-"паразит") выполнить вечный коннект к WI-T3.0.0.х, II. на машине-2 (машина-"работяга") выполнять в цикле: II. 1. логирование информации о потребляемой процессом firebird памяти (утилитой psList); II. 2. открытие 100 isql-окон (даже просто чтобы они заходили в режим "SQL>"-подсказки и ничего больше не делали) II. 3. их удержание в таком состоянии некоторое время (чтобы точно был промежуток времени, когда они ВСЕ загружены); II. 4. одновременное (почти) убиение всех процессов isql утилитой psList.exe; II. 5. повторное логирование информации о памяти процесса firebird (как в п. 1) - то: 1. процесс firebird совершенно точно начинает отъедать память. пример лога Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 2. Отъедание памяти происходит ТОЛЬКО при условии, что на машине-"паразите" всё время висит isql-дармоед, который просто залочил одну запись в таблице. (Смысл залочивания этой записи в том, чтобы в случае, когда 100 isql'ей с машины-"работяги" будут запущены с заданием обновить эту же запись, то они упрутся лбами в неё (при штатном TIL = snapshot wait) и НЕ завершатся "сами по себе". И тогда можно быть увренным, что команда pskill isql, выданная на машине-"работяге", точно убьёт сразу весь батальон isql'ей, а не остатки его - ведь они точно все были в ступоре от блокировки с машины-1.) 3. Отъедание памяти НЕ происходит, если тест переделать таким образом, что первый из загружаемых isql'ей выполнит апдейт и начнёт имитацию ожидания выполнением shell ping -t localhost > nul; Хотя все остальные isql'и и будут также застревать, как если бы этот первый "паразит" выполнял коннект с чужой машины, эффекта роста памяти не наблюдалось. Так что приходится работать именно с двумя разными МАШИНАМИ. 4. Отъедание памяти заметно гораздо сильнее, если каждое из isql-окон на машине-"работяге" будет вместо тупого входа в "SQL>"-подсказку выполнять DML (update tlock set f01=... where id=1), но еще сильнее - если PSQL (execute block). 5. В какой-то момент, когда физическая память еще далеко не исчерпана, с большой вероятностью происходит рестарт ФБ-службы, что видно по смене PID'a процесса ФБ в логе теста: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. В логе сервера при этом, помимо invalid lock id (NNNNN), errno: 0, будет нечто странное: якобы эта же база открыта "еще одним движком ФБ в еще одной Windows-сессии" (что есть ложь, разумеется: всё делаю силами одного инстанса ФБ). firebird.log Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 6. В случае, если ФБ всё-таки выдерживает оборону и память процесса firebird начинает иметь вот такие значения: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Код: plaintext 1. 2. При этом, ФБ находится на самом деле в состоянии "грогги": он не отвечает на запросы и его службу невозможно остановить, приходится килять через ProcExplorer. Далее приведу сам батник и его подробное описание. Для его работы нужны утилиты psList, psKill (от SysInternals), а также консольный rar для сохранения дампа лок-таблицы в отдельный архив. Кроме того, в самом батнике юзается несколько set-переменных, завязанных на структуру каталогов - их надо будет подправить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2013, 20:17:02 |
|
||
|
Многочасовой тест на открытие и убиение сотен ISQL-окон
|
|||
|---|---|---|---|
|
#18+
Теперь - подробное описание теста. Машина-1: с неё к базе TRNTEST (на машину -2 , с ниже) выполняется коннект (isql'ем от FB 2.5), выполняющий UPDATE единственной строки и НЕ делающий COMMIT: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Машина-2: Windows 2003 Server SP2, два ядра по 2.4 ГГц, память 1 Гб На этой машине установлен WI-T3.0.0.30590, SuperServer, и создана база (alias = TRNTEST) и единственной табличкой TLOCK(id int primary key, f01 int) и одной записью в ней (id=1, f01=100). Кроме того, на этой машине запускается батник следующего вида: fblogmemo.bat Код: 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. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. Код: plaintext 1. 2. 3. 4. 5. 6. Этот батник: 1) открывает через (start /min ...) нужное число isql-окон, задаваемое входным параметром #2, причём: 1.1) если батнику передан входящий аргумент #1 = idle, то эти окна ничего не делают, просто загружаются и остаются в режиме подсказки "SQL> _" 1.2) если передан аргумент = dml, то каждое из открываемых isql-окон выполнит скрипт с именем = fbmemo_dml.sql, в котором записаны команды, гарантирующие "ступор" всех isql'ей на команде обновления одной и той же записи, а именно - той, которая была залочена коннектом-"паразитом" (см предыдущий пост): Код: sql 1. 2. 3. 4. 5. 1.3) если передан аргумент = psql, то каждое из окон выполнит execute block, содержание его аналогично пункту "1.2"; 1.3) при передаче аргумента = atrn каждое из окон выполнит execute block с попыткой апдейта в автономной транзакции (было подозрение, что это еще быстрее заставит ФБ отъедать память). Перед каждым тестом выполнялся рестарт ФБ. Затем сразу же - коннект к этой базе от машины-"паразита" с апдейтом строки таблицы TLOCK. Далее перед основным циклом (внутри батника) выполняется два вызова psList + findstr: 1) для записи заголовков столбцов в лог. 2) для записи начального значения потребляемой процессом firebird'a памяти - когда к нему прицеплен только один коннект с машины-"паразита". Вот этот фрагмент: Код: plaintext 1. 2. 3. 4. 5. 6. 7. Далее в цикле этого батника (см метку `m1`) выполняется: 1. Проверка наличия в текущем каталоге rar-файла - результата упаковки дампа лок-таблицы. И если он есть, то на консоль будет выведено сообщение, что ФБ рестартовал и тест надо прекращать. Ибо коннект в окне-"паразите" уже не действует как "универсальный ступор" для isql'ей, которые упираются лбами при попытках апдейтов (см предыдущий пост). Вот эти строки: Код: plaintext 1. 2. 2. Запуск 100500 isql'ей: Код: plaintext 1. 3. 10-секундное ожидание (пингом в нулл) загрузки ВСЕХ isql-окошек (их число определяется аргументом номер 2 и сохранено в переменной %n% - см выше for /L %%i in ...). 4. Получение снимка памяти по процессам и парсинг его только для процесса 'firebird', с добавлением слева текущего штампа времени и далее - записью этой строки в накопительный лог %logmain%: Код: plaintext 5. Убиение всех isql'ей и ожидание, пока оно выполнится. Поскольку сразу после этого ожидания цикл будет повторен, то было подозрение, что величина этой паузы может как-то влиять на утечку памяти. Дело в том, что внутри ФБ-3 есть специальный поток, который живет 10 секунд с момента последнего коннекта и ждёт следующий коннект. Так сделано, чтобы не пересоздавать этот поток при массовых коннектах. Но мну кажется, что величина этой паузы НЕ влияет. Я делал паузу и в 10 сек, и в 120 - результаты одинаковые: Код: plaintext 1. 2. 3. 7. Проверка наличия дампа лок-таблицы в каталоге настроек ФБ. Если он там есть, значит его надо упаковать и удалить оттуда, чтобы следующий запуск теста уже не делал этой же операции: Код: plaintext ........................................................................................................................................................................... Вот такой, значит, тест получился. И он либо заваливает ФБ, либо переводит его службу в "состояние нестояния". Сейчас запущу его в режиме работы psql, т.е. чтобы он делал execute block'и, и приведу накопительный лог потребления памяти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2013, 21:02:36 |
|
||
|
Многочасовой тест на открытие и убиение сотен ISQL-окон
|
|||
|---|---|---|---|
|
#18+
Значицца, так. Запустил в 21:13 тест на "открыть/подождать_20_сек/срубить" 100 isql-окон, каждое из которых выполняет попытку апдейта одной и той же строки PSQL-кодом Код: sql 1. 2. 3. 4. 5. 6. 7. 8. Начало лога потребления памяти процессом firebird'a: Код: 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. Примерно через час после начала этот цирк закрылся и клоуны разбежались: в логе вижу смены PID'a при следующих показателях расхода памяти: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Код: 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. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. Ни в каком ководстве я этоф йразы еще не видел... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2013, 00:39:19 |
|
||
|
Многочасовой тест на открытие и убиение сотен ISQL-окон
|
|||
|---|---|---|---|
|
#18+
... да, ну так вот: из лога следует, что в 22:25:57 Фб рестартовал с новым pid'ом: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. И всё бы ничего, да только... через полтора часа он опять грохнулся! Причём, я в это время тут не был и ничего не знал про первый рестарт. След-но, Фб запускал и грохал isql-окна уже без всякого "стопорного болта" со стороны машины-паразита (объяснение см. выше на три поста). Расход памяти на этом интервале практически НЕ увеличивался (смотрю на WS & Priv): Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. А теперь, почтеннейшая публика, загадки. Загадка-1. В ФБ-логе вижу, что активность ФБ шла только до момента 23:54:56:firebird.log Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Тест срубал isql-окна после 23:54, в этом нет сомнений судя по его логу. Тогда почему в ФБ-логе нет спама типа inet-error 104 ? Загадка-2 . Спам вида inet_error=... отсутсвует также почти 45 минут вот на этом интервале работы:firebird.log Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. пример лога теста Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2013, 01:02:02 |
|
||
|
Многочасовой тест на открытие и убиение сотен ISQL-окон
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов РустамГде ты "ared memory"-то откопал, кстати? :)Дык в firebird.log'e, вот где! А вот ссылка на этот лог, а также на лог стеста и на два дампа лок-таблицы: http://yadi.sk/d/NPlD8esO813a8 (вечная, на сгорит) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2013, 01:08:10 |
|
||
|
Многочасовой тест на открытие и убиение сотен ISQL-окон
|
|||
|---|---|---|---|
|
#18+
Провел вариант теста, при котором каждый из 100 isql'ей пытается обновить запись в автономной транзации: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Предусловие то же: с другой машины в базу смотрит isql-"паразит", который проапдейтил эту же строку, но не делает commit/rollback. Итого: 1. Сразу после начала теста стало ясно, что ничем хорошим это не закончится: после каждой итерации от памяти откусывалось по 2-3 Кб: Код: 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. Код: plaintext 1. 2. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. Последний раз это сообщение вылезло в 13:15:20 (уже один раз, а не три). 3) В моменты 13:15:49...13:15:50 нехватка памяти перешла критическую отметку: 3.1) в лог вылезло одновременно 168 сообщений вида Код: plaintext 1. 3.2) Дальше между ними воткнулось опять Код: plaintext 1. 3.3) После этого вылезло еще новое сообщение на тему "дай память!", но относилось оно уже security-базы: Код: plaintext 1. 2. Последний раз non_spam-сообщение в логе ФБ появилось в 13:16:48 и оно гласило: Код: plaintext 1. 2. 4) Дальше почти три часа шёл только спам, прекратившийся в 16:01 Код: plaintext 1. 5) После этого в логе ФБ наступила тишина, хотя сама службы ФБ _не_ рестартовала, что было видно по неизменному PID. 6) Окно-"паразит", которое держало апдейт, больше не выдает ничего в ответ на запрос к таблице. К этой базе вообще стало нельзя подключиться: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 9) ссылка на архив с логом ФБ и снимком лок-таблицы в момент, когда ФБ тихо перешёл в кому: http://yadi.sk/d/A5FLURgP82lao (вечная, не сгорит) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2013, 22:04:03 |
|
||
|
Многочасовой тест на открытие и убиение сотен ISQL-окон
|
|||
|---|---|---|---|
|
#18+
Наверное, глупый вопрос задам, но... Различает ли ФБ (да и в состоянии ли), что физической памяти на машине 1 Гб, а остальное (3 Гб) - виртуальная память файла подкачки ? Появление первых сообщений о нехватке памяти (см предыдущий пост) случилось в тот именно момент, когда значение Priv стало равно почти 1 Гб: Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2013, 22:43:05 |
|
||
|
Многочасовой тест на открытие и убиение сотен ISQL-окон
|
|||
|---|---|---|---|
|
#18+
Провел еще несколько "забегов", прихожу к однозначному выводу. Утечка памяти серверного процесса 'firebird' возникает при убиении N коннектов (где N может быть равно даже 1) т олько в случае, когда: 1) существует как минимум один коннект-"паразит", который: 1.1) либо залочил запись, которую хотят обновить другие (убиваемые "скопом") isql-окна; 1.2) либо провёл вставку новой записи в уникальный ключ , а другие isql-окна также "хотели" добавить запись с таким же значением ключа (т.е. хотели нарушить PK/UK). 2) этот коннект-"паразит" не делает commit/rollback и просто продолжает висеть в бездействии на какой-то "недоступной машине" (т.е. он не подпадает под групповой отстрел). Например, когда каждое тестовое окно "хочет" нарушить уникальность таблицы вот таким кодом: Код: sql 1. 2. 3. 4. - то даже когда число таких тестовых окон равно ОДНОМУ , вижу в логе теста неуклонное увеличение памяти, пусть всего на 10-20 Кб за итерацию, но оно - есть: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2013, 00:10:49 |
|
||
|
Многочасовой тест на открытие и убиение сотен ISQL-окон
|
|||
|---|---|---|---|
|
#18+
На линухе всё воспроизвелось еще быстрее. Для 200 тестовых isql'ей краш ФБ происходит менее чем через 1 минуту. Для 10 окошек - за полтора часа. Потребляемая память при этом не растёт, ФБ просто заваливается с коркой. Источник Света, отвечающий "там" за всё, что связано с линухом, подтвердил багу и сказал, что сиё связано с новой фичей, а именно... модулем шифрования базы! В общем, дальнейшие новости и фиксы смотрим тут: http://tracker.firebirdsql.org/browse/CORE-4185 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2013, 15:29:55 |
|
||
|
|

start [/forum/topic.php?fid=40&msg=38368903&tid=1564393]: |
0ms |
get settings: |
6ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
39ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 191ms |
| total: | 313ms |

| 0 / 0 |
