Имя: Пароль:
1C
1C 7.7
v7: оптимальное время ожидания захвата таблиц
,
0 patapum
 
07.06.13
16:58
Исходные данные. Есть база 1с 7.7, файловая. Работают около 100 пользователей. Иногда начинаются дикие блокировки на транзакциях.
Вопрос 1. Время ожидания захвата таблиц стоит 15 сек. Если его установить поменьше (3-5 сек), может это улучшить жизнь? То есть, вроде транзакции быстрее должны отваливаться, не будет скапливаться очередь.
Вопрос 2. Где и как поменять всем пользователям это время ожидания?
1 mikecool
 
07.06.13
17:07
уменьшив время - юзеры быстрее будут получать сообщение о блокировке
ищи изделие romix-а, забыл как зовется ((
vk_sleep мб
2 patapum
 
07.06.13
17:12
(1) спасибо, поищу.
просто временами в журнале регистрации цепочка ошибок ожидания на транзакциях с интервалом в 0-20 сек. может, они уже друг за друга цепляются, и если ошибочные быстрее отваливаться будут, будет меньше таких цепочек? или бред несу?
3 varelchik
 
07.06.13
17:19
(2) 1cv7.cfg
4 Ёпрст
 
07.06.13
17:19
(0)
0
5 varelchik
 
07.06.13
17:19
(0)Только надо не уменьшать, а увеличивать.
6 NS
 
07.06.13
17:20
(5) Это чтоб сервак положить?
7 Ёпрст
 
07.06.13
17:20
Лучше даже так:

1. 0
2. либо править всем cfg, либо вк, хоть от trad для управления настройками, хоть вк приоритетс
8 Torquader
 
09.06.13
12:57
У 1С блокировки реализованы через периодический запрос блокировки определённого файла, то есть когда несколько сеансов просят блокировку, то они выполняют попытку блокировки файла (и по умолчанию без таймаута).
Соответственно, никакой очереди блокировок нет, то есть успевает тот, кто первый попадёт в момент освобождения.
Конечно, переписать систему блокировок нереально, но можно все долгоиграющие действия вынести в отдельный "серверный" сеанс и только давать ему команды - тогда столкновения на выполнении действий удастся избежать (но придётся переписывать логику программы - так как сервер не может провести документ, если он открыт у клиента).
9 Fragster
 
гуру
09.06.13
12:59
надо перейти на v8, там все не так страшно.
10 NS
 
09.06.13
13:05
(8) система блокировок давно переписана ромиксом.
Можно переписать иначе, исходники у него открыты.
11 NS
 
09.06.13
13:07
В стандартном режиме, во время ожидания захвата таблиц, каждый процесс жрет полностью одно ядро. Поэтому увеличение периода ожидания - путь в никуда.
12 Torquader
 
09.06.13
13:15
(10) Она там не сильно переписана - там вставили время ожидания захвата и освобождение процессора (Sleep).
Сама идея никуда не делась, так как все процессы 1С равноправны и сделать менеджер не получится.
Есть другая реализация сетевого доступа на основе сервера CodeBase - там есть сервер, но насколько это надёжно будет работать - это отдельный вопрос.
13 Холст
 
09.06.13
13:30
что за чудо конфигурация, выдерживающая 100юзеров в дбф ? или вы ее обрезаете каждый месяц ? или в хлам переписанная на прямые запросы ?
14 Aleksey
 
09.06.13
13:33
(13) у нас такая. режем раз в год, прямые запросы не используем (так балуемся во внешних отчетах, но в основной конфиги их нет)
15 Torquader
 
09.06.13
13:37
А что 100 пользователей там делают ?
Если они просто будут документы вводить база будет тормозить даже от нажатия INS.
Хотя, если они просто "сидят" в базе, ничего не делая, то может и работать.
16 NS
 
09.06.13
15:01
(12) а много и не надо. Достаточно что загрузка ожидающих процессов становится равной нулю.
17 NS
 
09.06.13
15:02
(15) у меня сто пользователей вводят документы. И ничего не тормозит.
18 NS
 
09.06.13
15:02
правда естественно не дбф.
19 Torquader
 
10.06.13
19:34
(16) Одно дело, когда тормозит, а другое дело, когда транзакции отваливаются. Торможение, патч 1С снимает, а вот проблему оптимальности блокировки можно решить только на уровне фильтрующего драйвера файловой системы, где можно перехватить запрос на блокировку и поставить его в очередь на определённое время, пока не освободиться другой процесс.
Но это уже серьёзное системное программирование, а не перехват DLL.
Зато можно сделать так, чтобы все получали право на запись в порядке очереди, а не в случайном порядке, как реализовано в 1С.
(18) Можно и dbf, если использовать не встроенный алгоритм 1С, а доступ к файлам через ADO и т.п.
20 tgu82
 
10.06.13
20:30
(0) У меня 50 пользователей в терминале (база ДБФ примерно 6 ГБ) и вроде оибок блокировок нет, правда я использую кернел33 и кернел37 и у меня новый достаточно мощный сервер хотя в период перехода на новый сервер база несколько дней работала на стареньком компе- недосервере. Да еще бухгалтерия там работала. И ничего, конечно, транзакции порой отваливались, но цепной реакции не было
21 Злопчинский
 
11.06.13
01:44
(19) на Исе hogik mo;tn просветить по этому вопросу. он движок глубоко копал.
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший