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

Откуда:
Сообщений: 32
Здравствуйте.
Помогите, пож-та, найти причину проблемы.

Firebird-3.0.0.32483_2_x64 (Classic mode)
XeonE5 х 2шт, SSD Raid10, памяти 64Gb (Win Server 2008 R2 Enterprise)

Есть база 30 Гб - в ней есть 2 большие таблицы:
- примерно на 11 гб и на 8 гб
- с индексами по текстовым полям (плюс FK на мелкие таблицы)

Несколько раз в сутки запускается обработка данных в несколько этапов:
1) чтение и запись в большую таблицу 1
2) чтение из большой таблицы 2
3) чтение из таблицы 1

- Все операции происходит одновременно с 40-50 воркеров (отдельных легких клиентов - Delphi + IBX).
- Каждый воркер работает со своими строками (т.е. воркеры не работают с одними и теми же записями таблиц).
- У каждого воркера есть читающая транзакция и пишущая.
- В пишущей апдейтятся от 100 до 150 000 строк в одной транзакции.
- Каждый воркер отработав со своими данными завершает работу и запускается новый воркер для работы со следующим набором данных.
- В базе один юзер SYSDBA.


Проблема:
На одном из этапов (на любом - по разному) новые коннекты не могут соединиться с базой.
При этом, клиентские приложения (воркеры, IBExpert, ...) не показывают ошибки, при попытке соединения с базой, они просто висят - не коннектятся, не отваливаются.
Старые коннекты работают, пока не запускается новая транзакция.

Через isql коннектиться получается.

У одного из воркеров (только у одного) при этом выскакивает ошибка:
firebird Attachment::start Transaction failed when loading mapping cache

Иногда ошибка:
Your user name and password are not defined. Ask your database administrator to set up a Firebird login.

В логах при этом возникают ошибки - обычно 2 подряд:
Database: C:\PROGRAM FILES\FIREBIRD\FIREBIRD_3_0\SECURITY3.FDB
page 0, page type 1 lock denied (216)

Database:
page 0, page type 1 lock denied (216)

Еще:
Ограничение винды на кол-во коннектов (1024) - убрано, хотя более 370 и не доводилось увидеть.
Память занята не более чем на 30%.
Дисковая подсистема грузится до 90% на запись в пиках.
B/R не помогает, ошибок в базе нет.


PS: Ранее эта проблема возникала при переходе с 2.0 на 2.5, но тогда решилась уменьшением кол-во воркеров со 100 до 60.



firebird.conf
+
TempDirectories = d:\temp
DefaultDbCachePages = 16000
TempBlockSize = 2M
TempCacheLimit = 3Gb
DeadlockTimeout = 3
WireCrypt = Disabled
LockMemSize = 160M
LockHashSlots = 99971
EventMemSize = 512K
ServerMode = Classic


fb_lock_print
+

C:\Program Files\Firebird\Firebird_3_0>fb_lock_print.exe -d e:\db\database.fdb -r
LOCK_HEADER BLOCK
Version: 146, Creation timestamp: 2016-07-12 21:00:36
Active owner: 0, Length: 167772160, Used: 7200488
Enqs: 801335, Converts: 733469, Rejects: 7261, Blocks: 8319
Deadlock scans: 0, Deadlocks: 0, Scan interval: 3
Acquires: 1600408, Acquire blocks: 5363, Spin count: 0
Mutex wait: 0.3%
Hash slots: 65521, Hash lengths (min/avg/max): 0/ 0/ 6
Remove node: 0, Insert queue: 0, Insert prior: 0
Owners (1): forward: 536968, backward: 536968
Free owners (2): forward: 563840, backward: 2880536
Free locks (31898): forward: 4233744, backward: 6986680
Free requests (32405): forward: 3996720, backward: 3339800



netstat
C:\Program Files\Firebird\Firebird_3_0>netstat -a -n | find /c "TCP"
287
14 июл 16, 22:31    [19411385]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
Dimitry Sibiryakov
Member

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

db20mln
Помогите, пож-та, найти причину проблемы.

Судя по всему, недобитый CORE-4899. Пиши трекеру. Переходи на суперсервер. Ну и до
текущего снапшота тоже неплохо бы обновиться как минимум.

Posted via ActualForum NNTP Server 1.5

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

Откуда:
Сообщений: 32
SS пробовал - не помогло. Правда не зафиксировал что было в логах.
(SS не подходит, в нашем случае выгоднее чтобы каждый коннект имел свой кеш)
14 июл 16, 22:58    [19411551]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 27854
db20mln
в нашем случае выгоднее чтобы каждый коннект имел свой кеш

это чешуя какая-то. любой СУБД выгоднее общий кэш. До сих пор супер был малоосмыслен именно по причине неподдержки SMP. А с поддержкой SMP в супере надобность в классике отпадает.

db20mln
SS пробовал - не помогло.

если ошибка не зависит от архитектуры, значит жди, пока пофиксят. А вообще планируй переход на SS.
14 июл 16, 23:57    [19411659]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 27854
db20mln
- В пишущей апдейтятся от 100 до 150 000 строк в одной транзакции.

кстати, вот тут классик 3.0 будет медленнее супера 3.0, однозначно.
И - у этих транзакций выставлено no_auto_undo?
14 июл 16, 23:58    [19411661]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
hvlad
Member

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

fb_lock_print нужно делать для той БД, в которой ошибка - в данном случае security3.fdb
Если не знаешь как его запускать, делай c опцией -a.

Если эта проблема стабильно воспроизводится на SS\SC, то имеет смысл снять полный дамп памяти.
Но лучше всего, конечно, сделать воспроизводимый пример.

PS не вижу связи ни с "эта проблема возникала при переходе с 2.0 на 2.5", ни с CORE-4899
15 июл 16, 00:13    [19411686]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
hvlad
Member

Откуда:
Сообщений: 10195
kdv
И - у этих транзакций выставлено no_auto_undo?
Надеюсь, ты не советуешь этот флаг использовать ?
15 июл 16, 00:14    [19411687]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
hvlad
Member

Откуда:
Сообщений: 10195
db20mln
SS пробовал - не помогло. Правда не зафиксировал что было в логах.
Очень плохо, что не зафиксировал
15 июл 16, 00:15    [19411689]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
db20mln
Member

Откуда:
Сообщений: 32
Поставил Firebird-3.0.1.32562-0_x64 - буду тестить.

no_auto_undo не использую.

fb_lock_print для security3.fdb сделаю при ближайшем зависании.

SS попробую на днях еще раз, правда кеш надо будет очень большой поставить.
15 июл 16, 01:07    [19411794]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 9262
db20mln
SS попробую на днях еще раз, правда кеш надо будет очень большой поставить.


начинай с 50K. Можно больше, но аккуратно, так как при превышении FileSystemCacheThreshold файловый кеш будет отрублен, что может сказаться как в лучшую. так и худшую сторону.

Если есть запросы с сортировками, то подымай TempCacheLimit.

Хотя все эти советы от этой ошибки скорее всего не спасут.
15 июл 16, 10:41    [19412939]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 27854
hvlad
Надеюсь, ты не советуешь этот флаг использовать ?

советую. потому что он пишет, что "В пишущей апдейтятся от 100 до 150 000 строк в одной транзакции.". Таким образом, все равно undo log при роллбэке "работать" не будет (от 80 тыс до 150 тыс). А в результате апдейты будут работать быстрее.
15 июл 16, 13:58    [19414401]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
hvlad
Member

Откуда:
Сообщений: 10195
kdv
А в результате апдейты будут работать быстрее.
С чего бы это ?
15 июл 16, 14:08    [19414451]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 27854
hvlad,

а что, разве нет такого совета "при массовых вставках укажите no_auto_undo"? или вставка от апдейта тут сильно отличается? Я может забыл чего...
15 июл 16, 14:56    [19414775]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 59635
kdv> или вставка от апдейта тут сильно отличается?

Отличается, конечно. Это даже в статье у тебя
было описано, если я правильно помню.

Posted via ActualForum NNTP Server 1.5

15 июл 16, 15:05    [19414832]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
hvlad
Member

Откуда:
Сообщений: 10195
kdv
а что, разве нет такого совета "при массовых вставках укажите no_auto_undo"?
Первый раз слышу.
Али с Таблоидом много общался ? ;)

Вообще говоря, многое зависит от того, как вставлять - одним оператором или кучкой мелких.
Во втором случае можно сэкономить немного памяти и чуть-чуть скорости. Совсем чуть-чуть.

kdv
или вставка от апдейта тут сильно отличается?
Если не апдейтить одну запись более одного раза - ничем не отличается.
15 июл 16, 15:38    [19415030]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
db20mln
Member

Откуда:
Сообщений: 32
По поводу пишущей транзакции.
Я собираюсь выделить те несколько полей которые апдейтятся - в отдельную таблицу, чтобы при апдейте плодились версии более мелких записей.
Или как вариант - переделать с update на insert (но придется периодически делать массовые delete) - даже не знаю лучше это или хуже.

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

PS: Сейчас в качестве эксперимента пытаюсь избавиться от post_evet, больше уже грешить не на что.
15 июл 16, 16:28    [19415313]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
Dimitry Sibiryakov
Member

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

db20mln
Я собираюсь выделить те несколько полей которые апдейтятся - в отдельную таблицу, чтобы
при апдейте плодились версии более мелких записей.

