Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
 Re: 1C 8.1 и блокировки  [new]
M1chA77
Member

Откуда: Самара
Сообщений: 64
Panshin
Поскольку 1С сервер приложений сам генерирует запросы, то самое простое решение это посмотреть в профайлере, что же он генерирует в момент блокировок. Потом пойти в схему 1С и понять человеческий смысл этих таблиц, чтобы понять что же делают пользователи в момент блокировок. Может быть это и не пользователи, а скажем движок для документооборота или обработки по расписанию. В общем кто то одновременно меняет одни и те же данные, или в цикле. Второй вариант купить софт по анализу блокировок.


А где взять этот "профайлер"?
22 авг 12, 16:00    [13050271]     Ответить | Цитировать Сообщить модератору
 Re: 1C 8.1 и блокировки  [new]
M1chA77
Member

Откуда: Самара
Сообщений: 64
Нашел его.
Теперь бы понять как им пользоваться...
22 авг 12, 16:05    [13050322]     Ответить | Цитировать Сообщить модератору
 Re: 1C 8.1 и блокировки  [new]
Volochkova
Member

Откуда:
Сообщений: 2321
Автор правильно говорит про номера сессии и SPID на сервере.
Находятся они именно так.
Но вот блокировки возникать могут по разным причинам.

1. Как давно Вы делали банальный ребилд сильно фрагментированным таблицам на MS-SQL
2. Правильно Вам говорят, что искать надо то что блокирует ресурсы, пока выполняется данный код.
Например у Вас что не действие со справочником то новая транзакция... ( это лечится в коде 1с)
3. Какой режим базы стоит? Full или Simple?
4. Есть хорошая утилитка - Бизнес Интегратор. Обработка под 1с.
Когда в профайлере или иными путями увидите имена табличек сервера, через нее переведете их названия в объекты 1с.
5. перегружать SQL сервер это жестко, воспользуйтесь процедурами Sp_who2 и Sp_who. Они показывают что запущено, чем что +/- блокируется. По форуму поищи Sp_Who3. Это вообще чумовая вещь... Она кажет только то что сейчас выполняется и что друг друга блокирует.
Через то как Вы идентифицируете пользователей 1с, найдете кто кого блокирует.
6. Какая версия 1с предприятия? 32 или 64 бита?
7. В 1с предприятии сколько стоит использовать потоков?
8. Сколько итого ядер в системе?
9. Не захватывает ли MS SQL всю свободную оперативку и не сваливаются ли у Вас пользователи в работу Свап файла?



p.s. если есть сложности что куда втыкать, пригласите того кто в MS SQL шарит.
За часа 2 взлет посадка,базовым приемам куда что писать и как читать хотя бы значения базовых процедур научитесь.
22 авг 12, 16:25    [13050507]     Ответить | Цитировать Сообщить модератору
 Re: 1C 8.1 и блокировки  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 35396
Блог
M1chA77
Проблема №1
В основной базе (30,5Гб) ведутся все работы (продажи, приход, расход) появляются периодически блокировки.
Периодичность появления блокировок 2-3 раза в неделю.
Количество блокировок начинается от 400000 и доходит до 2000000.
Лечится это все закрытием всех терминальных сессий и перезапуском служб SQL сервера.
Надо сделать так, чтобы блокировок не было.
Срок решения задачи - месяц.


Во-первых, не сделаете "чтобы блокировок не было".
Во-вторых - чем они вам мешают?
22 авг 12, 17:05    [13050796]     Ответить | Цитировать Сообщить модератору
 Re: 1C 8.1 и блокировки  [new]
nicktcher
Member

Откуда: Москва
Сообщений: 581
M1chA77,

Рекомендую Вам приобрести 1С КИП (корпоративный инструментальный пакет).
Это специальное инструментальное средство 1С, в его состав входит очень удобный и простой в применении продукт "Центр управления производительностью". Блокировки и дэдлоки 1С отлавливаются на ура - при этом показывается детальная статистика работы системы и показывается сразу проблемный код, вызвавший конфликт. Отличная вещь, часто экономящая массу времени, поверьте мне, многократно проверено на практике.
22 авг 12, 17:13    [13050846]     Ответить | Цитировать Сообщить модератору
 Re: 1C 8.1 и блокировки  [new]
M1chA77
Member

Откуда: Самара
Сообщений: 64
Volochkova
Автор правильно говорит про номера сессии и SPID на сервере.
Находятся они именно так.
Но вот блокировки возникать могут по разным причинам.

1. Как давно Вы делали банальный ребилд сильно фрагментированным таблицам на MS-SQL
2. Правильно Вам говорят, что искать надо то что блокирует ресурсы, пока выполняется данный код.
Например у Вас что не действие со справочником то новая транзакция... ( это лечится в коде 1с)
3. Какой режим базы стоит? Full или Simple?
4. Есть хорошая утилитка - Бизнес Интегратор. Обработка под 1с.
Когда в профайлере или иными путями увидите имена табличек сервера, через нее переведете их названия в объекты 1с.
5. перегружать SQL сервер это жестко, воспользуйтесь процедурами Sp_who2 и Sp_who. Они показывают что запущено, чем что +/- блокируется. По форуму поищи Sp_Who3. Это вообще чумовая вещь... Она кажет только то что сейчас выполняется и что друг друга блокирует.
Через то как Вы идентифицируете пользователей 1с, найдете кто кого блокирует.
6. Какая версия 1с предприятия? 32 или 64 бита?
7. В 1с предприятии сколько стоит использовать потоков?
8. Сколько итого ядер в системе?
9. Не захватывает ли MS SQL всю свободную оперативку и не сваливаются ли у Вас пользователи в работу Свап файла?



p.s. если есть сложности что куда втыкать, пригласите того кто в MS SQL шарит.
За часа 2 взлет посадка,базовым приемам куда что писать и как читать хотя бы значения базовых процедур научитесь.


Отвечаю по порядку.

1.ничего на эту тему сказать не могу.
3.Не очень понимаю про что речь. Режим восстановления базы: Простой.
4.Ткни пожалуйста ссылкой а то я найти ее не могу.
5.Ткни пожалуйста в Sp_who3, а то вдруг я нарыл что-то нето...страшно...
6.1С 64 бита.
7.5 потоков
8.Процессор на DC Xeon E5504 (4 ядра,4 потока)
9.Ничего подобного нет.
22 авг 12, 17:25    [13050921]     Ответить | Цитировать Сообщить модератору
 Re: 1C 8.1 и блокировки  [new]
M1chA77
Member

Откуда: Самара
Сообщений: 64
Критик
Во-первых, не сделаете "чтобы блокировок не было".
Во-вторых - чем они вам мешают?


Наверное я неправильно выразился.
Не должно быть блокировок "вешающих работу намертво".
22 авг 12, 17:28    [13050940]     Ответить | Цитировать Сообщить модератору
 Re: 1C 8.1 и блокировки  [new]
Зарегался
Member

Откуда:
Сообщений: 56
Так не получится, это же 1С. Тут выше топикстартер выкладывал скриншот консоли сервера 1С. Так вот: если промотать чуть правее там будет колонка "Заблокировано". Если в этой колонке пусто, то стало быть никто никого и не блокирует вовсе. Таким образом, внимательно наблюдая за консолью в момент появления жалоб на блокировки мы можем организовать себе реальный шанс позвонить виновнику и спросить его - чем он собственно сейчас занят (ну если конечно это не фоновое задание).
22 авг 12, 18:58    [13051505]     Ответить | Цитировать Сообщить модератору
 Re: 1C 8.1 и блокировки  [new]
Volochkova
Member

Откуда:
Сообщений: 2321
M1chA77
Volochkova
Автор правильно говорит про номера сессии и SPID на сервере.
Находятся они именно так.
Но вот блокировки возникать могут по разным причинам.

1. Как давно Вы делали банальный ребилд сильно фрагментированным таблицам на MS-SQL
2. Правильно Вам говорят, что искать надо то что блокирует ресурсы, пока выполняется данный код.
Например у Вас что не действие со справочником то новая транзакция... ( это лечится в коде 1с)
3. Какой режим базы стоит? Full или Simple?
4. Есть хорошая утилитка - Бизнес Интегратор. Обработка под 1с.
Когда в профайлере или иными путями увидите имена табличек сервера, через нее переведете их названия в объекты 1с.
5. перегружать SQL сервер это жестко, воспользуйтесь процедурами Sp_who2 и Sp_who. Они показывают что запущено, чем что +/- блокируется. По форуму поищи Sp_Who3. Это вообще чумовая вещь... Она кажет только то что сейчас выполняется и что друг друга блокирует.
Через то как Вы идентифицируете пользователей 1с, найдете кто кого блокирует.
6. Какая версия 1с предприятия? 32 или 64 бита?
7. В 1с предприятии сколько стоит использовать потоков?
8. Сколько итого ядер в системе?
9. Не захватывает ли MS SQL всю свободную оперативку и не сваливаются ли у Вас пользователи в работу Свап файла?



p.s. если есть сложности что куда втыкать, пригласите того кто в MS SQL шарит.
За часа 2 взлет посадка,базовым приемам куда что писать и как читать хотя бы значения базовых процедур научитесь.


Отвечаю по порядку.

1.ничего на эту тему сказать не могу.
3.Не очень понимаю про что речь. Режим восстановления базы: Простой.
4.Ткни пожалуйста ссылкой а то я найти ее не могу.
5.Ткни пожалуйста в Sp_who3, а то вдруг я нарыл что-то нето...страшно...
6.1С 64 бита.
7.5 потоков
8.Процессор на DC Xeon E5504 (4 ядра,4 потока)
9.Ничего подобного нет.


1. Очень плохо!
3. Хорошо.
4. http://main.1c-ei.ru/
5. Надо искать.. Она не сложная именно по блокировкам все кажет.
6. Плохо.. надо 32....
7. Учитывая 8... вообще капец... Ставьте 2.
8. Маловато будет.
9. Странно . Сколько у Вас ОЗУ под MS SQL и сколько на сервере где 1с предприятие.
Как я поняла это разные сервера. Между ними хотя бы гигабит есть?
23 авг 12, 06:55    [13052920]     Ответить | Цитировать Сообщить модератору
 Re: 1C 8.1 и блокировки  [new]
M1chA77
Member

Откуда: Самара
Сообщений: 64
Volochkova,

Использовал Sp_Who3 отсюда:https://www.sql.ru/forum/actualthread.aspx?tid=96127
SQL показывает 2000000 блокировок а этот запрос ничего не выводит...
23 авг 12, 10:28    [13053383]     Ответить | Цитировать Сообщить модератору
 Re: 1C 8.1 и блокировки  [new]
M1chA77
Member

Откуда: Самара
Сообщений: 64
Вот что только что выдало:
Сообщение 2714, уровень 16, состояние 3, процедура sp_who1, строка 267
В базе данных уже существует объект с именем "sp_who1".
23 авг 12, 10:30    [13053399]     Ответить | Цитировать Сообщить модератору
 Re: 1C 8.1 и блокировки  [new]
Volochkova
Member

Откуда:
Сообщений: 2321
M1chA77,
Она самая.
Я не понял что она Вам выдала..
Картинку покажите, пожалуйста.
Процессы 5 - убирайте... при 4 ядрах.... это неверное решение.
23 авг 12, 10:34    [13053441]     Ответить | Цитировать Сообщить модератору
 Re: 1C 8.1 и блокировки  [new]
Volochkova
Member

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

Sp_Who1 - неверно... надо SP_Who3....
Процедуры Sp_who и Sp_who2... SP_WHO1 - такой нет..
и процедурку в базе мастер надо делать.
23 авг 12, 10:36    [13053456]     Ответить | Цитировать Сообщить модератору
 Re: 1C 8.1 и блокировки  [new]
M1chA77
Member

Откуда: Самара
Сообщений: 64
Volochkova,

Убрать 5-sq процесс или все 5?
Просто если убрать все 5 процессов то тормозит ужасно...

Что значит в "мастер базе"?
Я делаю запрос в той базе где ведется работа и появляются блокировки.
23 авг 12, 11:46    [13054120]     Ответить | Цитировать Сообщить модератору
 Re: 1C 8.1 и блокировки  [new]
