|
|
|
Должен ли ФБ оставлять открытым файл базы при неуспешном аттаче по TCP ("resource busy") ?
|
|||
|---|---|---|---|
|
#18+
hi all Дано: 1) два инстанса на одном linux-хосте, оба LI-T3.0.0.31129, порты прослушки: 3330 и 3333. 2) isql на виндовой тачке, клиент версии WI-V2.5.3.26730 3) в databases.conf обоих ФБ прописаны одни и те же алиас + база: oltp30b = /var/db/fb30/oltp30b.fdb Лезу первым аттачем: Код: plaintext 1. 2. Лезу вторым аттачем, но вместо ввода команды вручную достаю её из истории и не гляжу на номер порта: Код: plaintext 1. 2. 3. 4. 5. 6. 7. Поняв ошибку, покидаю isql: Код: plaintext Лезу теперь на консоль сервера и ввожу команду "Кто открыл файл /var/db/fb30/oltp30b.fdb ?": Код: plaintext 1. 2. 3. 4. 5. С первой строкой всё понятно, это ФБ на порту 3333. Вторая строка - это ФБ, который ломился к базе, до получил облом: Код: plaintext 1. 2. 3. 4. 5. Не веря своим глазам, вытаскиваю список всех файлов, которые открыты этим Firebird-инстансом (с pid = 26453): Код: plaintext 1. 2. 3. 4. 5. Файл базы, как видим: 1) открыт, хотя пр коннекте к нему был облом 2) присутствует в списке ДВА раза (хотя в случае 100500 успешно выполненных TCP-коннектов всё будет наоборот- 1 строка с именем файла базы). Кто-нить может объяснить, ЧТО ЭТО ?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2014, 17:17 |
|
||
|
Должен ли ФБ оставлять открытым файл базы при неуспешном аттаче по TCP ("resource busy") ?
|
|||
|---|---|---|---|
|
#18+
В общем, изабэлло как бэ это уже... При краше ФБ остаются какие-то неубиваемые фантомные коннекты. Именно в том кол-ве, которое было непосредственно перед крашем. НЕ удаляются ни через 5 минут, ни через 5 часов - проверено уже не один раз. Соотв-но, ни о какой валидации базейки речи быть не может. Да и процесс ФБ может при этом "застрять" так, что его не рестартанёшь корректным способом (/etc/init.d/fb*** restart) - выводит "красный [failed]". Создал core-4426 и пусть меня дальше бьют, но истина дороже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2014, 19:54 |
|
||
|
Должен ли ФБ оставлять открытым файл базы при неуспешном аттаче по TCP ("resource busy") ?
|
|||
|---|---|---|---|
|
#18+
Таблоид, даже не начну ничего выяснять, пока ты не уберешь к чертовой матери зоопарк с несколькими инстансами и портами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2014, 20:28 |
|
||
|
Должен ли ФБ оставлять открытым файл базы при неуспешном аттаче по TCP ("resource busy") ?
|
|||
|---|---|---|---|
|
#18+
dimitrдаже не начну ничего выяснять, пока ты не уберешь к чертовой матери зоопарк с несколькими инстансами и портами.хм!.. паазвольте-с!! что незаконного в нескольких инстансах на одной машине ? да и некуда мне убирать их - все остальные нормальные серваки заняты :( А еще - как тогда сопоставлять произв-сть разных сборок (я про патчики всякие, которые иногда тут приходится применять) ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2014, 20:42 |
|
||
|
Должен ли ФБ оставлять открытым файл базы при неуспешном аттаче по TCP ("resource busy") ?
|
|||
|---|---|---|---|
|
#18+
ТаблоидВ общем, изабэлло как бэ это уже... При краше ФБ остаются какие-то неубиваемые фантомные коннекты. Именно в том кол-ве, которое было непосредственно перед крашем. НЕ удаляются ни через 5 минут, ни через 5 часов - проверено уже не один раз. каким именно образом к этой [пока что мифической] проблеме имеют отношения инстансы и порты? Если никакого, то нафига упоминать их в трекере, да и в этом топике тоже? Чтобы всех запутать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2014, 20:57 |
|
||
|
Должен ли ФБ оставлять открытым файл базы при неуспешном аттаче по TCP ("resource busy") ?
|
|||
|---|---|---|---|
|
#18+
dimitr каким именно образом к этой [пока что мифической] проблеме имеют отношения инстансы и порты? Если никакого, то нафига упоминать их в трекере, да и в этом топике тоже? Чтобы всех запутать?Проблема сейчас выглядит так, что файл базы остаётся открытым. Что именно приводит к этому - еще не знаю. Может, коннект с ошибочно указываемым портом, а может и сочетание: краш + имевшаяся до этого попытка установить такой коннект (с неверным портом). Буду исследовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2014, 21:10 |
|
||
|
Должен ли ФБ оставлять открытым файл базы при неуспешном аттаче по TCP ("resource busy") ?
|
|||
|---|---|---|---|
|
#18+
ТаблоидБуду исследовать. и это правильно. Вот только письма писать надо когда все выяснишь. Любишь ты рубить сплеча. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2014, 21:18 |
|
||
|
Должен ли ФБ оставлять открытым файл базы при неуспешном аттаче по TCP ("resource busy") ?
|
|||
|---|---|---|---|
|
#18+
dimitrТаблоидБуду исследовать. и это правильно. Вот только письма писать надо когда все выяснишь. Любишь ты рубить сплеча.Ну-с, вроде бы прояснилось. Пишу пока сюда, до трекера дойти всегда успею. Заранее извиняйте, что не всё будет понятно: речь идёт об OLTP-тесте, который находится на финишной стадии, но еще не публиковался. Монстры же (ДЕ, Влад и ДС) - поймут, он есть у них вместе с описаловом. 1) рестартую ФБ 2) запускаю на новой базе тест, имитирующий OLTP-нагрузку, 60 аттачей (скрипт теста и батники я недавно высылал всем Источникам Света + ДСу :)) 3) даю им поработать минут 5-7 4) стартую коннект к этой же базе, порт как у всех остальных (иначе не влезу, ес-сно). Даю ему задание - скрипт,заваливающий ФБ Код: plaintext 1. 2. 3. ФБ валится (примерно полминуты-минуту), все молотилки вылетают из isql, но там их поджидает цикл в батнике. И цикл этот заставит их выполнить новый коннект. Даю поработать им так еще минуты три, после чего корректно останавливаю тест, создавая на сервере стоп-файл. Все молотилки примерно через минуту "самозакроются" ввиду выброса ими user-defined исключения по имени 'ex_test_candellation' подробнееМолотилки регулярно проверяют наличие хотя бы одной строки в external-таблице, которая смаплена на файл с именем 'stoptest.txt'. Если там будет записано что-то типа '1' || ascii_char(13), то молотилки выбросят эксепшн и вывалятся из "своих" .sql-скриптов. При этом, ввиду того что произошло именно исключение , будет логирование оного силами isql'я в STDERR-файл. Батник же проверяет в STDERR-файле после каждого возврата из isql наличие именно этого слова ('ex_test_candellation'). Если оно там есть, он немедленно прекратит свою работу. её STDERR-лог Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Ну, а дальше ввожу: 1) "Кто открыл файл "/var/db/fb30/oltp30b.fdb" ? Код: 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. 2) "Что за файлы держит открытыми процесс с pid = 1468 ?" Код: 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. И так можно обвводиться до посинения: файлы остаются открытыми, в т.ч. и файл базы. При этом потоки внутри процесса ФБ: Код: plaintext 1. 2. 3. 4. 5. 6. 7. Три бактрассы процесса 1468 (снимал с интервалом 10 сек) - в аттаче. PS. Драма в трекере с перепутанным номером порта - согласен, лишняя. Всё с одним портом получилось :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2014, 23:12 |
|
||
|
Должен ли ФБ оставлять открытым файл базы при неуспешном аттаче по TCP ("resource busy") ?
|
|||
|---|---|---|---|
|
#18+
ТаблоидФБ валится (примерно полминуты-минуту), Используй отладочный билд. Моя интуиция подсказыват, что ты получишь ДВА ассерта. Вот второй и будет причиной незакрытия коннектов. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2014, 23:42 |
|
||
|
Должен ли ФБ оставлять открытым файл базы при неуспешном аттаче по TCP ("resource busy") ?
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovИспользуй отладочный билд. Моя интуиция подсказыват, что ты получишь ДВА ассерта. Вот второй и будет причиной незакрытия коннектов.Использовал. Стошнило его от моих изысканий: после 50-го коннекта (а всего их должно было случиться 60) на консоли сервера вылезло: Код: plaintext 1. 2. - и в /tmp появился: Код: plaintext 1. Трасса с него - в аттаче. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2014, 01:39 |
|
||
|
Должен ли ФБ оставлять открытым файл базы при неуспешном аттаче по TCP ("resource busy") ?
|
|||
|---|---|---|---|
|
#18+
ТаблоидСтошнило его от моих изысканийт.е. я хочу сказать, что придется грузить дебаговый билд слегка потише... сейчас попробую еще разок... :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2014, 01:41 |
|
||
|
Должен ли ФБ оставлять открытым файл базы при неуспешном аттаче по TCP ("resource busy") ?
|
|||
|---|---|---|---|
|
#18+
ТаблоидТаблоидСтошнило его от моих изысканийт.е. я хочу сказать, что придется грузить дебаговый билд слегка потише... сейчас попробую еще разок... :-)В общем, нету никаких ассертов на консоли. Загрузил успешно 35 аттачей-молотилок, дал им поработать около 3 минут (уж не знаю, работали они на самом деле или нет! ибо ну ооочень медленно-тягомотно с дебуговым билдом всё). Далее запустил отдельный сеанс, в котором запустил скрипт, заваливающий ФБ. На консоли сервера при этом получилось всё то же самое: "Aborted (core dumped)". Создался коредамп: $ ls -l /tmp/core.firebird.5237 -rw------- 1 root root 12384956416 May 14 01:48 /tmp/core.firebird.5237 Бактрасса с него - в аттаче. HTH. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2014, 01:53 |
|
||
|
Должен ли ФБ оставлять открытым файл базы при неуспешном аттаче по TCP ("resource busy") ?
|
|||
|---|---|---|---|
|
#18+
на краш не обращай внимания, это прямое следствие багчека. Там сильно спорный кусок кода, его будем пересматривать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2014, 07:33 |
|
||
|
Должен ли ФБ оставлять открытым файл базы при неуспешном аттаче по TCP ("resource busy") ?
|
|||
|---|---|---|---|
|
#18+
лингер у тебя точно не включен? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2014, 07:38 |
|
||
|
Должен ли ФБ оставлять открытым файл базы при неуспешном аттаче по TCP ("resource busy") ?
|
|||
|---|---|---|---|
|
#18+
dimitrлингер у тебя точно не включен?Если я правильно понимаю Алекса:core-4263Certainly this is not default. Linger is configured using ALTER DATABASE statement, i.e. ALTER DATABASE SET LINGER TO 30; -- seconds ALTER DATABASE DROP LINGER; - то НЕТ, лингер я не включал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2014, 08:58 |
|
||
|
Должен ли ФБ оставлять открытым файл базы при неуспешном аттаче по TCP ("resource busy") ?
|
|||
|---|---|---|---|
|
#18+
Таблоид, не надо понимать, просто посмотри в rdb$database ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2014, 09:26 |
|
||
|
Должен ли ФБ оставлять открытым файл базы при неуспешном аттаче по TCP ("resource busy") ?
|
|||
|---|---|---|---|
|
#18+
dimitrпосмотри в rdb$database Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2014, 12:39 |
|
||
|
Должен ли ФБ оставлять открытым файл базы при неуспешном аттаче по TCP ("resource busy") ?
|
|||
|---|---|---|---|
|
#18+
Таблоидвроде бы прояснилось <...> речь идёт об OLTP-тестеТут еще вылезло, уже на тесте idx_under_load, который был запущен в виде 450 аттачей. Этот тест также реагирует на стоп-файл с ЭТИМ ЖЕ именем ('stoptest.txt'), как и OLTP-emul. Создал я этот стоп-файлик, все молотилки дружно "самозакрылись" в 21:10, выбросив всё то же user-исключение 'ex_test_cancellation'. Через 15 минут делаю "анкетирование". Q1. Кто держит открытым файл базы ? A1. А всё тот же, кто и раньше: Код: plaintext 1. 2. Q2. Что еще открыл этот процесс ? A2. Да всё, как обычно: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Q3. А что там с заголовком лок-таблицы ? A3. А вот что: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Q4. А что показывает ps для потоков процесса 18191 ? A4. Да есть еще какие-то, помимо "стандартно-минимального" набора из трёх штук: Код: plaintext 1. 2. 3. 4. 5. 6. 7. Q5. А что там в firebird.log ? A5. А ничего, пусто там. *Совсем* пусто, ошибок не было. Q6. А что там с бактрассами процесса 18191 ? A6. А это в аттаче, их там три штуки, созданы были с интервалом = 10 сек. Итого: получается, что ФБ при каких-то загадочных обстоятельствах может держать базу открытой даже в случае, когда не было никакого краха. Все окна позакрывались САМИ, увидев стоп-файл и выбросив эксепшены. След-но, валидацию базы хрен проведёшь без рестарта ФБ :( Any comments ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2014, 21:41 |
|
||
|
|

start [/forum/topic.php?fid=40&fpage=96&tid=1563602]: |
0ms |
get settings: |
5ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
56ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
| others: | 197ms |
| total: | 335ms |

| 0 / 0 |