Бесполезно: в дельту и так включаются только изменённые поля.

db20mln
Или как вариант - переделать с update на insert (но придется периодически делать массовые
delete) - даже не знаю лучше это или хуже.

Бесполезно: твоя проблема никак не связана с основной БД вообще.

Posted via ActualForum NNTP Server 1.5

15 июл 16, 16:30    [19415328]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
hvlad
Member

Откуда:
Сообщений: 10195
db20mln
Я собираюсь выделить те несколько полей которые апдейтятся - в отдельную таблицу, чтобы при апдейте плодились версии более мелких записей.
Нет смысла. FB сохраняет сжатую дельту.
Можно выиграть пару байт на дельту, но потерять на заголовках записей и джойнах.
15 июл 16, 16:32    [19415344]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
db20mln
Member

Откуда:
Сообщений: 32
Избавление от post_event ничего не дало.

На последней сборке - клиент показывает более детальное сообщение (раньше была только вторая строчка):
page 0, page type 1 lock denied
IAttachment::startTransaction failed when loading mapping cache.

И вот fb_lock_print для SECURITY3.FDB
+
C:\Program Files\Firebird\Firebird_3_0>fb_lock_print.exe -d "C:\PROGRAM FILES\FIREBIRD\FIREBIRD_3_0\SECURITY3.FDB" -n
LOCK_HEADER BLOCK
Version: 146, Creation timestamp: 2016-07-15 21:22:24
Active owner: 0, Length: 167772160, Used: 553488
Enqs: 175, Converts: 6, Rejects: 33, Blocks: 2
Deadlock scans: 74535, Deadlocks: 2, Scan interval: 3
Acquires: 74865, Acquire blocks: 3720, Spin count: 0
Mutex wait: 5.0%
Hash slots: 65521, Hash lengths (min/avg/max): 0/ 0/ 4
Remove node: 0, Insert queue: 0, Insert prior: 0
Owners (29): forward: 536968, backward: 553160
Free owners: *empty*
Free locks (5): forward: 541256, backward: 537664
Free requests: *empty*
16 июл 16, 00:35    [19417462]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
db20mln
Member

Откуда:
Сообщений: 32
Последняя сборка зависает чаще.
Только что зависла при 20 активных коннектах.
Это бред.
Откатываюсь на 2.5.
17 июл 16, 18:48    [19420846]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
hvlad
Member

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

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