M1chA77
Member

Откуда: Самара
Сообщений: 64
Volochkova ,

Кстати,я тебя обманул.
У меня 2 проца * 4 ядра = 8 ядер
23 авг 12, 11:49    [13054150]     Ответить | Цитировать Сообщить модератору
 Re: 1C 8.1 и блокировки  [new]
M1chA77
Member

Откуда: Самара
Сообщений: 64
Volochkova
9. Странно . Сколько у Вас ОЗУ под MS SQL и сколько на сервере где 1с предприятие.
Как я поняла это разные сервера. Между ними хотя бы гигабит есть?


Забыл на этот вопрос ответить
DC: Процессор на DC Xeon E5504 (4 ядра,4 потока) * 2
Оперативы 16ГБ
На данный момент занято 8Гб

SQL: Процессор на DC Xeon E5504 * 1
Опреативы 24ГБ
На данный момент занято 13Гб
23 авг 12, 11:55    [13054215]     Ответить | Цитировать Сообщить модератору
 Re: 1C 8.1 и блокировки  [new]
Volochkova
Member

Откуда:
Сообщений: 2321
M1chA77,
тогда еще куда не шло..
Но все равно SQL я бы оставила 6 ядер а для 1с - 2.
Попробуйте.

А про блокировки. .в тот момент когда он идут - запускайте Sp_who3... что скажет ?
Результат можно тут - можно в почту.
23 авг 12, 12:01    [13054282]     Ответить | Цитировать Сообщить модератору
 Re: 1C 8.1 и блокировки  [new]
M1chA77
Member

Откуда: Самара
Сообщений: 64
Volochkova,

Выполнение команд успешно завершено.

Вот Sp_who3:
Может конечно это не то,тогда ткни пожалуйста в ТО.
И что если перенести общение в аську (через личку)

