Khorsun Vlad wrote:
Не описание, а поток сознания. Программы так же пишешь ? Неужели нельзя
попробовать перечитать написанное чужими глазами ?
попробую написать спокойно.
есть две БД (opc и fbtm)
на орс БД был запущен такой код
procedure TWorkBDThread.AdminStat;
var
IBStat: TIBStatisticalService;
begin
try
IBStat := TIBStatisticalService.Create(nil);
try
IBStat.DatabaseName := 'opc';
IBStat.ServerName := 'localhost:service_mgr';
IBStat.Protocol := Local;
IBStat.LoginPrompt := False;
IBStat.Params.Add('user_name=SYSDBA');
IBStat.Params.Add('password=masterkey');
IBStat.Options := IBStat.Options + [DataPages, IndexPages,
RecordVersions];
GetLog['system']['workbd'].Report(200, datetimetostr(now) + ' Attach');
IBStat.Attach;
GetLog['system']['workbd'].Report(200, datetimetostr(now) + '
ServiceStart');
IBStat.ServiceStart;
GetLog['system']['workbd'].Report(200, datetimetostr(now) + '
IBStat.Eof');
while not IBStat.Eof do
GetLog['system']['workbd'].Report(200, IBStat.GetNextLine);
GetLog['system']['workbd'].Report(200, datetimetostr(now) + ' Destroy');
except
on E:Exception do GetLog['system']['workbd'].Report(200,
datetimetostr(now) + E.Message);
end;
finally
FreeAndNil(IBStat);
end;
end;
это произошло 07-09-08 21-00, задача не была завершена (долго выполнялась) и
08-09-08 01-00 был запущен
"d:\Program Files\Firebird\Firebird_2_5\bin\gstat.exe" -r localhost:opc -USER
SYSDBA -password masterkey >gstat1.txt
соответственно с 08-09-08 01-00 выполнялось два процесса сборки статистики на
одну бд орс.
Потоки записи:
с 21-00 в орс бд ничего не писалось, были только читающие (редкие) транзакции с
отключением приложений после выполнения чтения.
в fbtm каждые 20 сек 200 записей на запись в одну таблицу, с отключением от
сервера после записи.
размер орс бд - 25 гиг
размер fbtm бд = 2 гиг
после физического удаления из процессов задачи которая выполняла код
TWorkBDThread.AdminStat и процесса gstat загрузка сервера файберд практически не
изменилась (13% процессора, 160 мб оперативной)
сервер стоит 2.5 20842
вот что происходило в логе файрберда.
SW (Server) Mon Sep 08 10:53:06 2008
INET/inet_error: read errno = 10054
(выгрузили процесс TWorkBDThread.AdminStat)
SW (Server) Mon Sep 08 11:10:24 2008
Database: D:\PROGRAM FILES\FIREBIRD\FIREBIRD_2_1\OPC.IB
deadlock
команда завершения работы файрберд.
SW (Server) Mon Sep 08 11:14:04 2008
INET/inet_error: read errno = 10054
SW (Server) Mon Sep 08 11:14:04 2008
INET/inet_error: read errno = 10054
SW (Server) Mon Sep 08 11:14:44 2008
Shutting down the server with 2 active connection(s) to 1 database(s)
SW (Server) Mon Sep 08 11:14:54 2008
Firebird shutdown is still in progress after the specified timeout
SW (Client) Mon Sep 08 11:15:52 2008
Guardian starting: "C:\Program
Files\Firebird\Firebird_2_5\bin\fbserver.exe"
запуск сервера субд.
в бд fbtm скорее всего параметр sweep стандартный (20000), но пока доказать не
могу, нет физического доступа к серверу.
в бд орс sweep = 0
соответственно оч интересно (хотя бы примерно) чтотам случилось и что сделать
чтобы больше такого не было.
Заранее спс.