Откуда:
Сообщений: 32
Да, попробую.
Все равно оказалось что просто так на предыдущую через b/r не перейдешь, ибо:
Expected backup version 1..9. Found 10. :(
17 июл 16, 21:05    [19421109]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
hvlad
Member

Откуда:
Сообщений: 10195
db20mln
Да, попробую.
Спасибо
db20mln
Все равно оказалось что просто так на предыдущую через b/r не перейдешь, ибо:
Expected backup version 1..9. Found 10. :(
Нужно бекапить gbak'ом от 2.5 и без сервисов
17 июл 16, 21:53    [19421184]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 27854
db20mln,

http://www.ibase.ru/prevver/
"Переход на версию «назад»"
17 июл 16, 22:11    [19421214]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
db20mln
Member

Откуда:
Сообщений: 32
Перешел на супер.
Пришлось поставить DefaultDbCachePages = 640000, т.к. с 50000 тормоза.

Сперва база упала из-за udf - может и не из-за нее, но в логах дважды появилась ошибка:
+
DBS Mon Jul 18 12:17:02 2016
The user defined function: MY_STRING_HASH
referencing entrypoint: MyStringHash
in module: MyUDF.dll
caused the fatal exception: 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.


DBS Mon Jul 18 12:17:02 2016
Operating system call TlsGetValue failed. Error code 87


Заменил ее на udr и запустил заново.

После запуска воркеров, начали периодически отваливаться клиентские приложения с одной и той же парой ошибок:
DBS Mon Jul 18 14:04:15 2016
INET/inet_error: read errno = 10054, client host = trm, address = 192.168.99.10/59403, user = red31
DBS Mon Jul 18 14:04:15 2016
INET/inet_error: read errno = 10054, aux client host = trm, address = 192.168.99.10/59440

После чего вообще все упало, на клиентах и воркерах выдало:

Error writing data to the connection.

(Дамп снял - отправлю)


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

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

В время работы воркеров, даже в IB Expert не зайдешь - тупит сильно, по несколько минут не реагирует.
В клиентское программе - тоже фризы нереальные, поэтому остальные юзеры курят пока не закончатся обработки.
При том что в классике - было нормально.
18 июл 16, 14:19    [19423178]     Ответить | Цитировать Сообщить модератору
 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

Откуда:
Сообщений: 10195
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

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

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

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

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

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

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

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

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


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

Откуда:
Сообщений: 10195
Симонов Денис
он имеет ввиду новые внешние функции
Я значение букв 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

Откуда: Рязань
Сообщений: 9262
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

Откуда:
Сообщений: 10195
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

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

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

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

Posted via ActualForum NNTP Server 1.5

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

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

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

Откуда: Рязань
Сообщений: 9262
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

Откуда: Донецк
Сообщений: 3827
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

Откуда: Донецк
Сообщений: 3827
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

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

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

UDF однозначно кривая. В UDR особых косяков не заметил.
18 июл 16, 19:14    [19424586]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 27854
db20mln,

казалось бы, посмотрел примеры, и сделал по образцу
http://www.ibase.ru/files/download/safeudf.zip
18 июл 16, 19:20    [19424597]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
db20mln
Member

Откуда:
Сообщений: 32
Большое спасибо за указанные ошибки, UDF переделаю.
Но база с UDR, последний билд, SS - падения никуда не делись.

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

По итогу:
Ошибка не отлавливается, причина неизвестна, решения нет - вернулся на 2.5.
19 июл 16, 13:49    [19427123]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
YuRock
Member

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

В UDR не разбираюсь. Но, я думаю, как минимум - не хватает в Udr.dpr
begin
  IsMultiThread := True;
end.

вместо
end.
19 июл 16, 14:07    [19427241]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
YuRock
Member

Откуда: Донецк
Сообщений: 3827
db20mln
Ошибка не отлавливается

Ну так логируй каждую строчку udr (после того, как IsMultiThread включишь). Найдешь, где валится.
19 июл 16, 14:08    [19427247]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
Симонов Денис
Member

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

Не факт что UDR валится. В UDR с первого взгляда всё нормально. Единственное, что помнится были какие-то приколы с выравниванием буферов.

Автор даже не потрудился помониторить память на предмет утечки. Запустить на тестовом Firebird свою функцию 10 миллионов раз.
19 июл 16, 14:20    [19427315]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
Dimitry Sibiryakov
Member

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

Симонов Денис
Автор даже не потрудился

Он даже проблему локализовать не потрудился. Зависания у него "внезапно" обернулись крашами.

Posted via ActualForum NNTP Server 1.5

19 июл 16, 14:27    [19427350]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
YuRock
Member

Откуда: Донецк
Сообщений: 3827
Симонов Денис
В UDR с первого взгляда всё нормально

Вроде да, но в текущем состоянии при вызове функций из неё из разных потоков она обязательно должна иногда валиться, т.к. выделение памяти есть, автоматические типы есть, а IsMultiThread=False.
19 июл 16, 14:28    [19427360]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
hvlad
Member

Откуда:
Сообщений: 10195
db20mln
Дамп памяти не сохраняется, винда не видит что приложение крашится (в журналах винды нет сообщений о сбоях) - т.е. дамп во время сбоя снять не могу.
Гвардейца убери
19 июл 16, 14:39    [19427403]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
db20mln
Member

Откуда:
Сообщений: 32
Dimitry Sibiryakov
Симонов Денис
Автор даже не потрудился

Он даже проблему локализовать не потрудился. Зависания у него "внезапно" обернулись крашами.

Я 2 недели искал причины. Делал наугад, т.к. ошибки в логах не сильно помогли.

Комбинации факторов из-за которых может происходить - код клиента, база, udf/udr, настройки fb, настройки сервака, железо. Каждый фактор пришлось исключать тестами.

Это на фоне ежедневных падений рабочей базы со всеми их последствиями.

Так что обратился за помощью когда собрал исходные данные и не смог сам локализовать проблему.
Поэтому эти групповые "даже не потрудился ..." - мне кажутся не в тему.

По существу:

Валится даже когда udf/udr не задействованы, поэтому я исключил их из причин.

Ошибка по udf промелькнула единственный раз в логе и больше ни разу не повторялась.
Тем более эта udf проработала 4 года на 2.5 без падений.

Я запускал udf 30 млн раз, расход памяти у firebird.exe не менялся (на классике).
Вообще сколько указываю DefaultDbCachePages - столько памяти отъедает и не меняется.
19 июл 16, 17:27    [19428281]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
Dimitry Sibiryakov
Member

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

db20mln
Так что обратился за помощью когда собрал исходные данные и не смог сам локализовать проблему.

А теперь ещё раз: у тебя проблема с падением сервера или его зависанием? Это как бэ две
разные вещи...

Posted via ActualForum NNTP Server 1.5

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

Откуда:
Сообщений: 32
С зависанием.
Я в начале описал что в какой последовательности происходит.
19 июл 16, 17:41    [19428333]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
Dimitry Sibiryakov
Member

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

db20mln
С зависанием.

fb_lock_print -c -a -w

при этом тоже зависает или выдаёт результат?

Posted via ActualForum NNTP Server 1.5

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

Откуда:
Сообщений: 32
Dimitry Sibiryakov
fb_lock_print -c -a -w

при этом тоже зависает или выдаёт результат?

С такими ключами не пробовал, а с "-d -L" и "-d -n" выдавал результат.
19 июл 16, 17:47    [19428354]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
Dimitry Sibiryakov
Member

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

db20mln
С такими ключами не пробовал

Тогда покамест далее говорить не о чем.

Posted via ActualForum NNTP Server 1.5

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

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

запуск кривой udf на классике и на супере дают совершенно разные результаты. В классике в случае чего отвалится только один коннект, в супере отвалятся все коннекты. Опять же поскольку коннекты у тебя в воркерах короткие, то и процессы классика долго жить не будут и могут не успеть загадить память, система всё равно вычистит не освободившуюся память при смерти процесса. С супером же у тебя проблемы будут накапливаться как снежный ком.

Да и вообще мы ещё не видели что там в воркерах такого страшного делается. Я вон запускал тесты Таблоида на 500 коннектах, что-то особо никто не отваливался.

То что пока возвращаешься на 2.5 это хорошо, хоть работать будешь, но вот причину искать не прекращай. Может действительно в FB какой-то баг затесался. Всем будет лучше если его исправят.
19 июл 16, 17:57    [19428393]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
Dimitry Sibiryakov
Member

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

Симонов Денис
То что пока возвращаешься на 2.5 это хорошо

Не возвращается он. Процедуру обратной миграции не осилил.

Posted via ActualForum NNTP Server 1.5

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

Откуда:
Сообщений: 32
Симонов Денис
запуск кривой udf на классике и на супере дают совершенно разные результаты. В классике в случае чего отвалится только один коннект, в супере отвалятся все коннекты. Опять же поскольку коннекты у тебя в воркерах короткие, то и процессы классика долго жить не будут и могут не успеть загадить память, система всё равно вычистит не освободившуюся память при смерти процесса. С супером же у тебя проблемы будут накапливаться как снежный ком.

У меня на классике один коннект выдает ошибку, после этого новые коннекты не делаются - они молча висят (и не коннектятся, и не выдают ошибку), пока не закрываю все старые (работающие) коннекты и не перезагружаю главный.

Попробую добиться воспроизведения ошибки на синтетическом тесте в спокойной обстановке.
19 июл 16, 18:12    [19428442]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
Dimitry Sibiryakov
Member

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

db20mln
У меня на классике один коннект выдает ошибку

Какую ошибку? Точный и полный текст - В СТУДИЮ!!!

Posted via ActualForum NNTP Server 1.5

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

Откуда:
Сообщений: 32
Dimitry Sibiryakov
Не возвращается он. Процедуру обратной миграции не осилил.

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

Откуда:
Сообщений: 32
Dimitry Sibiryakov
db20mln
У меня на классике один коннект выдает ошибку

Какую ошибку? Точный и полный текст - В СТУДИЮ!!!

Вроде бы все описал в начале:
У одного из воркеров (только у одного) при этом выскакивает ошибка:
firebird Attachment::start Transaction failed when loading mapping cache

Иногда ошибка:
Your user name and password are not defined. Ask your database administrator to set up a Firebird login.

В логах при этом возникают ошибки - обычно 2 подряд:
Database: C:\PROGRAM FILES\FIREBIRD\FIREBIRD_3_0\SECURITY3.FDB
page 0, page type 1 lock denied (216)

Database:
page 0, page type 1 lock denied (216)
19 июл 16, 18:20    [19428471]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
Dimitry Sibiryakov
Member

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

db20mln
это заняло пол ночи, т.к. и база большая, и получилось с третьего раза.

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

Posted via ActualForum NNTP Server 1.5

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

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

db20mln
при этом выскакивает ошибка

При чём "при этом"? Какой именно вызов приводит к ошибке? У тебя что, каждый этап
производится в новом коннекте?..

Posted via ActualForum NNTP Server 1.5

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

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

db20mln
firebird Attachment::start Transaction failed when loading mapping cache

И, кстати, этот текст несколько отличается от того, что я вижу в исходниках:
1) Нет "firebird" в начале;
2) Сервер говорит "IAttachment::startTransaction".