/*
	select * from sysprocesses with differential cpu,physical_io
	
	sp_who3
*/
alter procedure sp_who3(
@order int = 0 --column to order
)
as
 begin
  SET NOCOUNT ON

  create table #start(spid int,cpu int,physical_io int,memusage int)

  insert into #start(spid,cpu,physical_io)
  select spid,SUM(cpu),sum(physical_io) from master..sysprocesses	
  group by spid
		
  WAITFOR DELAY '0:0:1'

  create table #diff(spid int,cpu_diff int,physical_io_diff int)
  --only working/blocking/blocked processes
  insert into #diff(spid,cpu_diff,physical_io_diff)
  select s.spid,s.cpu-#start.cpu as cpu_diff,s.physical_io-#start.physical_io as physical_io_diff
   from (select SUM(cpu) cpu,sum(physical_io) physical_io,max(blocked) blocked, spid
	 from master..sysprocesses 
	 group by spid) s
   join #start on s.spid=#start.spid	
   where (s.cpu-#start.cpu>0 or s.physical_io-#start.physical_io>0 or blocked>0 or s.spid in (select blocked from master..sysprocesses))

  create table #dbcc_tmp(EventType nvarchar(30),Parameters int,EventInfo nvarchar(255))
  create table #dbcc(spid int,EventInfo nvarchar(255))

  create table #block(spid int, dbid int, objectid int, indexid int, type varchar(255),mode varchar(255), dbname varchar(255),objectname varchar(255),indexname varchar(255))	
  insert into #block(spid,dbid,objectid,indexid,type,mode)
    select distinct req_spid,rsc_dbid,rsc_objid,rsc_indid,
	case(rsc_type)
	    when 1 then 'NULL'
	    when 2 then 'Database'
	    when 3 then 'File'
	    when 4 then 'Index'
	    when 5 then 'Table'
	    when 6 then 'Page'
	    when 7 then 'Key'
	    when 8 then 'Extent'
	    when 9 then 'RID'
	    when 10 then 'Application'
	end	
	,case(req_mode)
		when 0 then 'NULL' --. No access is granted to the resource. Serves as a placeholder.
		when 1 then 'Sch-S' -- (Schema stability). Ensures that a schema element, such as a table or index, is not dropped while any session holds a schema stability lock on the schema element.
		when 2 then 'Sch-M' -- (Schema modification). Must be held by any session that wants to change the schema of the specified resource. Ensures that no other sessions are referencing the indicated object.
		when 3 then 'S' -- (Shared). The holding session is granted shared access to the resource.
		when 4 then 'U' -- (Update). Indicates an update lock acquired on resources that may eventually be updated. It is used to prevent a common form of deadlock that occurs when multiple sessions lock resources for potential update at a later time.
		when 5 then 'X' -- (Exclusive). The holding session is granted exclusive access to the resource.
		when 6 then 'IS' -- (Intent Shared). Indicates the intention to place S locks on some subordinate resource in the lock hierarchy.
		when 7 then 'IU' -- (Intent Update). Indicates the intention to place U locks on some subordinate resource in the lock hierarchy.
		when 8 then 'IX' -- (Intent Exclusive). Indicates the intention to place X locks on some subordinate resource in the lock hierarchy.
		when 9 then 'SIU' -- (Shared Intent Update). Indicates shared access to a resource with the intent of acquiring update locks on subordinate resources in the lock hierarchy.
		when 10 then 'SIX' -- (Shared Intent Exclusive). Indicates shared access to a resource with the intent of acquiring exclusive locks on subordinate resources in the lock hierarchy.
		when 11 then 'UIX' -- (Update Intent Exclusive). Indicates an update lock hold on a resource with the intent of acquiring exclusive locks on subordinate resources in the lock hierarchy.
		when 12 then 'BU' --. Used by bulk operations.
		when 13 then 'RangeS_S' -- (Shared Key-Range and Shared Resource lock). Indicates serializable range scan.
		when 14 then 'RangeS_U' -- (Shared Key-Range and Update Resource lock). Indicates serializable update scan.
		when 15 then 'RangeI_N' -- (Insert Key-Range and Null Resource lock). Used to test ranges before inserting a new key into an index.
		when 16 then 'RangeI_S' --. Key-Range Conversion lock, created by an overlap of RangeI_N and S locks.
		when 17 then 'RangeI_U' --. Key-Range Conversion lock, created by an overlap of RangeI_N and U locks.
		when 18 then 'RangeI_X' --. Key-Range Conversion lock, created by an overlap of RangeI_N and X locks.
		when 19 then 'RangeX_S' --. Key-Range Conversion lock, created by an overlap of RangeI_N and RangeS_S. locks.
		when 20 then 'RangeX_U' --. Key-Range Conversion lock, created by an overlap of RangeI_N and RangeS_U locks.
		when 21 then 'RangeX_X' -- (Exclusive Key-Range and Exclusive Resource lock). This is a conversion lock used when updating a key in a range.
 	end
	from syslockinfo where req_status = 3 /*Waiting*/

	declare @dbid int	
	declare @sql varchar(8000)
	declare c cursor local fast_forward
  	for select distinct dbid from #block

	open c
	while(1=1)
	begin
		fetch next from c into @dbid
		if(@@FETCH_STATUS<>0)
			break
		declare @dbname varchar(255)
		select @dbname=DB_NAME(@dbid)

		if((@dbname is null)or(@dbname=''))
		begin	
			print 'lock with null database name '+ @dbid	
			continue
		end

		select @sql='update #block set dbname='+''''+@dbname+''''
		select @sql = @sql+',objectname = (select name from '+@dbname+'..sysobjects where id=#block.objectid)'
		select @sql = @sql+',indexname = (select name from '+@dbname+'..sysindexes where id=#block.objectid and indid = #block.indexid and indid<>0)'
		select @sql = @sql+' where #block.dbid='+Convert(varchar(255),@dbid)

		--print @sql
		exec(@sql)
	end
	close c
	deallocate c
	

  declare @spid int
  declare c cursor local fast_forward 
  for select spid from #diff
  open c
  while(1=1) 
  begin
   fetch next from c into @spid
   if @@FETCH_STATUS<>0 break

   declare @dbcc varchar(255)
   select @dbcc = 'DBCC INPUTBUFFER('+convert(varchar(255),@spid)+')'
   insert into #dbcc_tmp exec(@dbcc)

   insert into #dbcc(EventInfo,spid)
   select EventInfo,@spid from #dbcc_tmp

   delete from #dbcc_tmp
  end 
  close c
  deallocate c

  select s.spid,s.blocked,#diff.cpu_diff,#diff.physical_io_diff,s.memusage,s.open_tran
	,s.hostname,s.program_name,#dbcc.EventInfo
	,#block.dbname+ISNULL('..'+#block.objectname,'')+ISNULL('.'+#block.indexname,'') object
	,#block.type+'('+#block.mode+')' locktype
  from master..sysprocesses s
  join #diff on s.spid=#diff.spid
  join #dbcc on s.spid=#dbcc.spid 
  left join #block on s.spid = #block.spid
 end
GO
23 авг 12, 12:16    [13054425]     Ответить | Цитировать Сообщить модератору
 Re: 1C 8.1 и блокировки  [new]
M1chA77
Member

Откуда: Самара
Сообщений: 64
Сообщение 0, уровень 11, состояние 0, строка 0
При выполнении текущей команды возникла серьезная ошибка.. При наличии результатов они должны быть аннулированы.
Сообщение 0, уровень 20, состояние 0, строка 0
При выполнении текущей команды возникла серьезная ошибка.. При наличии результатов они должны быть аннулированы.
23 авг 12, 12:46    [13054685]     Ответить | Цитировать Сообщить модератору
 Re: 1C 8.1 и блокировки  [new]
Volochkova
Member

Откуда:
Сообщений: 2321
M1chA77,
Именно эта...
У меня на базе мастер она создалась.
Alter на create поменяйте...
и выполнение..
Exec sp_who3
23 авг 12, 13:18    [13054950]     Ответить | Цитировать Сообщить модератору
 Re: 1C 8.1 и блокировки  [new]
Shuhard
Member

Откуда:
Сообщений: 5002
для поиска узких мест в 1С-ких базах есть свой, специализированный инструментарий: http://v8.1c.ru/expert/pmc/pmc_overview.htm
и есть специалисты по тюнингу: http://www.softpoint.ru/
23 авг 12, 13:19    [13054969]     Ответить | Цитировать Сообщить модератору
 Re: 1C 8.1 и блокировки  [new]
M1chA77
Member

Откуда: Самара
Сообщений: 64
Volochkova
M1chA77,
Именно эта...
У меня на базе мастер она создалась.
Alter на create поменяйте...
и выполнение..
Exec sp_who3


Заменил в первой строчке после коментария
alter procedure sp_who3(

на 

master procedure sp_who3(

и вышла такая ошибка

Сообщение 156, уровень 15, состояние 1, строка 6
Неправильный синтаксис около ключевого слова "procedure".


и куда вставлять "Exec sp_who3"?
23 авг 12, 13:40    [13055185]     Ответить | Цитировать Сообщить модератору
 Re: 1C 8.1 и блокировки  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
M1chA77
Volochkova
M1chA77,
Именно эта...
У меня на базе мастер она создалась.
Alter на create поменяйте...
и выполнение..
Exec sp_who3


Заменил в первой строчке после коментария
alter procedure sp_who3(

на 

master procedure sp_who3(

и вышла такая ошибка

Сообщение 156, уровень 15, состояние 1, строка 6
Неправильный синтаксис около ключевого слова "procedure".


и куда вставлять "Exec sp_who3"?
Оставьте сервер в покое, пока вы его не сломали окончательно.
23 авг 12, 13:47    [13055262]     Ответить | Цитировать Сообщить модератору
 Re: 1C 8.1 и блокировки  [new]
M1chA77
Member

Откуда: Самара
Сообщений: 64
Гавриленко Сергей Алексеевич,

С удовольствием оставлю его в покое,только надо оптимизировать его работу а именно свести блокировку к тому минимуму, когда они не будут мешать работе компании. Можете чем-то помочь?
23 авг 12, 14:05    [13055448]     Ответить | Цитировать Сообщить модератору
 Re: 1C 8.1 и блокировки  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
M1chA77
Гавриленко Сергей Алексеевич,

Можете чем-то помочь?
Советом могу помочь. Обратитесь к специалисту.
23 авг 12, 14:07    [13055460]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить