|
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
|
|||
---|---|---|---|
#18+
rdb_devВот как-то так: ... Спасибо за пример, я и сам уже попробовал такой вариант, он не работает. Соединение в отдельном потоке/процессе, после запуска процедуры shutdown, не создаётся пока shutdown не завершится.. Попытка создать соединение раньше - не помогает.. Но зато, думаю, заработает вариант с поочерёдным запуском shutdown'а с нулевым таймаутом и запроса закрывающего соединения, и так до победного конца.. кривовато, конечно.. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2016, 17:53 |
|
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
|
|||
---|---|---|---|
#18+
hvladЕсс-но. Оно же всё в одном потоке. У тебя в примере нет никаких vitkudклиентов, которые хотят "добровольно" закрыть все свои соединения (если их больше одного).Ибо кроме gfix'а есть ровно один клиент, который что-то там хочет. в моём описании "их" относилось к соединениям, т.е. несколько клиентов с несколькими соединениями в каждом. А для примера достаточно одного клиента с несколькими соединениями. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2016, 17:58 |
|
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
|
|||
---|---|---|---|
#18+
vitkud, ты противоречишь сам себе. Сначала говоришь про много соединений (неважно, сколько процессов на клиенте их создаёт). В коде твоём нет "много соединений", они создаются и уничтожаются по-одному, последовательно. Далее, опция -att не убивает текущие коннекты, в отличие от -force. Если приспичило пользовать именно -att, сделай сначала DELETE FROM MON$ATTACHMENT в любом коннекте. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2016, 18:04 |
|
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
|
|||
---|---|---|---|
#18+
hvladПроверил с isql: запустил 3 штуки isql isql работает с одним соединением одновременно, а вот если например в IBExpert'е зарегистрировать дважды одну базу и открыть обе... ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2016, 18:16 |
|
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
|
|||
---|---|---|---|
#18+
vitkudisql работает с одним соединением одновременно, а вот если например в IBExpert'е зарегистрировать дважды одну базу и открыть обе...У тебя что, однопоточное приложение обслуживает сотню коннектов ? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2016, 19:48 |
|
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
|
|||
---|---|---|---|
#18+
vitkudСпасибо за пример, я и сам уже попробовал такой вариант, он не работает. Соединение в отдельном потоке/процессе, после запуска процедуры shutdown, не создаётся пока shutdown не завершится..У меня в isql от имени SYSDBA соединение прекрасно создается после "-shut -attach" и скрипт дропает подключения в соответствии с условием в предложении WHERE. Если вы пишите какой-то высоконагруженный сервер, для которого необходим пул соединений и очень хотите, чтобы сервер сам закрывал свои соединения с базой, создайте отдельно службу управления базой/сервером FB с которой ваш высоконагруженный сервер будет держать соединение и получать от этой службы указания в том числе и на закрытие всех соединений. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2016, 03:08 |
|
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
|
|||
---|---|---|---|
#18+
hvladУ тебя что, однопоточное приложение обслуживает сотню коннектов ? Почему сразу однопоточное? Потоков несколько, но пул соединений закрывается в одном. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2016, 11:25 |
|
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
|
|||
---|---|---|---|
#18+
rdb_devУ меня в isql от имени SYSDBA соединение прекрасно создается после "-shut -attach" и скрипт дропает подключения в соответствии с условием в предложении WHERE. в смысле после неудачного выполнения "-shut -attach"? Так в чём тогда смысл? Или прямо во время выполнения? Тогда странно, у меня второй процесс ждёт когда завершится таймаут у shutdown'а, особенно заметно это если установить таймаут на 30 сек.. rdb_devЕсли вы пишите какой-то высоконагруженный сервер, для которого необходим пул соединений ... да нет, обычной сервер, просто пул используется для того чтобы реже подключаться к БД.. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2016, 11:37 |
|
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
|
|||
---|---|---|---|
#18+
hvladты противоречишь сам себе. Сначала говоришь про много соединений (неважно, сколько процессов на клиенте их создаёт). В коде твоём нет "много соединений", они создаются и уничтожаются по-одному, последовательно. Под соединениями я подразумеваю объекты типа "Connection", и изначально я писал о двух и более соединениях.. hvladДалее, опция -att не убивает текущие коннекты ... это понятно, но он мешает закрыть пул соединений hvlad... в отличие от -force. а -force - зависает, начиная с 2.5.3... hvladЕсли приспичило пользовать именно -att, сделай сначала DELETE FROM MON$ATTACHMENT в любом коннекте. не приспичило, а вынужден... судя по всему придётся пользоваться таким решением, хоть оно и несколько "кривовато"... ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2016, 11:49 |
|
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
|
|||
---|---|---|---|
#18+
vitkud, я не вижу, чтобы дисконнекты зависали на фоне gfix -force ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2016, 12:31 |
|
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
|
|||
---|---|---|---|
#18+
hvladя не вижу, чтобы дисконнекты зависали на фоне gfix -force вот практически тот же скрипт на Groovy: Код: java 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.
с 2.5.2 вывод такой: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
а вот вывод с 2.5.6: Код: sql 1. 2.
и всё, не завершается.. кстати, если timeout у shutdown'а установить в 0, то на 2.5.6 такой вывод: Код: sql 1. 2. 3. 4.
но опять-таки зависает... ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2016, 12:59 |
|
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
|
|||
---|---|---|---|
#18+
А ты уверен, что внутри у jdbc драйвера подключения и отключения не сериализуются? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2016, 13:20 |
|
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
|
|||
---|---|---|---|
#18+
vitkud, допилил, попробуй: Создаем в БД процедуру: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
cmd скрипт: Код: powershell 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2016, 13:40 |
|
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
|
|||
---|---|---|---|
#18+
rdb_devvitkud, допилил, попробуй: ... Спасибо, попробовал - тоже самое. Я даже увеличил таймауты в 10 раз, и наблюдал по загрузки проца как ожидает своего часа процедура, но до тех пор пока shutdown не вылетит по timeout-у процесс с isql не завершается.. Собственно для проверки можно использовать тот же IBExpress: просто продублировать в нём соединение 2-3 раза и открыть их.. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2016, 14:43 |
|
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
|
|||
---|---|---|---|
#18+
vitkud, Я вижу следующее: - gfix -shut -force 0 блокируется до тех пор, пока не отсоединятся все существующие коннекты - Существующие коннекты при этом блокируются при дисконнекте (простые тесты с isql это не подтверждают) - Приложение на JayBird с пулом коннектов не может одновременно сделать шатдаун (в одном потоке) и закрыть все свои коннекты из другого потока. Варианты: а) написать трекеру и ждать когда починят в 2.5.6+ (я вижу, где он ждёт) б) перейти на fb3 (там нет проблемы) в) создать обходной путь, рассчитанный на конкретное приложение ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2016, 15:15 |
|
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
|
|||
---|---|---|---|
#18+
hvladvitkud, Я вижу следующее: - gfix -shut -force 0 блокируется до тех пор, пока не отсоединятся все существующие коннекты - Существующие коннекты при этом блокируются при дисконнекте (простые тесты с isql это не подтверждают)Забавно, что если на момент запуска gfix -shut -attach к базе открыто не более двух любых подключений (включая подключение isql, в котором выполняется DELETE FROM MON$ATTACHMENTS), то ХП на удаление выполняется сразу и база нормально "кладется в shutdown". ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2016, 15:48 |
|
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
|
|||
---|---|---|---|
#18+
rdb_dev Код: plsql 1. 2.
Я не любитель фраз про "отрывание рук за такой код", но могу и пересмотреть свю точку зрения :) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2016, 16:37 |
|
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
|
|||
---|---|---|---|
#18+
hvlad- Существующие коннекты при этом блокируются при дисконнекте (простые тесты с isql это не подтверждают) да, с одним соединением проблем нет, а isql работает с одним соединением.. hvlad- Приложение на JayBird с пулом коннектов не может одновременно сделать шатдаун (в одном потоке) и закрыть все свои коннекты из другого потока. необязательно JayBird, то же самое повторяется с использованием IBExpert'а и gfix'а hvladВарианты: а) написать трекеру и ждать когда починят в 2.5.6+ (я вижу, где он ждёт) я уже нашёл на трекере такую проблему: CORE-4742 hvladб) перейти на fb3 (там нет проблемы) это всенепременно, но переход займёт много времени hvladв) создать обходной путь, рассчитанный на конкретное приложение так и поступлю. Спасибо за уделённое время. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2016, 16:37 |
|
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
|
|||
---|---|---|---|
#18+
hvladЯ не любитель фраз про "отрывание рук за такой код", но могу и пересмотреть свю точку зрения :)К сожалению, пока ничего лучше для реализации задержки в транзакции придумать не смог. Подскажи, если знаешь способ лучше. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2016, 16:44 |
|
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
|
|||
---|---|---|---|
#18+
vitkudда, с одним соединением проблем нет, а isql работает с одним соединением..Да по барабану это. isql нормально закрывает свой коннект, шатдаун этому не мешает. Не мешает шатдаун закрывать коннекты. Не мешает. Прочитай вот тут *каждое* слово, а не через десять : hvlad- Приложение на JayBird с пулом коннектов не может одновременно сделать шатдаун (в одном потоке) и закрыть все свои коннекты из другого потока. vitkudнеобязательно JayBird, то же самое повторяется с использованием IBExpert'а и gfix'аПроверил - не подтверждаю. IBE закрывает 4 клонированных DB и кричит при этом про database shutdown ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2016, 16:46 |
|
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
|
|||
---|---|---|---|
#18+
rdb_devhvladЯ не любитель фраз про "отрывание рук за такой код", но могу и пересмотреть свю точку зрения :)К сожалению, пока ничего лучше для реализации задержки в транзакции придумать не смог. Подскажи, если знаешь способ лучше.Лучше - не ставить себе глупые задачи ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2016, 16:47 |
|
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
|
|||
---|---|---|---|
#18+
hvlad, да были бы задачи, а то так... Эксперимент. Хотелось из скрипта создать соединение до shutdown, а произвести DELETE FROM MON$ATTACHMENTS уже в процессе работы gfix -shut -attach. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2016, 16:51 |
|
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
|
|||
---|---|---|---|
#18+
rdb_devhvlad, да были бы задачи, а то так... Эксперимент. В качестве эксперимента, у себя - что угодно делай. Но ты же другому человеку, да ещё и неопытному, каку советуешь... ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2016, 16:55 |
|
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
|
|||
---|---|---|---|
#18+
hvladЯ вижу следующее: - gfix -shut -force 0 блокируется до тех пор, пока не отсоединятся все существующие коннектыКстати, проблема не наблюдается с SC\CS - gfix не блокируется, коннекты по факту отключены. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2016, 17:02 |
|
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
|
|||
---|---|---|---|
#18+
hvlad, ну почему сразу "каку"? Не вижу ничего плохого в том, что транзакция секунду пошуршит вхолостую перед отбрасыванием соединений к БД, ничего, при этом, не блокируя. Последний пример был как вариант для проверки, против предыдущего, где соединение из isql устанавливалось в уже процессе выполнения gfix -shut -attach. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2016, 17:03 |
|
|
start [/forum/topic.php?fid=40&msg=39315807&tid=1561952]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
53ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 154ms |
0 / 0 |