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

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

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

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 27 окт 2006, 18:13

мне несколько не нравится "висение" неактивных коннектов почем зря. если они неактивные долго, то к моменту очередного пинка такого коннекта его процесс весь увалится в виртуалку, соответственно доставать его из виртуалки ОС будет примерно столько же (если не дольше), чем открыть новый коннект.
Ну и разумеется это не улучшает ситуацию с зависаниями процессов при специфических отрубаниях коннектов.

грубо говоря, программист должен себе зарубить на носу - если задача стоит в периодическом опросе базы, и паузы много дольше самих обращений - нефиг держать коннект открытым: открыл, взял данные, закрыл.
например IB Transaction Monitor действует именно таким образом, даже если получает инфу о транзакциях с сервера раз в минуту. И как показал тестовый период, это вполне нормально пережевывается как супером так и классиком, под любой нагрузкой.

особенно долгий коннект теряет смысл при размере кэша в 75 страниц. Затраты на старт процесса низкие, а по мере его висения этот жалкий кэш все равно успеет "протухнуть" к моменту следующего обращения к базе.

adima
Сообщения: 12
Зарегистрирован: 06 сен 2005, 16:16

Сообщение adima » 31 окт 2006, 11:11

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

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 31 окт 2006, 11:20

что если вообще кеш отключить? выставить его размер в ноль
не получится. минимальный кэш - 50 страниц. см доку :)
собственно, кэш в данном вопросе ни при чем. Даже если бы заданный кэш (в конфиге или в базе) был на уровне 1024 страниц, все равно со временем он "протухнет", а при этом процесс будет держать для него память, и минимальный размер процесса будет на уровне 20 мб (при размере страницы 16к).
То есть, опять же, при неактивности этого процесса он выпадет в виртуалку.
Так что мою рекомендацию стоит учитывать независимо от размера кэша.

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

Сообщение victor3000 » 24 янв 2007, 16:34

Прошло пол года с начала этого топика, и к своему сожалению я вынужден его поднять. Уважаемые разработчики firebirda прошу не проходите мимо, помогите советом.
Итак сначала и по порядку. Есть программа , есть клиенты, есть одна база, есть линукс suse(последний из поставленных, до этого побывали практически все варианты), есть классик файрберд 2.0 релиз. Все это круиться на двух процессорной машине.
Все работает велеколепно, но в определенный момент все останавливаеться. Загрузка процесоров у клиентов на машинах а также
на сервере на всех процессах равна 0. При распечатке по fb_lock_print вижу блок на одном из клиентов, и пока его не прибить дальше программа не идет. За пол года было проведена обширная работа по оптимизации кода, настройке сети, и прочее но к сожалению это ни к чему не привело. К примеру в момент зависания разница между самой старой и саой новой транзакцией обычно не более 6! и это при том что за сутки проходит 500000 транзакций. В сети ошибок нет, устновлена дорогая сетевуха ощибок на ней 0. В программу был встроен дебаг и отловлены все утечки памяти, и прочие ошибки. База была проверена на наличия ошибок в коде, все исправлены. Вообщем работы было проделано много, но все же останавливаеться почему не понимаю. Давайте совместно попробуем решить эту задачу. При всем при этом в вариантах на super server firebird под линукс и вариантах firebird super server и так же classic!!! под виндовс проблем нет.

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

Сообщение dimitr » 24 янв 2007, 18:58

распечатку fb_lock_print'а в студию

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

Сообщение victor3000 » 24 янв 2007, 19:55

в момент зависалова? или просто? плюс буквы какие добавить или стандартно просто fb_lock_print и все?

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

Сообщение dimitr » 24 янв 2007, 21:00

конечно в момент подвиса. Для начала без ключей.

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

Сообщение victor3000 » 24 янв 2007, 22:11

итак немного пофлужу. момент подвиса свежак :).
LOCK_HEADER BLOCK
Version: 16, Active owner: 32344, Length: 5242880, Used: 2029080
Lock manager pid: 3397
Semmask: 0x6978, Flags: 0x0001
Enqs: 1243121, Converts: 17676, Rejects: 21605, Blocks: 120692
Deadlock scans: 1, Deadlocks: 0, Scan interval: 10
Acquires: 2077581, Acquire blocks: 64061, Spin count: 0
Mutex wait: 3.1%
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: 1311824
Free owners (1): forward: 1184744, backward: 1184744
Free locks (1140): forward: 28248, backward: 495308
Free requests (3090): forward: 1852956, backward: 1732648
Lock Ordering: Enabled

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

OWNER BLOCK 27012
Owner id: 4085, type: 3, flags: 0x30, pending: 1630944, semid: 2
Process id: 4085, UID: 0x54 Alive
Flags: 0x70 hung wake
Requests (667): forward: 873480, backward: 1630944
Blocks (1): forward: 1859144, backward: 1859144

OWNER BLOCK 32344
Owner id: 4086, type: 3, flags: 0x20, pending: 0, semid: 3 (available)
Process id: 4086, UID: 0x54 Alive
Flags: 0x20 wake
Requests (662): forward: 1161680, backward: 968568
Blocks: *empty*

OWNER BLOCK 1439124
Owner id: 4087, type: 3, flags: 0x20, pending: 0, semid: 10 (available)
Process id: 4087, UID: 0x54 Alive
Flags: 0x60 hung wake
Requests (1782): forward: 1515936, backward: 773128
Blocks: *empty*

OWNER BLOCK 1826280
Owner id: 4088, type: 3, flags: 0x00, pending: 0, semid: 5 (available)
Process id: 4088, UID: 0x54 Alive
Flags: 0x00
Requests (946): forward: 1506416, backward: 194224
Blocks: *empty*

OWNER BLOCK 1606544
Owner id: 4089, type: 3, flags: 0x20, pending: 0, semid: 9 (available)
Process id: 4089, UID: 0x54 Alive
Flags: 0x20 wake
Requests (766): forward: 1238536, backward: 1014624
Blocks: *empty*

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

Сообщение victor3000 » 24 янв 2007, 22:13

server:/taxi/base # netstat -t -n -p
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 192.168.0.99:3050 192.168.0.11:1142 ESTABLISHED 4085/fb_inet_server
tcp 20 0 192.168.0.99:3050 192.168.0.17:1113 ESTABLISHED 4088/fb_inet_server
tcp 0 0 192.168.0.99:3050 192.168.0.17:1114 ESTABLISHED 4091/fb_inet_server
tcp 0 0 192.168.0.99:3050 192.168.0.15:1116 ESTABLISHED 4095/fb_inet_server
tcp 12 0 192.168.0.99:3050 192.168.0.15:1115 ESTABLISHED 4094/fb_inet_server
tcp 0 0 192.168.0.99:57955 192.168.0.1:3825 ESTABLISHED 4096/fb_inet_server
tcp 24 0 192.168.0.99:3050 192.168.0.5:3103 ESTABLISHED 4092/fb_inet_server
tcp 0 0 192.168.0.99:54881 192.168.0.5:3104 ESTABLISHED 4092/fb_inet_server
tcp 0 0 192.168.0.99:51272 192.168.0.11:1143 ESTABLISHED 4085/fb_inet_server
tcp 0 0 192.168.0.99:59542 192.168.0.15:1117 ESTABLISHED 4094/fb_inet_server
tcp 0 0 192.168.0.99:3050 192.168.0.1:3763 ESTABLISHED 4096/fb_inet_server
tcp 0 0 192.168.0.99:50439 192.168.0.17:1115 ESTABLISHED 4088/fb_inet_server
tcp 0 0 192.168.0.99:3050 192.168.0.14:1134 ESTABLISHED 4102/fb_inet_server
tcp 0 0 192.168.0.99:3050 192.168.0.4:1124 ESTABLISHED 4090/fb_inet_server
tcp 0 0 192.168.0.99:3050 192.168.0.14:1133 ESTABLISHED 4101/fb_inet_server
tcp 0 0 192.168.0.99:3050 192.168.0.10:1129 ESTABLISHED 4086/fb_inet_server
tcp 20 0 192.168.0.99:3050 192.168.0.6:1120 ESTABLISHED 4089/fb_inet_server
tcp 0 0 192.168.0.99:3050 192.168.0.16:1113 ESTABLISHED 4087/fb_inet_server
tcp 0 0 192.168.0.99:3050 192.168.0.16:1114 ESTABLISHED 4093/fb_inet_server
tcp 0 0 192.168.0.99:43521 192.168.0.2:1158 ESTABLISHED 4098/fb_inet_server
tcp 0 0 192.168.0.99:35540 192.168.0.6:1121 ESTABLISHED 4089/fb_inet_server
tcp 0 0 192.168.0.99:40103 192.168.0.14:1135 ESTABLISHED 4101/fb_inet_server
tcp 0 0 192.168.0.99:46595 192.168.0.10:1130 ESTABLISHED 4086/fb_inet_server
tcp 0 0 192.168.0.99:38111 192.168.0.16:1115 ESTABLISHED 4087/fb_inet_server
tcp 0 0 192.168.0.99:53190 192.168.0.4:1125 ESTABLISHED 4090/fb_inet_server
tcp 0 0 192.168.0.99:3050 192.168.0.2:1157 ESTABLISHED 4098/fb_inet_server
tcp 0 1200 192.168.0.99:22 192.168.0.100:1399 ESTABLISHED 4123/0

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

Сообщение victor3000 » 24 янв 2007, 22:13

top - 20:37:23 up 1:26, 1 user, load average: 0.30, 2.51, 3.50
Tasks: 85 total, 1 running, 82 sleeping, 2 stopped, 0 zombie
Cpu0 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu1 : 9.1%us, 0.0%sy, 0.0%ni, 90.9%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 1555544k total, 951092k used, 604452k free, 48200k buffers
Swap: 2040244k total, 0k used, 2040244k free, 394840k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
4096 firebird 15 0 180m 171m 5152 S 0 11.3 1:34.01 fb_inet_server
4092 firebird 16 0 180m 26m 5112 S 0 1.8 0:25.83 fb_inet_server
4090 firebird 16 0 179m 25m 5112 S 0 1.7 0:47.97 fb_inet_server
4089 firebird 15 0 179m 26m 5112 S 0 1.7 0:14.87 fb_inet_server
4087 firebird 16 0 179m 42m 5116 S 0 2.8 1:07.90 fb_inet_server
4098 firebird 16 0 179m 26m 5112 S 0 1.8 0:30.69 fb_inet_server
4101 firebird 16 0 179m 25m 5116 S 0 1.7 0:54.11 fb_inet_server
4094 firebird 15 0 179m 26m 5108 S 0 1.7 0:49.23 fb_inet_server
4086 firebird 15 0 179m 24m 5116 S 0 1.6 1:00.38 fb_inet_server
4088 firebird 15 0 179m 28m 5108 S 0 1.9 0:38.75 fb_inet_server
4085 firebird 16 0 179m 24m 5112 S 0 1.6 0:55.88 fb_inet_server
4097 firebird 16 0 175m 20m 5100 S 0 1.3 0:54.17 fb_inet_server
4091 firebird 15 0 173m 10m 4868 S 0 0.7 0:00.13 fb_inet_server
4093 firebird 16 0 173m 10m 4984 S 0 0.7 0:00.17 fb_inet_server
4102 firebird 15 0 173m 10m 4800 S 0 0.7 0:00.16 fb_inet_server
4095 firebird 16 0 173m 10m 5016 S 0 0.7 0:00.16 fb_inet_server
2571 root 16 0 103m 1040 772 S 0 0.1 0:00.08 nscd
2669 root 15 0 93548 6264 3500 S 0 0.4 0:01.25 X
2258 root 34 19 74236 17m 7968 S 0 1.2 0:06.58 zmd
2829 gdm 15 0 26940 16m 9156 S 0 1.1 0:02.52 gdmgreeter
2033 root 16 0 20204 1968 1688 S 0 0.1 0:00.13 NetworkManager
2668 root 17 0 12092 2564 1904 S 0 0.2 0:00.03 gdm
2635 root 15 0 11304 2464 2056 S 0 0.2 0:00.06 gdm
2080 root 13 -3 9856 604 472 S 0 0.0 0:00.00 auditd
4123 root 15 0 8340 2356 1908 S 0 0.2 0:00.08 sshd
3397 root 16 0 8212 1252 1036 S 0 0.1 0:00.00 fb_lock_mgr
2844 lp 16 0 7312 3140 1272 S 0 0.2 0:00.51 cupsd
2752 root 16 0 5416 1732 1408 S 0 0.1 0:00.02 master
2768 postfix 16 0 5412 1664 1364 S 0 0.1 0:00.00 qmgr
2767 postfix 16 0 5376 1644 1344 S 0 0.1 0:00.01 pickup
2477 root 16 0 4852 1240 876 S 0 0.1 0:00.32 sshd
4157 root 15 0 4644 2036 1488 S 0 0.1 0:00.06 mc
3394 ntp 16 0 4332 4332 3344 S 0 0.3 0:00.07 ntpd
1981 root 16 0 4260 2848 1432 S 0 0.2 0:00.58 hald
2627 root 16 0 4256 1752 1420 S 0 0.1 0:00.04 powersaved
4126 root 15 0 4140 1912 1404 S 0 0.1 0:00.18 bash
1947 messageb 16 0 3416 964 728 S 0 0.1 0:00.07 dbus-daemon
4159 root 15 0 3236 1856 1352 S 0 0.1 0:00.08 bash
2115 daemon 16 0 3228 872 632 S 0 0.1 0:00.00 slpd
1998 root 15 0 2776 1240 1088 S 0 0.1 0:00.00 NetworkManagerD
1992 root 15 0 2392 740 636 S 0 0.0 0:00.04 dhcdbd
2363 root 16 0 2224 876 712 S 0 0.1 0:00.06 xinetd
4182 root 15 0 2188 1020 768 R 0 0.1 0:00.45 top
4178 root 16 0 2168 876 716 T 0 0.1 0:00.00 less
4180 root 16 0 2168 876 712 T 0 0.1 0:00.00 less
2784 root 20 0 1960 636 560 S 0 0.0 0:00.00 mingetty
2785 root 19 0 1960 636 560 S 0 0.0 0:00.00 mingetty
2787 root 18 0 1960 640 560 S 0 0.0 0:00.00 mingetty
2782 root 18 0 1956 660 580 S 0 0.0 0:00.04 mingetty
2783 root 19 0 1956 660 580 S 0 0.0 0:00.04 mingetty

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

