Имя: Пароль:
1C
 
кто из пользователей томозит работу 1С
0 Новичок
 
18.03.09
14:21
Здравствуйте. такая проблема:
пользователи время от времени выполняют групповое проведение документов или формируют большой отчет, соответственно 1 с тормозит. При этом когда начинаешь звонить и узнавать, кто это делает, ни кто не сознается. Так вот как узнать кто из пользователей пакостит. Стоит 1С и SQL Server 2000 работают без терминала
1 ТелепатБот
 
гуру
18.03.09
14:21
2 bvn13
 
18.03.09
14:23
В SQL Enterprise Manager сеансы не подвисают?
3 ДенисЧ
 
18.03.09
14:24
Выявляешь все такие тяжёлые моменты и делаешь
ЗаписьЖурналаРегистрации("Пользователь ХХХ начал тормозить систему задачей УУУ");
ЗаписьЖурналаРегистрации("Пользователь ХХХ закончил тормозить систему задачей УУУ");
4 XMMS
 
18.03.09
14:25
Это конечно несколько не правильно(полагаю), но я лез в Enterprise Manager SQL сервера, в раздел Management - Current activity - Process Info, и смотрел там на какие-то значения(вот только черт его знает, какие. Status точно, плюс ещё что-то).
5 Новичок
 
18.03.09
14:31
Нет, сеансы не висят. По поводу ЗаписьЖурналаРегистрации("Пользователь ХХХ начал тормозить систему задачей УУУ") сделать можно, вот только таких задач слишком много. Enterprise Manager SQL сервера смотрел, все пользователи занимают примерно одинаково памяти и процессорного времени колонка помоему "CPU"
6 ildus
 
18.03.09
17:38
(0) пользвователи не виноваты, они просто делают свою работу, виноват - Админ
7 Новичок
 
19.03.09
06:16
Спасибо.  попробую решать проблему совместно с админом
8 VladZ
 
19.03.09
07:13
(0) Можно на SQL выполнить запрос

SELECT spid,program_name, hostprocess,hostname, loginame, blocked
FROM sysprocesses

По hostname определяешь имя тачки, которая блокируют работу остальных.
9 Скользящий
 
19.03.09
07:41
В принципе, тоже проблема актуальна. Есть ли какие то готовые решения, или надо с бубном плясать вокруг скуля? У меня тоже самое, что и у автора, плюс еще терминал.
10 DrZombi
 
гуру
19.03.09
07:49
(0,7) Если скуль, то обрати внимания на самые трудоемкие запросы, которые используют большой интервал движений или документов.
Так же просмотри сами запросы, как SQL так и на 1С "системе".
И помни если в прямом запросе стоит (NOLOCK), то это означает, что пока выполняется запрос, то в нее никто нечего не запишет!
Так же если нет команды (NOLOCK), то пока выполняется запрос, то никто ничего не прочитает и не запишет, т.е. захват в 1С выполняется для всей таблицы :(...

Еще есть легенда, что запросы на языку 1С - тоже подвисают базу, но сей факт я пока не проверил :)
11 DrZombi
 
гуру
19.03.09
07:50
+(0,7,10) Речь идет про таблицы и метаданные - "Документ, справочники, движения и т.д." :)
12 Mikeware
 
19.03.09
08:03
(10) Мой тебе совет - не говори глупостей.
13 Скользящий
 
19.03.09
08:05
Есть ли надежный способ, на сервере увидеть, кто из пользователей сильнее всех загружает систему, чтобы можно было потом подключиться к нему, и вычислить чем он там балуется?
14 orefkov
 
19.03.09
08:08
Выставь всем время ожидания захвата таблиц в 1 секунду, полегчает.
15 Sadovnikov
 
19.03.09
08:09
А, может, не пытаться выяснить кто чего запустил, а сделать так, что бы просто все быстро работало?
16 Скользящий
 
19.03.09
08:11
(15) Логично. Для этого надо найти узкие места по факту.
17 Sadovnikov
 
19.03.09
08:12
(16) Согласен. Завести отдельную таблицу и пихать в нее "Начали чего-то", "Закончили чего-то". А потом проанализировать. Кстати, это посоветовали еще в (3).
18 Sadovnikov
 
19.03.09
08:13
+(17) Тоесть, свести задачу не к тому Кто тормозит, а Что тормозит
19 Mikeware
 
19.03.09
08:15
(13) Есть. Смотри блокировки методом (8). Или счетчики процессов -
select
 str(spid,4) as [Соединение],
 u.user_1c as [Пользователь1С],
  left(loginame,20) as [Логин],
  left(hostname,25) as [Компьютер],
  str(blocked,4) as [Заблокирован],
  str(max(waittime),15)  as [Время] ,
  str(sum(cpu),15) as [ЦПУ],
  str(sum(memusage),15) as [Память]  
from
  master..sysprocesses
full join adm..users u
 on spid=u.pid
where
blocked<>0
group by
 str(spid,4),left(loginame,20), left(hostname,25), str(blocked,4), u.user_1c
20 Mikeware
 
19.03.09
08:16
(19) Точнее, без дополнительеной таблицы -
select
 str(spid,4) as [Соединение],
  left(loginame,20) as [Логин],
  left(hostname,25) as [Компьютер],
  str(blocked,4) as [Заблокирован],
  str(max(waittime),15)  as [Время] ,
  str(sum(cpu),15) as [ЦПУ],
  str(sum(memusage),15) as [Память]  
from
  master..sysprocesses
where
blocked<>0
group by
 str(spid,4),left(loginame,20), left(hostname,25), str(blocked,4)
21 Mikeware
 
19.03.09
08:18
Кстати, потестил сервер скриптом от VDE69 - по результатам уменьшил степент паралеллизма. Полегчало значительно
22 orefkov
 
19.03.09
08:19
(17)
Именно!
А отлавливать одного юзера - зачем?
Ведь возможна ситуация - допустим проведение РН и отчет по партиям по отдельности не тормозят, а когда запущены одновременно - попа.
23 MMF
 
19.03.09
09:58
а еще можно обратиться в Softpoint и приобрести комплекс наблюдения за производительностью. И потом будете знать какой юзер, какой модуль/строка 1С и соответствующий ему запрос насколько загрузили сервер, кто создал блокировку и т.п.
24 Обработка
 
19.03.09
10:20
Я не стал с журналом регистации париться потом еще фильтовать там весь мусор. 1. Придумал спроавочник.
2. Везде прописал при проведении доков и запуска отчетов реистрацию в этом справочнике
3. Потом по тормозам выявил какие узкие места документ отчет итп.
4.за одно узнал чтатистику каке отчет чаще юзают. Какой док часто перепроводиться задним числом итп
Ну потом просто отключил регистрацию или даже замочио справчоник кажись
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.