Имя: Пароль:
1C
Админ
Медленное создание новых информационных баз
0 AlexanderKok
 
25.01.12
16:42
Столкнулись с проблемой снижения производительности сервера при создании новых информационных баз.

Симптом:

При увеличении числа баз на сервере 1С предприятия больше 50 происходит увеличение времени создания новых баз на базе любых конфигураций до 40 минут. В это время наблюдаются задержки в работе клиентов 1С и увеличение длительности выполнения регламентных заданий более чем в 2 раза. При этом в остальное время все ресурсоемкие запросы выполняются нормально. Параметры производительности: загрузка процессора, использование памяти, сетевой трафик между серверами, очереди к дискам – в норме. Количество сеансов  более 100. Количество запущенных регламентных заданий может быть более 50.

Сервера: 3х(2xXeon5620 32ГБ RAM FCNAS 1Гбит/сек)  -- 2сервера 1с предприятия в кластере + 1 MS SQL Server. (симптом выявляется именно в конфигурации с разделением ролей по разным физическим серверам)
Платформа: 8.2.14.540
Конфигурация: Любая, регулярно проверялось  и тестировалось на УТ11.0.6.9.
1 EasyRider
 
25.01.12
16:49
запустите профайлер и посмотрите какие блокировки возникают
2 Длинный Клиент
 
25.01.12
18:19
(1) поясните, пожалуйста, что за профайлер, буду восполнять пробелы
3 EasyRider
 
25.01.12
20:29
4 Длинный Клиент
 
25.01.12
20:29
(3) спасибо
5 aLeXaL
 
26.01.12
02:54
хМ.. Использование профайлера для анализа еще можно понять, но какое отношение имеют блокировки к однопоточному и однопользовательскому заполнению пустой базы данными конфигурации. Насколько я понял задержки возникают в других базах?
6 KRV
 
26.01.12
03:02
Во люди работают... 40 минут на создание новой базы - долго.. Фирмы-однодневки на каждую поставку колбасы что ли плодите?
7 AlexanderKok
 
26.01.12
03:16
Спасибо за ответы!
EasyRider, по поводу профайлера. Если смотреть поток команд SQL обращается внимание на задержки между командами записи элементов конфигурации. при этом выполнение инсертов и апдейтов минимальное 10-12мс интервал между ними до пол-секунды.

aLeXaL, да, именно так - при создании одной базы наблюдается торможение в работе у пользователей в других 10-15ти базах. Так же увеличивается время выполнения регламентных заданий до 2х раз.
8 Стальная Крыса
 
26.01.12
04:13
из (0) не совсем понятно, как ведет себя дисковая подсистема под MSSQL ?
зы. на таком железе, подобного рода тормоза могут быть вызваны только физическим уровнем
9 EasyRider
 
26.01.12
08:12
(5)предположил,что блокировки возникают в таблице tempdb
11 vde69
 
26.01.12
08:16

// тестирование SQL сервера
//
// После создания вызываешь EXEC track_waitstats 300, 1
//
// 300 - минуты скока мерить
// 1 - интервал в минутах


CREATE proc get_waitstats
AS

SET nocount ON

DECLARE now datetime,@totalwait numeric(20,1)
  ,@endtime datetime,@begintime datetime
  ,hr int,@min int,@sec int

SELECT  now=max(now),@begintime=min(now),@endtime=max(now)
FROM waitstats WHERE [wait type] = 'Total'

-- Subtract waitfor, sleep, and resource_queue from total.
SELECT @totalwait = sum([wait time]) + 1 FROM waitstats WHERE [wait type] NOT IN ('WAITFOR','SLEEP','RESOURCE_QUEUE', 'Total',
 '***total***') AND now = now

DELETE waitstats WHERE [wait type] = '***total***' AND now = now INSERT INTO waitstats SELECT '***total***',0,@totalwait,@totalwait,now

SELECT [wait type],[wait time],percentage=cast (100*[wait time]/@totalwait
 AS numeric(20,1))
FROM waitstats
WHERE [wait type] NOT IN ('WAITFOR','SLEEP','RESOURCE_QUEUE','Total')
AND now = now
ORDER BY percentage desc

GO

CREATE proc track_waitstats (@num_samples int=10,@delaynum int=1,@delaytype
 nvarchar(10)='minutes')
AS

SET nocount ON
IF NOT EXISTS (SELECT 1 FROM sysobjects WHERE name = 'waitstats')
  CREATE table waitstats ([wait type] varchar(80),
     requests numeric(20,1),
     [wait time] numeric (20,1),
     [signal wait time] numeric(20,1),
     now datetime default getdate())
ELSE    truncate table waitstats
dbcc sqlperf (waitstats,clear)                            -- Clear out waitstats.
DECLARE i int,@delay varchar(8),@dt varchar(3),now datetime,
  @totalwait numeric(20,1),@endtime datetime,@begintime datetime,hr int,
  @min int,@sec int
SELECT i = 1
SELECT @dt = case lower(@delaytype)
  WHEN 'minutes' THEN 'm'
  WHEN 'minute' THEN 'm'
  WHEN 'min' THEN 'm'
  WHEN 'mm' THEN 'm'
  WHEN 'mi' THEN 'm'
  WHEN 'm' THEN 'm'
  WHEN 'seconds' THEN 's'
  WHEN 'second' THEN 's'
  WHEN 'sec' THEN 's'
  WHEN 'ss' THEN 's'
  WHEN 's' THEN 's'
  ELSE @delaytype
END
IF @dt NOT IN ('s','m')
BEGIN
  PRINT 'please supply delay type e.g. seconds or minutes'
  RETURN
END
IF @dt = 's'
BEGIN
  SELECT @sec = @delaynum % 60
  SELECT @min = cast((@delaynum / 60) AS int)
  SELECT hr = cast((@min / 60) AS int)
  SELECT @min = @min % 60
END
IF @dt = 'm'
BEGIN
  SELECT @sec = 0
  SELECT @min = @delaynum % 60
  SELECT hr = cast((@delaynum / 60) AS int) END SELECT @delay= right('0'+ convert(varchar(2),hr),2) + ':' +
  + right('0'+convert(varchar(2),@min),2) + ':' +
  + right('0'+convert(varchar(2),@sec),2)
IF hr > 23 or @min > 59 or @sec > 59
BEGIN
  SELECT 'hh:mm:ss delay time cannot > 23:59:59'
  SELECT 'delay interval and type: ' + convert (varchar(10),@delaynum) + ',' +
    @delaytype + ' converts to ' + @delay
  RETURN
END
WHILE (i <= @num_samples)
BEGIN
            INSERT INTO waitstats ([wait type], requests, [wait time],[signal wait time])
  EXEC ('dbcc sqlperf(waitstats)')
  SELECT i = i + 1
  waitfor delay @delay
END
-- Create report.
EXECUTE get_waitstats

GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO

12 vde69
 
26.01.12
08:17
(10)(11) блин движек немного косячит, ищи текст скрипта в старых ветках
13 упс
 
26.01.12
08:25
(0) размер базы model какой (файл данных и журнал транзакций)? ОС на SQL Server какая?
14 упс
 
26.01.12
08:27
+(13) какой размер автоприращения для файла данных и журнала транзакций? Какого размера они становятся в созданной БД?
15 Стальная Крыса
 
26.01.12
10:03
16 AlexanderKok
 
26.01.12
10:10
упс, меняли:
было 50М данные 10М лог +1% приращение
сейчас 200М данные 50М лог +10% приращения после создания базы остаются неизменными, свободное место 100М
пустая база на SQL создается секунды, через 1С также не долго, проблема с загрузкой конфиг
сначала - меняли - не помогло
17 AlexanderKok
 
30.01.12
17:11
Up
Тема все еще актуальна. Уточнение SQL сервер - MSSQL2008R2. Задержки возникают при записи и удалении строк с BLOB полями в таблицы Config и ConfigSave. Как можно ускорить работу с BLOB полями?