Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / SuperClassic: security3.fdb НЕ закрывается около 60 сек, начиная с 3-го connect/disconnect / 20 сообщений из 20, страница 1 из 1
10.06.2015, 22:21
    #38981681
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SuperClassic: security3.fdb НЕ закрывается около 60 сек, начиная с 3-го connect/disconnect
hi all

Я столкнулся с чем-то неведомым и таинственно-опасным :-)

В узких кругах широко известно, что база security3.fdb может висеть открытой после того, как закроется последний дисконнект, дабы следующий коннект выполнялся быстрее (и это зовётся linger). Дока утверждает, что такое происходит (и имеет смысл) только для арх-ры Super Server .

А теперь посмотрим, что там будет в арх-ре Super CLASSIC .
Вот конфиг:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
C:\MIX\firebird\fb30sc>findstr /r /c:"^[^#;]" firebird.conf | sort
AuthClient = Legacy_Auth,Srp,Win_Sspi
AuthServer = Legacy_Auth,Srp
DefaultDbCachePages = 128
FileSystemCacheThreshold = 65536K
LockHashSlots = 22111
MaxUserTraceLogSize = 99999
RemoteServicePort = 3330
 SharedCache = false
SharedDatabase = true 
TempDirectories = c:\temp
UserManager = Legacy_UserManager,Srp
WireCrypt = Disabled

Далее, скачиваем:
1) утилиту mtee.exe для дублирования вывода консоли в файл, с возможностью приклеивания к сообщениям таймштампов;
2) утилиту Руссиновича из SysInternals, которая показывает, какие файлы открыты. Она назвается Handle.exe .
И создаем вот такой батничек (я ему задал имя = `h4sec3.bat`):
Код: plaintext
1.
2.
3.
4.
5.
@echo off
del handle.log 2>nul
:m1
  Handle.exe | findstr /i /c:"security3.fdb" | mtee /t /+ handle.log
  ping -n 2 127.0.0.1>nul
goto m1

Делаем рестарт FB 3.0 SC. Запускаем батник - его вывод будет пока что пустым.

Затем открываем второе cmd-окошко и вводим там:

Код: plaintext
echo select current_timestamp from rdb$database; | C:\MIX\firebird\fb30sc\isql localhost/3330:e30

В окне с батником немедленно появятся мессаги:
Код: plaintext
1.
2.
3.
21:37:47.265   1C4: File  (RW-)   C:\MIX\firebird\fb30sc\security3.fdb
21:37:48.390   1C4: File  (RW-)   C:\MIX\firebird\fb30sc\security3.fdb
21:37:49.530   1C4: File  (RW-)   C:\MIX\firebird\fb30sc\security3.fdb
. . .

-- которые для первого запуска ISQL будут лезть примерно 10 сек:
Код: plaintext
1.
2.
3.
. . .
21:37:54.062   1C4: File  (RW-)   C:\MIX\firebird\fb30sc\security3.fdb
21:37:55.202   1C4: File  (RW-)   C:\MIX\firebird\fb30sc\security3.fdb
21:37:56.374   1C4: File  (RW-)   C:\MIX\firebird\fb30sc\security3.fdb

Закрываем батник, копируем протокол 'handle.log' в куда-нибудь.
Затем повторяем опять:
* запускаем батник
* запускаем
Код: plaintext
echo select current_timestamp from rdb$database; | C:\MIX\firebird\fb30sc\isql localhost/3330:e30

Смотрим в окно батника: вроде бы опять файл sec3.fdb был открыт около 10 сек:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
21:38:29.171   1D4: File  (RW-)   C:\MIX\firebird\fb30sc\security3.fdb
21:38:30.296   1D4: File  (RW-)   C:\MIX\firebird\fb30sc\security3.fdb
21:38:31.437   1D4: File  (RW-)   C:\MIX\firebird\fb30sc\security3.fdb
21:38:32.562   1D4: File  (RW-)   C:\MIX\firebird\fb30sc\security3.fdb
21:38:33.687   1D4: File  (RW-)   C:\MIX\firebird\fb30sc\security3.fdb
21:38:34.843   1D4: File  (RW-)   C:\MIX\firebird\fb30sc\security3.fdb
21:38:36.015   1D4: File  (RW-)   C:\MIX\firebird\fb30sc\security3.fdb
21:38:37.171   1D4: File  (RW-)   C:\MIX\firebird\fb30sc\security3.fdb

А теперь, почтеннейшая публика, внимание!

Повторяем всё еще раз, т.е. делаем ТРЕТИЙ запуск батника и "echo ... | isql ...".
И любуемся в окно батника:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
21:38:57.515   1DC: File  (RW-)   C:\MIX\firebird\fb30sc\security3.fdb
21:38:58.655   1DC: File  (RW-)   C:\MIX\firebird\fb30sc\security3.fdb
21:38:59.780   1DC: File  (RW-)   C:\MIX\firebird\fb30sc\security3.fdb
. . .
21:39:53.499   1DC: File  (RW-)   C:\MIX\firebird\fb30sc\security3.fdb
21:39:54.655   1DC: File  (RW-)   C:\MIX\firebird\fb30sc\security3.fdb
21:39:55.827   1DC: File  (RW-)   C:\MIX\firebird\fb30sc\security3.fdb

FB, работающий в режиме Super CLASSIC , держал открытым файл security3.fdb примерно 57 секунд!

Наблюдение за картинкой в ProcessExplorer'e (см аттач) показало, что:
1) когда к ФБ выполняется коннект, то он открывает (помимо прочего) вот такие три файлика:
Код: plaintext
1.
2.
C:\Documents and Settings\All Users\Application Data\firebird\fb_trace_******
C:\Documents and Settings\All Users\Application Data\firebird\fb_user_mapping
C:\Documents and Settings\All Users\Application Data\firebird\fb12_trace
2) когда коннект закрывается, то несмотря на то, что после <N> секунд закрывается также и sec3.fdb, эти файлы продолжают держаться открытыми еще какой-то отрезок времени <T>;
3) если третье и последующие подключения к базе (с немедленным дисконнектом) происходят после <N>, то до истечения <T>, то sec3.fdb будет удерживаться открытым уже не ~9...10 секунд, а почти минуту.

Обращаю особое внимание: это происходит на Super CLASSIC 'e.

Это было сделано намеренно или сиё есть "какая-то нелепая случайность" ?
...
Рейтинг: 0 / 0
10.06.2015, 22:28
    #38981687
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SuperClassic: security3.fdb НЕ закрывается около 60 сек, начиная с 3-го connect/disconnect
PS. Для SuperSERVER'a аналогичные манипуляции показывают, что файл sec3.fdb удерживается примерно одинаковое число секунд, что для 1-го, что для 5-го запуска "echo ... | isql ...". Но время это больше 1 минуты, что-то около 67-68 секунд:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
22:24:50.327   1C4: File  (R--)   C:\MIX\firebird\fb30\security3.fdb
22:24:51.468   1C4: File  (R--)   C:\MIX\firebird\fb30\security3.fdb
22:24:52.609   1C4: File  (R--)   C:\MIX\firebird\fb30\security3.fdb
22:24:53.749   1C4: File  (R--)   C:\MIX\firebird\fb30\security3.fdb
22:24:54.921   1C4: File  (R--)   C:\MIX\firebird\fb30\security3.fdb
. . .
22:25:55.499   1C4: File  (R--)   C:\MIX\firebird\fb30\security3.fdb
22:25:56.655   1C4: File  (R--)   C:\MIX\firebird\fb30\security3.fdb
22:25:57.796   1C4: File  (R--)   C:\MIX\firebird\fb30\security3.fdb
22:25:58.952   1C4: File  (R--)   C:\MIX\firebird\fb30\security3.fdb


Этого я тоже не понимать. Откудова лезут дополнительные 7-8 секунды ?
...
Рейтинг: 0 / 0
10.06.2015, 22:42
    #38981698
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SuperClassic: security3.fdb НЕ закрывается около 60 сек, начиная с 3-го connect/disconnect
ТаблоидОткудова лезут дополнительные 7-8 секунды ?
Слышь, ты чо такой въедливый? Тебе движок чо, нанимался миллисекунды считать? Секундой
туда, секундой сюда, не всё ли пох?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
10.06.2015, 22:45
    #38981700
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SuperClassic: security3.fdb НЕ закрывается около 60 сек, начиная с 3-го connect/disconnect
Из-за этих долбаных 60 сек не могу приконнектиться по embedded к security.db, если перед этим влез в isql и приконнектился там по ТСР к чему-то другому. А тут выясняется, что и 60 сек мало. Да еще и на SC такая же хрень, как и на SS :-)
...
Рейтинг: 0 / 0
10.06.2015, 22:48
    #38981703
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SuperClassic: security3.fdb НЕ закрывается около 60 сек, начиная с 3-го connect/disconnect
Таблоидне могу приконнектиться по embedded к security.db, если перед этим влез в
isql и приконнектился там по ТСР к чему-то другому
Лично у меня возникает резонный вопрос: а какого ты вообще лезешь через embedded куда
угодно, не погасив перед этим нормальный сервер?.. В особенности - в БД безопасности .
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
10.06.2015, 22:55
    #38981707
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SuperClassic: security3.fdb НЕ закрывается около 60 сек, начиная с 3-го connect/disconnect
А его, сервер этот, хрен погасишь из-под тестовой среды fbtest.py :-)
Вот и приходится делать через Жо - ждать то бишь, пока "само отвалится" через 60 (якобы) сек.
...
Рейтинг: 0 / 0
10.06.2015, 23:54
    #38981722
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SuperClassic: security3.fdb НЕ закрывается около 60 сек, начиная с 3-го connect/disconnect
Таблоид,

зачем оно тебе надо? Тем более с точности до секунды
...
Рейтинг: 0 / 0
11.06.2015, 00:16
    #38981731
dimitr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SuperClassic: security3.fdb НЕ закрывается около 60 сек, начиная с 3-го connect/disconnect
ТаблоидА его, сервер этот, хрен погасишь из-под тестовой среды fbtest.py :-)
и нехер. А кому сильно надо, тот перед запуском тестовой среды сбросит лингер у secdb.
...
Рейтинг: 0 / 0
11.06.2015, 00:19
    #38981735
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SuperClassic: security3.fdb НЕ закрывается около 60 сек, начиная с 3-го connect/disconnect
dimitr,

или назначит в качестве security другую БД без лингера
...
Рейтинг: 0 / 0
11.06.2015, 10:10
    #38981881
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SuperClassic: security3.fdb НЕ закрывается около 60 сек, начиная с 3-го connect/disconnect
dimitrкому сильно надо, тот перед запуском тестовой среды сбросит лингер у secdb.Ты про батник, который принудительно меняет некоторые параметры в конфиге перед запуском ФБ-инстанса, или про что-то другое ?
...
Рейтинг: 0 / 0
11.06.2015, 10:35
    #38981903
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SuperClassic: security3.fdb НЕ закрывается около 60 сек, начиная с 3-го connect/disconnect
Таблоид,

про LINGER. Он не гарантирует что БД будет освобождена через указанное кол-во секунд. Потому что там ещё всяческие процессы могут происходить. Он всего лишь указывает что кеш не будет сброшен в течении указанного кол-ва секунд (по крайней мере не меньше этого значения). Ведь даже когда ты без лингера отрубаешься от базы она не освобождается мгновенно.
...
Рейтинг: 0 / 0
11.06.2015, 12:26
    #38982096
dimitr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SuperClassic: security3.fdb НЕ закрывается около 60 сек, начиная с 3-го connect/disconnect
ТаблоидТы про батник, который принудительно меняет некоторые параметры в конфиге перед запуском ФБ-инстанса
именно про него, например
...
Рейтинг: 0 / 0
11.06.2015, 12:27
    #38982099
dimitr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SuperClassic: security3.fdb НЕ закрывается около 60 сек, начиная с 3-го connect/disconnect
dimitrименно про него, например
вот только тесты без лингера станут работать еще медленнее :-(
...
Рейтинг: 0 / 0
11.06.2015, 12:27
    #38982100
hvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SuperClassic: security3.fdb НЕ закрывается около 60 сек, начиная с 3-го connect/disconnect
Таблоидне могу приконнектиться по embedded к security.db, если перед этим влез в isql и приконнектился там по ТСР к чему-то другому.Зачем ?
...
Рейтинг: 0 / 0
11.06.2015, 12:30
    #38982108
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SuperClassic: security3.fdb НЕ закрывается около 60 сек, начиная с 3-го connect/disconnect
hvladТаблоидне могу приконнектиться по embedded к security.db, если перед этим влез в isql и приконнектился там по ТСР к чему-то другому.Зачем ?

ага и мне то же интересно. Просто я вижу пока один смысл коннетится к security.db через embeded - это для его начальной инициализации. Но повторно то зачем?
...
Рейтинг: 0 / 0
11.06.2015, 12:52
    #38982145
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SuperClassic: security3.fdb НЕ закрывается около 60 сек, начиная с 3-го connect/disconnect
> зачем
Надо сделать тест для проверки CORE-4821. И если я правильно понимаю замечание "Alexander Peshkov added a comment - 01/Jun/15 10:52 AM", роль, которая будет иметь грант на create database, должна быть предварительно создана в embedded-подключении к sec3.fdb.
Проблема в том, что fbtest, когда получает аргументом имя некоторого файла (напр., 'core_4821.fbt') в тихаря проводит создание базы с именем %tmp%/core_4821.fbt, после чего подключается к ней по ТСР. След-но, в этот момент времени sec3.fdb будет уже недоступен для embedded-коннекта, попытка вывалит сообщение "файл занят другим процессом".
Выкрутиться из этого можно, насколько могу понять, только одним способом: закрыть коннект в fbtest'e, после чего... ждать не менее 70 секунд, чтобы ФБ отцепился от файла 'security.db'
...
Рейтинг: 0 / 0
11.06.2015, 13:22
    #38982201
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SuperClassic: security3.fdb НЕ закрывается около 60 сек, начиная с 3-го connect/disconnect
Таблоид,

подключись не ембедедом через TCP, но сначала в конфиге поставь

Код: sql
1.
2.
3.
4.
5.
security.db = $(dir_secDb)/security3.fdb
{
	RemoteAccess =true
	DefaultDbCachePages = 50
}
...
Рейтинг: 0 / 0
11.06.2015, 13:31
    #38982213
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SuperClassic: security3.fdb НЕ закрывается около 60 сек, начиная с 3-го connect/disconnect
Симонов Дениссначала в конфиге поставьне могу я в этом случае ничего менять в конфиге... он спрятан от мну далеко и навсегда
...
Рейтинг: 0 / 0
11.06.2015, 13:42
    #38982234
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SuperClassic: security3.fdb НЕ закрывается около 60 сек, начиная с 3-го connect/disconnect
Таблоид,

мда... Но раз ты не имеешь доступ к конфигу, тогда не понятно как тестировать баги, которые будут связаны с переназначением security БД. Или когда она сама на себя завязана. А такие баги уже есть см. CORE-4721
хотя наверное сам процесс зависания трудно определить скриптом
...
Рейтинг: 0 / 0
11.06.2015, 14:05
    #38982264
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SuperClassic: security3.fdb НЕ закрывается около 60 сек, начиная с 3-го connect/disconnect
Симонов Денисне понятно как тестировать баги, которые будут связаны с переназначением security БД. Или когда она сама на себя завязана.Это надо, видимо, P.Cisar'я тревожить, чтобы он допилил механизьм...

Симонов ДенисА такие баги уже есть см. CORE-4721 Да, я помню, ты мне говорил про это недавно.

Симонов Денисхотя наверное сам процесс зависания трудно определить скриптомПочему ? Вспомогательными утилитами типа psList.exe, psKill.exe - запросто. Из-под батника вызываем isql командой start и запускаем psList - периодическую проверку существования процесса этого isql'я. Если через некоторое время этот процесс так и будет торчать в списке, то клияем его psKill'ом.
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / SuperClassic: security3.fdb НЕ закрывается около 60 сек, начиная с 3-го connect/disconnect / 20 сообщений из 20, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]