Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Firebird, InterBase Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3 4 5   вперед  Ctrl      все
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
db20mln
Member

Откуда:
Сообщений: 32
Вот дамп, но я не уверен что это тот, который нужен - т.к. после падения база тут же перезапускается.
https://yadi.sk/d/rUeYqOHCtPomc
18 июл 16, 14:30    [19423250]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
db20mln
Member

Откуда:
Сообщений: 32
Снова упал с ошибкой в логе:

DBS Mon Jul 18 14:31:45 2016
Access violation.
The code attempted to access a virtual
address without privilege to do so.
This exception will cause the Firebird server
to terminate abnormally.
18 июл 16, 14:33    [19423263]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
hvlad
Member

Откуда:
Сообщений: 10267
db20mln
Пришлось поставить DefaultDbCachePages = 640000
а) накой назначать огромный кеш ВСЕМ БД ?
б) FileSystemCacheThreshold отредактировал ?


db20mln
Сперва база упала из-за udf - может и не из-за нее, но в логах дважды появилась ошибка
Однозначно из-за неё
db20mln
Заменил ее на udr
На что ???

db20mln
После чего вообще все упало
А до этого падало как-то иначе, не вообще ?
firebird.log во время падения что-то содержит, кроме INET ошибок ?

db20mln
Общие наблюдения:
Выборка и апдейт выполняются дольше, т.е. в сумме все делается в 1.5 - 3 раза дольше.
Потому что ты отключил файловый кеш

db20mln
По монитору ресурсов: загрузка диска на 90-99%, при этом ввод/вывод = 7-20 Мб/с.
При классике было: загрузка диска на 85-95%, ввод/вывод = 20-70 Мб/с.
Потому что ты отключил файловый кеш

db20mln
В время работы воркеров, даже в IB Expert не зайдешь - тупит сильно, по несколько минут не реагирует.
Потому что ты отключил файловый кеш
18 июл 16, 14:36    [19423272]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
hvlad
Member

Откуда:
Сообщений: 10267
db20mln
Вот дамп, но я не уверен что это тот, который нужен - т.к. после падения база тут же перезапускается.
Как ты его получил ?

Для получения дампа в момент падения чти про WER (windows error reporting)
18 июл 16, 14:39    [19423294]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 9469
db20mln,

а ты через новый fbclient работаешь или через тот что от 2.5 остался?
Подключаешься через алиас БД? В databases.conf никакие параметры не переопределял?

P.S. UDF была однозначно кривой. За UDR не скажу от неё вроде как логах ничего не было, но и не факт что если что не так туда оно попадает.
18 июл 16, 14:42    [19423317]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 9469
db20mln,

ваша UDR тоже кривая.
18 июл 16, 14:46    [19423341]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 9469
hvlad
На что ???


он имеет ввиду новые внешние функции. Хотя я сильно сомневаюсь что он её правильно написал, ибо сложнее это чем Legacy UDF.
18 июл 16, 14:48    [19423353]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
hvlad
Member

Откуда:
Сообщений: 10267
Симонов Денис
он имеет ввиду новые внешние функции
Я значение букв UDR понимаю :) Но очень сильно сомневаюсь, что ТС имел в виду именно их.
Ставлю на PSQL ф-цию или встроенный хеш.
18 июл 16, 14:52    [19423373]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
db20mln
Member

Откуда:
Сообщений: 32
hvlad
db20mln
Пришлось поставить DefaultDbCachePages = 640000
а) накой назначать огромный кеш ВСЕМ БД ?

БД всего одна. При меньшем кеше скорость работы падает.

При работе воркеров они читают большую таблицу - но каждый свою часть данных. Т.е. кеш слишком быстро забивается и освобождается (воркеры запускаются 1500 - 3500 раз, но не более 40-60 одновременно).

Я прикинул что если при классике я ставил 16000 (выбрано после ряда экспериментов), то при 40 одновременных воркерах - это как раз 640000.

hvlad
б) FileSystemCacheThreshold отредактировал ?

Нет.
Подскажите пож-та какое значение установить.
Мануалы читал, но 2 недели этих проблем уже высушили мозг.

hvlad
db20mln
Заменил ее на udr
На что ???

udr.dll
У меня одна самописная внешняя функция - перед переходом с 2.5 на 3.0 реализовал ее в виде UDR.

hvlad
db20mln
После чего вообще все упало
А до этого падало как-то иначе, не вообще ?
firebird.log во время падения что-то содержит, кроме INET ошибок ?


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

При последнем падении было только то что выше писал
+
DBS Mon Jul 18 14:31:45 2016
Access violation.
The code attempted to access a virtual
address without privilege to do so.
This exception will cause the Firebird server
to terminate abnormally.


hvlad
Потому что ты отключил файловый кеш

Я понял что он отключился из-за FileSystemCacheThreshold, подскажите плз какое значение поставить.
18 июл 16, 17:05    [19424130]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
db20mln
Member

Откуда:
Сообщений: 32
Симонов Денис
db20mln,
а ты через новый fbclient работаешь или через тот что от 2.5 остался?
Подключаешься через алиас БД? В databases.conf никакие параметры не переопределял?

P.S. UDF была однозначно кривой. За UDR не скажу от неё вроде как логах ничего не было, но и не факт что если что не так туда оно попадает.

Через GDS32.dll.
databases.conf не трогал.

Я ночью запускал тестовый прогон - все прошло без сбоев, просто очень медленно (видимо отключился файловый кеш).
Раньше на классике - тоже иногда все проходило без сбоев, но чем больше данных запускаешь обрабатывать, тем больше шансов сбоя.

Ну и супер при сбое просто перезапускается и отрубаются все коннекты.
А классик - ну я писал в начале, другое поведение и другие ошибки в логе.

Симонов Денис
db20mln,
ваша UDR тоже кривая.

Даже если и так - как мне об этом узнать, если сообщений об ошибках нет?
18 июл 16, 17:19    [19424210]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 9469
db20mln,

больше чем DefaultDbCachePages. А вообще логика кажется странной. Почему требуется апдейтить хренову тучу строк? Это же порождает мусор и его сборку. Оно реально всё апдейтится или всё же часть апдейтов просто работают в холостую?
18 июл 16, 17:22    [19424234]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
db20mln
Member

Откуда:
Сообщений: 32
GDS32.dll - конечно же новый, который ставится тройкой.
Он и в C:\Windows\SysWOW64\ и в папке с приложением.
18 июл 16, 17:26    [19424254]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
db20mln
Member

Откуда:
Сообщений: 32
hvlad
Для получения дампа в момент падения чти про WER (windows error reporting)

WER не был включен по умолчанию.
Сейчас включу, снова переключусь на СС и буду ждать сбой :(
18 июл 16, 17:28    [19424267]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
db20mln
Member

Откуда:
Сообщений: 32
Симонов Денис
db20mln,
больше чем DefaultDbCachePages. А вообще логика кажется странной. Почему требуется апдейтить хренову тучу строк? Это же порождает мусор и его сборку. Оно реально всё апдейтится или всё же часть апдейтов просто работают в холостую?

Это не лучшее решение, но оно было частью архитектуры и работало на 2.5.

Сейчас думаю как изменить эту части системы, чтобы радикально уменьшить кол-во апдейтов и инсертов.
18 июл 16, 17:35    [19424304]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
hvlad
Member

Откуда:
Сообщений: 10267
db20mln
hvlad
а) накой назначать огромный кеш ВСЕМ БД ?
БД всего одна
Нет. Есть ещё security database

db20mln
Я прикинул что если при классике я ставил 16000 (выбрано после ряда экспериментов), то при 40 одновременных воркерах - это как раз 640000.
Ну почему никто никогда не вспоминает про файловый кеш ???

db20mln
udr.dll
У меня одна самописная внешняя функция - перед переходом с 2.5 на 3.0 реализовал ее в виде UDR.
Я правильно поинмаю, что была UDF, которая приводила к падениям, и вместо неё была написана UDR (что на порядок сложнее) ? А смысл где ?
db20mln
hvlad
Потому что ты отключил файловый кеш