Ты уверен, что это сообщение - точное?..

Posted via ActualForum NNTP Server 1.5

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

Откуда:
Сообщений: 32
Dimitry Sibiryakov
При чём "при этом"? Какой именно вызов приводит к ошибке? У тебя что, каждый этап
производится в новом коннекте?..

Да, этапы идут последовательно. Сперва воркеры делают первый этап, затем пауза, потом второй, потом третий.

Dimitry Sibiryakov
db20mln
firebird Attachment::start Transaction failed when loading mapping cache

И, кстати, этот текст несколько отличается от того, что я вижу в исходниках:
1) Нет "firebird" в начале;
2) Сервер говорит "IAttachment::startTransaction".

Ты уверен, что это сообщение - точное?..

Я по началу сохранял сообщения в текстовый файл, возможно слово firebird приписал сам а букву I удалил в спешке.

Но на последней сборке было вот такое сообщение (проверил по скриншоту):
page 0, page type 1 lock denied
IAttachment::startTransaction failed when loading mapping cache.
19 июл 16, 19:04    [19428711]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
Dimitry Sibiryakov
Member

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

db20mln
IAttachment::startTransaction failed when loading mapping cache.

Вот это уже гораздо лучше: первая строчка таки выплыла.

И не забудь, что "fb_lock_print -s -a -w" при зависании надо снимать именно с
security3.fdb. Но лучше сними с обоих баз. Чтобы наверняка.

Posted via ActualForum NNTP Server 1.5

19 июл 16, 19:09    [19428738]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
hvlad
Member

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

можешь сделать валидацию security3.fdb ?

gfix -v -full security3.fdb -user SYSDBA

есс-но, при остановленном сервере
19 июл 16, 20:46    [19429004]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 27854
db20mln
Комбинации факторов из-за которых может происходить - код клиента, база, udf/udr, настройки fb, настройки сервака, железо. Каждый фактор пришлось исключать тестами.

облегчу дальнейшее тестирование. Факторы, из-за которых может происходить:
- код клиента - нет.
- база - разве что при повреждении, а так - нет.
- udf/udr - да
- настройки FB - нет
- настройки сервака - нет
- железо - ... может быть.

так что, если проблема остается, даже после тщательной проверки udf (типа, оно 100% не глючное), то тогда - баг в сервере. Причем, воспроизводимый скорее всего только твоей специфической нагрузкой.
19 июл 16, 20:48    [19429009]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
db20mln
Member

Откуда:
Сообщений: 32
Dimitry Sibiryakov
И не забудь, что "fb_lock_print -s -a -w" при зависании надо снимать именно с
security3.fdb. Но лучше сними с обоих баз. Чтобы наверняка.

К сожалению сервер уже переведен на 2.5.
Если получится воспроизвести на локальном - сделаю.

hvlad
можешь сделать валидацию security3.fdb ?

Делал, ошибок нет.
20 июл 16, 11:29    [19430369]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
db20mln
Member

Откуда:
Сообщений: 32
После перевода на 2.5:
При удалении записей из одной таблицы (через IBExpert), выдало: "unknown ISC error 0."
Повторялось даже на пустой таблице после реконнекта. Исчезло после того как повторил запрос с названием таблицы в кавычках "TASK" и больше не воспроизводилось.

TASK - это таблица со списком задач для воркеров, т.е. в нее пишутся и читаются данные во время обработок, но не сильно интенсивно (по сравнению с другими таблицами).

PS: Вроде это даже не ошибка, но на всякий случай написал.
20 июл 16, 11:42    [19430430]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
Dimitry Sibiryakov
Member

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

db20mln
К сожалению сервер уже переведен на 2.5.

Мне в 100501-й раз повторить рецепт плавной миграции?..

Второй сервер рядом со старым - master-master репликация - постепенный перенос нагрузки с
одного сервера на другой.

Posted via ActualForum NNTP Server 1.5

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

Откуда:
Сообщений: 32
Dimitry Sibiryakov
Мне в 100501-й раз повторить рецепт плавной миграции?..
Второй сервер рядом со старым - master-master репликация - постепенный перенос нагрузки с
одного сервера на другой.

Делал по http://www.ibase.ru/prevver/
С репликацией FB не сталкивался, поэтому если бы не получилось - скорее делал бы через создание базы из скрипта и заливку данных.
20 июл 16, 11:53    [19430490]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
Dimitry Sibiryakov
Member

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

db20mln
делал бы через создание базы из скрипта и заливку данных.

И в каком месте это плавная миграция?

Posted via ActualForum NNTP Server 1.5

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

Откуда:
Сообщений: 32
Dimitry Sibiryakov
И в каком месте это плавная миграция?

А в чем преимущество миграции через репликацию, где почитать?
20 июл 16, 12:16    [19430599]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
Dimitry Sibiryakov
Member

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

db20mln
А в чем преимущество миграции через репликацию, где почитать?

В том, что тебе не нужно сидеть ночами переливая базу и пользователи не страдают.

Posted via ActualForum NNTP Server 1.5

20 июл 16, 12:41    [19430707]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
slrb
Member

Откуда:
Сообщений: 6
Добрый день!

Тоже обнаружил подобную проблему на 3.0 classic + debian (виртуалка под VMWare 6.5)
На 3.0.1/debian9 на 200 коннектах + запросы с web'а ложили сервер через 4 часа.
После обновления клиентских библиотек до 3.0.4 время жизни сервера увеличилось, но раз в 2 дня стабильный ступор.
Переехали на 3.0.5/debian10 на прошлой неделе. Вчера сервер опять сложился.
Время жизни - 4 дня.

Я так понял из треда следующий этап - это переезд на SS?


p.s. UDF не использую, база ~20G c несколькими большими таблицами с логами, есть триггера на коннект.
18 фев 19, 16:47    [21813364]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 29656

18.02.2019 16:47, slrb пишет:
есть триггера на коннект.

и небось к MON$-таблицам в них обращаешься?..

Posted via ActualForum NNTP Server 1.5

18 фев 19, 17:00    [21813405]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
slrb
Member

Откуда:
Сообщений: 6
Мимопроходящий
18.02.2019 16:47, slrb пишет:
есть триггера на коннект.

и небось к MON$-таблицам в них обращаешься?..


Есть такое, рублю зависшие транзакции раз в 12 часов.
18 фев 19, 17:44    [21813483]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 29656

18.02.2019 17:44, slrb пишет:
> Есть такое, рублю зависшие транзакции раз в 12 часов.

не нужно ЭТО делать ТАКИМ способом.

Posted via ActualForum NNTP Server 1.5

18 фев 19, 17:49    [21813489]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 27854
slrb,

скрипт по крону пускай, нечего торкать mon$ на коннект. Любое обращение к mon$ заставляет сервер собирать всю информацию о коннектах, вплоть до препарированных запросов.
18 фев 19, 17:53    [21813494]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
slrb
Member

Откуда:
Сообщений: 6
Мимопроходящий
18.02.2019 17:44, slrb пишет:
> Есть такое, рублю зависшие транзакции раз в 12 часов.

не нужно ЭТО делать ТАКИМ способом.


Спасибо за наводку (под 2.5 работало без вопросов).
18 фев 19, 17:55    [21813498]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
slrb
Member

Откуда:
Сообщений: 6
kdv
slrb,

скрипт по крону пускай, нечего торкать mon$ на коннект. Любое обращение к mon$ заставляет сервер собирать всю информацию о коннектах, вплоть до препарированных запросов.


Спасибо.
18 фев 19, 17:57    [21813502]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
Дегтярев Евгений
Member

Откуда: Барнаул
Сообщений: 1507
slrb
Спасибо за наводку (под 2.5 работало без вопросов).

при 4т соединений на 2.5 точно не работает
18 фев 19, 18:27    [21813570]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
o_v_a
Member

Откуда: Тула
Сообщений: 1041
kdv
slrb,
скрипт по крону пускай, нечего торкать mon$ на коннект.

kdv дело говорит. Поддерживаю. У меня на промышленных базах именно так.
19 фев 19, 08:54    [21813930]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
Игорь-PicoMed
Member

Откуда:
Сообщений: 34
Тоже бьюсь с этой проблемой. Думал в трешке пофиксено.
Заметил только, что хуже становится на плохой сети, когда много ошибок 10054
Убивание "висяков" помогает, но несильно - как повезет
20 фев 19, 21:20    [21815824]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 27854
Игорь-PicoMed,

мне интересно, как кривая сеть может быть "пофиксена" в Firebird 3. К примеру, у нас много серверов на обслуживании, которые круглосуточно работают, и если бы эти сервера падали каждые четыре часа - это был бы апофеоз. Даже раз в сутки или в несколько дней - это уже ненормально.
20 фев 19, 21:53    [21815844]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
Игорь-PicoMed
Member

Откуда:
Сообщений: 34
kdv
Игорь-PicoMed,

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


Главный вопрос - где ошибка. В сети или в FB.
У меня 43 сервера с одинаковыми базами по структуре (версии FB и конфигурации идентичные), из них 6 страдают этой болезнью. 4 из них - это виртуалка (VMWare). Один вообще - печалька - перегружаем каждую ночь. Еще один - то работает дней 20, то раза три в день падает. Дыр в дисках/базах нет. Из падучих серверов ни один не живет больше 20 дней без перезагрузки, при этом по остальным - есть экземпляры которые по несколько лет не перегружались - и ни ни одного сбоя.
Естественно собираем статистику чтобы не превращать работу в кошмар.
Пытаюсь на стенде смоделировать ситуацию. Пока - не выходит.
От нагрузки (количества юзеров) статистика по сбоям не зависит.
Закономерностей нет, кроме уровня хреновости сети, и то что на виртуалке время жизни короче - о чем и писал выше.

