Зависание процессов classic на linux

Access Violation, некорректное выполнение запросов или вызовов API, ошибки утилит командной строки, в общем все, что вам мешает работать

Модераторы: kdv, dimitr

victor3000
Сообщения: 98
Зарегистрирован: 27 апр 2006, 09:32

Сообщение victor3000 » 25 янв 2007, 13:03

server:/taxi/base # ./fb_lock_print -a | less
LOCK_HEADER BLOCK
Version: 16, Active owner: 0, Length: 5242880, Used: 2287008
Lock manager pid: 2879
Semmask: 0x6978, Flags: 0x0001
Enqs: 6987730, Converts: 105996, Rejects: 131700, Blocks: 654746
Deadlock scans: 0, Deadlocks: 0, Scan interval: 10
Acquires: 11723601, Acquire blocks: 372339, Spin count: 0
Mutex wait: 3.2%
Hash slots: 2039, Hash lengths (min/avg/max): 4/ 6/ 12
Remove node: 0, Insert queue: 0, Insert prior: 0
Owners (17): forward: 27216, backward: 1338212
Free owners (2): forward: 1911348, backward: 1371536
Free locks (1430): forward: 28248, backward: 397872
Free requests (5382): forward: 1831580, backward: 506460
Lock Ordering: Enabled

OWNER BLOCK 27216
Owner id: 2879, type: 1, flags: 0x04, pending: 0, semid: 1
Process id: 2879, UID: 0x0 Alive
Flags: 0x44 hung
Requests: *empty*
Blocks: *empty*

OWNER BLOCK 1272900
Owner id: 4519, type: 3, flags: 0x20, pending: 0, semid: 10 (available)
Process id: 4519, UID: 0x54 Alive
Flags: 0x20 wake
Requests (358): forward: 1453316, backward: 2012456
Blocks: *empty*

REQUEST BLOCK 1453316
Owner: 1272900, Lock: 27144, State: 4, Mode: 4, Flags: 0x00
AST: 0x0xb7deffe0, argument: 0x0xb7802698
lrq_own_requests: forward: 1735568, backward: 1272904
lrq_lbl_requests: forward: 1881552, backward: 27120
lrq_own_blocks : *empty*

REQUEST BLOCK 1735568
Owner: 1272900, Lock: 27348, State: 2, Mode: 2, Flags: 0x00
AST: 0x0xb7eaa160, argument: 0x0xb7802698
lrq_own_requests: forward: 1255808, backward: 1453316
lrq_lbl_requests: forward: 2010160, backward: 27324
lrq_own_blocks : *empty*

dimitr
Разработчик Firebird
Сообщения: 888
Зарегистрирован: 26 окт 2004, 16:20

Сообщение dimitr » 25 янв 2007, 13:18

прошу прощения, но это обрывок какой-то. Лишь часть информации выдана. И думаю, что продолжать постить простыни диагностики на форуме смысла нет. Велкам в почту: dimitr at firebirdsql dot org.

victor3000
Сообщения: 98
Зарегистрирован: 27 апр 2006, 09:32

Сообщение victor3000 » 25 янв 2007, 13:23

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

dimitr
Разработчик Firebird
Сообщения: 888
Зарегистрирован: 26 окт 2004, 16:20

Сообщение dimitr » 25 янв 2007, 13:43

длинный - да, но не бесконечный. Высылать все. В момент подвиса. Если с одним ключом -l получится сильно меньше, то можно такой вариант выслать. Если несколько запусков с интервалом в минуту дают одинаковый вывод, то можно высылать один из них. Это должно означать, что висят все процессы классика до единого - так и есть де-факто или что-то таки умудряется работать?

victor3000
Сообщения: 98
Зарегистрирован: 27 апр 2006, 09:32

Сообщение victor3000 » 25 янв 2007, 17:40

Нет висят все клиенты и все процессы, инфа повторяется точ в точ при повторных запросах. Все выслал на указанную почту. Конца с ключем -a не дождался, выслал достаточно много. Если мало инфы могу собрать гораздо больше.

victor3000
Сообщения: 98
Зарегистрирован: 27 апр 2006, 09:32

Сообщение victor3000 » 25 янв 2007, 19:00

почему-то мой почтовый сервер завернул письмо. заберите прямо с моего фтп. там всего 100kb архив.
ftp://33:33@213.186.210.150/logi.rar
В нем два файла в первом полный файл по команде fb_lock_print, и второй с ключем -a, достаточно длинный но конца я не дождался.
если нет возможности забрать по фтп вариант через хттп
http://213.186.210.151/logi.rar

dimitr
Разработчик Firebird
Сообщения: 888
Зарегистрирован: 26 окт 2004, 16:20

Сообщение dimitr » 25 янв 2007, 20:55

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

dimitr
Разработчик Firebird
Сообщения: 888
Зарегистрирован: 26 окт 2004, 16:20

Сообщение dimitr » 26 янв 2007, 10:33

и еще я просил серверный firebird.conf

victor3000
Сообщения: 98
Зарегистрирован: 27 апр 2006, 09:32

Сообщение victor3000 » 26 янв 2007, 17:27

ftp://33:33@213.186.210.150/1.rar
конфиг сервера, fb_lock_print без ключа и с ключем -l. С ключем -l полный файл.
также на хттп http://213.186.210.151/1.rar

victor3000
Сообщения: 98
Зарегистрирован: 27 апр 2006, 09:32

Сообщение victor3000 » 27 янв 2007, 11:45

вот еще один блок, теперь и с ключем -a, и -l полные файлы.
ftp://33:33@213.186.210.150/2.rar
http://213.186.210.151/2.rar
размер архива 1,5 метра.

victor3000
Сообщения: 98
Зарегистрирован: 27 апр 2006, 09:32

Сообщение victor3000 » 27 янв 2007, 17:42

разобрался почему долго отрабатывал сбор с ключем -a. Просто заходил через инет на машину терминалом и отрабатывало долго, локально все работает шустро.
Итак окончательный вариант сбора инфы в момент блокировки:
1. Чистый fb_lock_print -называется "bez"
2. fb_lock_print -l -называется "kl_l"
3 и пять файлов с fb_lock_print с ключем -a. разница в выполнении между ними 1 минута. название "kl_a_1" - "kl_a_5"
ftp://33:33@213.186.210.150/3.rar
http://213.186.210.151/3.rar
размер архива 4 метра.

dimitr
Разработчик Firebird
Сообщения: 888
Зарегистрирован: 26 окт 2004, 16:20

Сообщение dimitr » 27 янв 2007, 21:46

скачал, спасибо

victor3000
Сообщения: 98
Зарегистрирован: 27 апр 2006, 09:32

Сообщение victor3000 » 29 янв 2007, 13:37

есть новости?

dimitr
Разработчик Firebird
Сообщения: 888
Зарегистрирован: 26 окт 2004, 16:20

Сообщение dimitr » 29 янв 2007, 14:40

как будут - я сообщу

victor3000
Сообщения: 98
Зарегистрирован: 27 апр 2006, 09:32

Сообщение victor3000 » 07 фев 2007, 13:58

Вы про меня не забыли? :)
Я так понимаю это ставить нет смысла? http://www.firebirdsql.org/index.php?op ... =fb201_rc1

victor3000
Сообщения: 98
Зарегистрирован: 27 апр 2006, 09:32

Сообщение victor3000 » 20 фев 2007, 16:07

Lock Timeout for WAIT Transactions
A. Karyakin, D. Yemanov
All Firebird versions provide two transaction wait modes: NO WAIT and WAIT. NO WAIT mode
means that lock conflicts and deadlocks are reported immediately, while WAIT performs a blocking
wait which times out only when the conflicting concurrent transaction ends by being committed or
rolled back.
The new feature extends the WAIT mode by making provision to set a finite time interval to wait for
the concurrent transactions. If the timeout has passed, an error (isc_lock_timeout) is reported.
Timeout intervals are specified per transaction, using the new TPB constant isc_tpb_lock_timeout in
the API or, in DSQL, the LOCK TIMEOUT <value> clause of the SET TRANSACTION statement.