Я понял что он отключился из-за FileSystemCacheThreshold, подскажите плз какое значение поставить.
Уже написали - больше, чем кеш БД.
18 июл 16, 17:48    [19424349]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 47382

db20mln
При меньшем кеше скорость работы падает.

А статистика работы кэша вообще собиралась или все изменения параметров проводятся
исключительно на "партийном чутье"?

Posted via ActualForum NNTP Server 1.5

18 июл 16, 17:50    [19424363]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 47382

hvlad
Есть ещё security database

Для которой в databases.conf гвоздиками прибито DefaultDbCachePages = 50.

Posted via ActualForum NNTP Server 1.5

18 июл 16, 17:54    [19424378]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
db20mln
Member

Откуда:
Сообщений: 32
hvlad
Я правильно понимаю, что была UDF, которая приводила к падениям, и вместо неё была написана UDR (что на порядок сложнее) ? А смысл где ?

Нет.
Была UDF - 32 битная - в ней всего одна функция, она 4 года работала на FB 2.5, ошибок не выдавала.
Когда скомпилировали ее под 64 бита - подключить так и не получилось, выдавала ошибки (под 64 битной FB).

После выхода тройки решил сделать UDR чтобы перейти на 64 битную базу, пока делал - разобрался и с 64 битной версией UDF.
Т.е. по сути могу сейчас использовать и UDF, и UDR.

Ошибки UDF появились первый раз сегодня - при запуске в SS.
Поэтому я и переключился на UDR.
18 июл 16, 18:05    [19424404]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
db20mln
Member

Откуда:
Сообщений: 32
Dimitry Sibiryakov
А статистика работы кэша вообще собиралась или все изменения параметров проводятся
исключительно на "партийном чутье"?

Нет, не собиралась.
Все делалось замерами времени выполнения.
18 июл 16, 18:08    [19424409]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 9469
db20mln,

давай сюда код своей UDR/UDF вместе с объявлением метаданных.
18 июл 16, 18:26    [19424443]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
db20mln
Member

Откуда:
Сообщений: 32
Симонов Денис
давай сюда код своей UDR/UDF вместе с объявлением метаданных.

https://yadi.sk/d/khuy3SX4tQPXh
18 июл 16, 18:45    [19424510]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
YuRock
Member

Откуда: Донецк
Сообщений: 3898
db20mln,

1. Надо память явно выделить, а не возвращать указатель на автоматическую переменную, неужели не ясно.
2. При чем - не просто выделить, а из менеджера памяти FB. Т.е. чз ib_util_malloc и объявить с FREE_IT. (в случае с SS можно иногда вывернуться через ThreadVar и не использовать ib_util_malloc/FREE_IT, но смысла я не вижу в подобных извращениях).
18 июл 16, 18:56    [19424535]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
YuRock
Member

Откуда: Донецк
Сообщений: 3898
db20mln,

Пример:

function ib_util_malloc( l: integer ): Pointer; cdecl; external 'ib_util.dll';

function MakeResultString( const Source: String ): PChar;
var
  Len: Integer;
begin
  Len := Length( Source );

  Result := ib_util_malloc( Len + 1 );

  if Len <> 0 then
    Move( PChar( Source )^, Result^, Len );

  Result[ Len ] := #0;
end;

function Left(sz: PChar; var Number: Integer): PChar; cdecl; export;
begin
  result := MakeResultString( Copy( String( sz ), 1, Number ) );
end;

exports Left;
18 июл 16, 18:59    [19424545]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
YuRock
Member

Откуда: Донецк
Сообщений: 3898
* для тебя - PChar в PAnsiChar и String в AnsiString заменить надо будет наверно в моем коде.
18 июл 16, 19:02    [19424553]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 9469
db20mln,

UDF однозначно кривая. В UDR особых косяков не заметил.
18 июл 16, 19:14    [19424586]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3 4 5   вперед  Ctrl      все
Все форумы / Firebird, InterBase Ответить