Хуже всего, что падает именно FB и именно по ошибке доступа к Security Database или lock-менеджеру.
Другие сетевые службы работают исправно.
Поэтому и вопрос - где фиксить или кому вилы в зад втыкать.
21 фев 19, 13:35    [21816289]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 27854
Игорь-PicoMed
У меня 43 сервера с одинаковыми базами по структуре (версии FB и конфигурации идентичные), из них 6 страдают этой болезнью. 4 из них - это виртуалка (VMWare). Один вообще - печалька - перегружаем каждую ночь.

для меня подобная информация - ключевая. Это значит, что у виртуалок надо пошагово менять настройки сети (сетевых "карт"). Я не спец по сети, но если сервер А не глючит, а сервер Б глючит, при этом сервер Б на виртуалке, то я не полезу "настраивать ФБ".
Для меня очевидно, что проблема в виртуалке.
Причем, слово "виртуалка" необязательно, отличие может быть в чем-то другом, и это отличие и надо фиксить, разве нет?

Я как-то не улавливаю логики, почему надо фиксить ФБ, если при одинаковой версии и конфигурации у него проблемы на 6ти серверах из 43.

p.s. расскажу историю. В одной конторе лет 10 назад была куча ошибок 10054, и явных сбоев коннектов. А мы в то время выпустили версию FBScanner, который мог определить, с какой стороны (клиент или сервер) оборвался коннект, и почему. Поставили, запустили. И ... ошибки 10054 прекратились совсем. Ок. Я сделал вывод, что поскольку FBScanner вносит задержку в передачу данных, видимо, на серваке есть какое-то ПО, которое без этих задержек "не успевает". Оказалось что да, стояла там какая-то фигня от HP, которая перехватывала пакеты. Её обновили, и 10054 пропали.

Это не намёк на FBscanner, а намёк на то, что проблемы с сетью нужно искать какими-нибудь снифтерами, которые могут анализировать причины сетевых ошибок. В ряде случаев это могут быть вообще железные тестеры сети.
Также припоминаю случай, где одна дефективная сетевая карта на клиентском компе гадила в сеть при выключении компа, что приводило к периодическим падениям другого сервера с IB (это было вообще лет 20 назад). Так что вариантов подобных глюков - масса.
21 фев 19, 14:16    [21816373]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
KreatorXXI
Member

Откуда: Москва
Сообщений: 600
У нас всё на виртуалках. Думаю даже, что всё на VMware. Проблем нет ни с ФБ, ни с МС, ни с Оракулом. Связь с филиалами, мягко говоря, не ахти. Поэтому и связались с VMware. Их решения позволяют минимизировать проблемы в сети.
21 фев 19, 15:35    [21816517]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 29656

21.02.2019 15:35, KreatorXXI пишет:
> Поэтому и связались с VMware.
> Их решения позволяют минимизировать проблемы в сети.

как это?

Posted via ActualForum NNTP Server 1.5

21 фев 19, 15:39    [21816524]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
Arioch
Member

Откуда:
Сообщений: 10675
kdv
Я сделал вывод, что поскольку FBScanner вносит задержку в передачу данных,


русский вариант американской байки про "e-mail ходит только на расстояние до NN миль"
21 фев 19, 15:43    [21816534]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
KreatorXXI
Member

Откуда: Москва
Сообщений: 600
Мимопроходящий,

например, у нас используются виртуальные рабочие столы. Которые развертываются на тех же площадках, где и рабочие сервера. Пользователь в Новосибирске сразу коннектится, допустим, к Москве. При плохой связи потерять может только картинку на мониторе. Понятно, что это некий аналог стандартного виндового rdp. Может более продвинутый.
21 фев 19, 16:02    [21816562]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 29656

21.02.2019 16:02, KreatorXXI пишет:
> у нас используются виртуальные рабочие столы. Которые развертываются на тех же площадках, где и рабочие сервера.

ок. понял.

Posted via ActualForum NNTP Server 1.5

21 фев 19, 16:57    [21816613]     Ответить | Цитировать Сообщить модератору
 Re: Зависание базы - новые коннекты не реагируют, старые работают  [new]
Старый плюшевый мишка
Member

Откуда:
Сообщений: 513
kdv
Я как-то не улавливаю логики, почему надо фиксить ФБ, если при одинаковой версии и конфигурации у него проблемы на 6ти серверах из 43.


Сдаёццо мне, надобно для начала вирусню на этих 6 серверах извести.
21 фев 19, 19:57    [21816821]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: 1 2 3 4 5      [все]
Все форумы / Firebird, InterBase Ответить