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

соответственно оч интересно (хотя бы примерно) чтотам случилось и что сделать чтобы больше такого не было.

Заранее спс.

Ответить