Сообщение victor3000 » 24 янв 2007, 22:14

Database header page information:
Flags 0
Checksum 12345
Generation 65041
Page size 16384
ODS version 11.0
Oldest transaction 65028
Oldest active 65029
Oldest snapshot 65021
Next transaction 65034
Bumped transaction 1
Sequence number 0
Next attachment ID 0
Implementation ID 19
Shadow count 0
Page buffers 10000
Next header page 0
Database dialect 3
Creation date Jan 24, 2007 18:57:16
Attributes force write

Variable header data:
Sweep interval: 20000
*END*

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

Сообщение victor3000 » 24 янв 2007, 22:17

блокировка на этом процессе:
OWNER BLOCK 27012
Owner id: 4085, type: 3, flags: 0x30, pending: 1630944, semid: 2
Process id: 4085, UID: 0x54 Alive
Flags: 0x70 hung wake
Requests (667): forward: 873480, backward: 1630944
Blocks (1): forward: 1859144, backward: 1859144

загрузка процесора 0:
4085 firebird 16 0 179m 24m 5112 S 0 1.6 0:55.88 fb_inet_server


состояние соединения ESTABLISHED :
192.168.0.99:51272 192.168.0.11:1143 ESTABLISHED 4085/fb_inet_server

разница в транзакциях самая старая - последняя 6:
Oldest transaction 65028
Oldest active 65029
Oldest snapshot 65021
Next transaction 65034

бекап ресторе сделал в 19-00 завис в 21-00 65000 транзакций за 2 часа. вроде все.
мои действия, прибиваю процесс 4085 и все начинает работать.

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

Сообщение dimitr » 25 янв 2007, 10:31

в firebird.log есть записи?

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

Сообщение victor3000 » 25 янв 2007, 10:35

да, после когда я прибиваю процесс, естественно 104 появляется как результат. ну или если кто с клиентов отвалиться не коректно(в смысле буднет машину при рабочей проге etc., тоже 104 может проскочить). Пробовал принудительно прибивать прогу в момент работы, выдергивание сетевых кабелей ... не блокирует, отрабатывает коректно всегда.

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

Сообщение dimitr » 25 янв 2007, 10:36

еще было бы интересно посмотреть вывод fb_lock_print с ключиком -a.
Сорри, что сразу не сказал.

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

Сообщение victor3000 » 25 янв 2007, 10:37

еще одно просто парадоксальное наблюдение. После бекап ресторе особо часто блокируется. Снявши несколько блоков, начинает все реже и реже ловить блоки.

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

Сообщение dimitr » 25 янв 2007, 10:39

и еще. В момент подвиса помониторь пару минут поле "Active owner" в начала вывода лок-принта - будет меняться или нет. В идеале сделай пять раз "fb_lock_print -a" с интервалом в одну минуту (когда висит) и вывод отправь мне почтой.

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

Сообщение victor3000 » 25 янв 2007, 10:47

c ключем -a выдает информацию постоянно, то есть вывести начальный фрагмент?

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

Сообщение dimitr » 25 янв 2007, 10:54

хммм, вроде не должен (если -i не указан). Попробуй с ключами -o -l -r

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

Сообщение dimitr » 25 янв 2007, 10:56

кстати, какие параметры конфига установлены в недефолтные значения?

Ответить