Вот такого зверя в описании увидел в релизе от 26 января.
Вопрос а зачем это вообще сделали? Ведь при коректной работе блокировщика в этом просто НЕТ необходимости. Или разработчики в курсе не коректной работы менеджера блокировок и пытаються решить проблему таким образом? Господа прошу не молчите, что с "моей" проблемой? Отпишите что прога кривая у меня и я все пойму. Но просто игнорить не нужно плиз.
Что самое интересное у меня нет ни одной wait транзакции, и я в принципе на блокировку попасть не могу, просто должно клиенту быть НЕМЕДЛЕННО сообщение о update lock ..... Чего не происходит.

hvlad
Разработчик Firebird
Сообщения: 1244
Зарегистрирован: 21 мар 2005, 10:48

Сообщение hvlad » 20 фев 2007, 16:57

victor3000 писал(а):Lock Timeout for WAIT Transactions
...
Вот такого зверя в описании увидел в релизе от 26 января.
Вопрос а зачем это вообще сделали?
Хороший вопрос, действительно - зачем ? Наверное чтобы время потратить...
victor3000 писал(а):Ведь при коректной работе блокировщика в этом просто НЕТ необходимости.
Страничные блокировки и ожидание завершения конкурирующей тр-ции с тайм-аутом не имеют между собой ровно ничего общего
victor3000 писал(а):Или разработчики в курсе не коректной работы менеджера блокировок и пытаються решить проблему таким образом?
Мимо кассы.
Я не знаю, что нашёл или не нашёл dimitr, но совершенно не уверен, что твоя проблема именно в блокировщике.
victor3000 писал(а):Господа прошу не молчите, что с "моей" проблемой? Отпишите что прога кривая у меня и я все пойму. Но просто игнорить не нужно плиз.
Да никто тебя не игнорит...
Неужели за всё это время нельзя было родить воспроизводимый пример, если проблема так колется ?
victor3000 писал(а):Что самое интересное у меня нет ни одной wait транзакции, и я в принципе на блокировку попасть не могу, просто должно клиенту быть НЕМЕДЛЕННО сообщение о update lock ..... Чего не происходит.
Потому что ожидание тр-ций тут совершенно не при чём - всё просто, не так ли ? :)

Ты, когда зависший коннект отстреливаешь, можешь backtrace снять ?

victor3000
Сообщения: 98
Зарегистрирован: 27 апр 2006, 09:32

Сообщение victor3000 » 20 фев 2007, 17:18

ну почему на колкость так быстро отвечают? :)
а просто спросил как там так в ответ тишина.
а по поводу бектрейса или как его там то я с удовольствием его сниму если скажите как это сделать. по поводу воспроизведимого примера так это мимо кассы, поскольку это просто нереально по многим причинам. ну вот скажите мне можно специально поставить блокировку из программы либо какимито действиями которую мы увидим явно висящую под линуксом дав команду fb_lock_print ????

victor3000
Сообщения: 98
Зарегистрирован: 27 апр 2006, 09:32

Сообщение victor3000 » 20 фев 2007, 20:39

ну вот скажите мне можно специально поставить блокировку из программы либо какимито действиями которую мы увидим явно висящую под линуксом дав команду fb_lock_print ????
пишу еще раз? ;)
подозреваю что нельзя :)

v6y
Сообщения: 78
Зарегистрирован: 12 мар 2005, 17:45

Сообщение v6y » 20 фев 2007, 21:18

victor3000 писал(а): а по поводу бектрейса или как его там то я с удовольствием его сниму если скажите как это сделать
Выяснить pid висящего процесса (серверная часть), запустить отладчик gdb, в отладчике набрать attach pid, затем bt

Ответить