Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 SQL Server has encountered 1 occurrence(s) of I/O  [new]
Alexanderpeshkov
Member

Откуда:
Сообщений: 315
Добрый день!

возникла следующая проблема на рабочем сервере решили реализовать связь серверов через сервис брокер(очередь) и после этого стала появляться ошибка такого рода
SQL Server has encountered 1 occurrence(s) of I/O requests taking longer than 15 seconds to complete on file [D:\stuff\dbs\Earth_New_Log.LDF] in database [Earth_New] (10).  The OS file handle is 0x00000818.  The offset of the latest long I/O is: 0x0000002c264a00
порывшись в инете нашел что это может быть связанно с проблемой подсистемы ввода вывода
протестили наш рейд вроде все ок но все же решили на всякий случай перенести на новый резервный сервер. перенесли базу на новый сервак и проблема переехала в месте с базой.
кто нибудь может знает как решить эту проблему она просто время от времени вешает очередь причем очередь иногда сама поднимается потупив часик другой а иногда только прегрузка сервера помогает.... база не очень большая 10 гб и 30 лог файл
и еще вопрос на сколько важно поделить количество дата файлов = кол ядер проц??? у меня пока одним файлом а ядер 8 имеет ли смысл поделить на 8 файлов???
16 дек 09, 11:46    [8073949]     Ответить | Цитировать Сообщить модератору
 Re: SQL Server has encountered 1 occurrence(s) of I/O  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36805
От поделить хуже точно не станет.

Что касается варнинга в логах, то надо мониторить дисковую очередь. Лог, я надеюсь, отдельно от данных лежит?
16 дек 09, 11:50    [8074004]     Ответить | Цитировать Сообщить модератору
 Re: SQL Server has encountered 1 occurrence(s) of I/O  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
Гм... А счетчики дисковой активности мониторили?
16 дек 09, 11:51    [8074011]     Ответить | Цитировать Сообщить модератору
 Re: SQL Server has encountered 1 occurrence(s) of I/O  [new]
Alexanderpeshkov
Member

Откуда:
Сообщений: 315
всмысле лог отдельно?? ну он в отдельном файле но файлы то в одном месте лежат. пока только дал указания админам помониторить нагрузку на харды, просто меня немного смущает что я перенес на новый мощный сервак и все равно такая хрень вылазиет мне какжеся это уже не с система ввода вывода а что то другое
16 дек 09, 11:56    [8074082]     Ответить | Цитировать Сообщить модератору
 Re: SQL Server has encountered 1 occurrence(s) of I/O  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36805
Alexanderpeshkov
всмысле лог отдельно?? ну он в отдельном файле но файлы то в одном месте лежат. пока только дал указания админам помониторить нагрузку на харды, просто меня немного смущает что я перенес на новый мощный сервак и все равно такая хрень вылазиет мне какжеся это уже не с система ввода вывода а что то другое
"Новый мощный сервак" - это какой? И какая там дисковая подсистема? "Мощный SATA-диск"?
16 дек 09, 11:57    [8074097]     Ответить | Цитировать Сообщить модератору
 Re: SQL Server has encountered 1 occurrence(s) of I/O  [new]
Alexanderpeshkov
Member

Откуда:
Сообщений: 315
хсенон 2,3Гц 4Гб ОП 8 хардов рейд пока не смог узнать какой но предположительно 5
16 дек 09, 12:53    [8074693]     Ответить | Цитировать Сообщить модератору
 Re: SQL Server has encountered 1 occurrence(s) of I/O  [new]
pr0ger
Member

Откуда: Москва
Сообщений: 1933
Нужно померить счетчики Avg. Disk Sec/Read и Avg. Disk Sec/Write
Скорее всего на RAID5 запись будет плохой

Less than 10 ms - very good
Between 10 - 20 ms - okay
Between 20 - 50 ms - slow, needs attention
Greater than 50 ms – Serious I/O bottleneck
16 дек 09, 13:02    [8074800]     Ответить | Цитировать Сообщить модератору
 Re: SQL Server has encountered 1 occurrence(s) of I/O  [new]
Alexanderpeshkov
Member

Откуда:
Сообщений: 315
меня всеравно терзяют мысли как это может быть связанно с переходм на сервис брокер (очередь)
до этого я такой же объем запросов обрабатывал через линкед сервер потом решили перейти на очередь и стала такая хрень появляться....
16 дек 09, 13:21    [8074965]     Ответить | Цитировать Сообщить модератору
 Re: SQL Server has encountered 1 occurrence(s) of I/O  [new]
Alexanderpeshkov
Member

Откуда:
Сообщений: 315
pr0ger
Нужно померить счетчики Avg. Disk Sec/Read и Avg. Disk Sec/Write
Скорее всего на RAID5 запись будет плохой

Less than 10 ms - very good
Between 10 - 20 ms - okay
Between 20 - 50 ms - slow, needs attention
Greater than 50 ms – Serious I/O bottleneck


померил стандартной утилитой видовой в приделах 10 сек но у тебя то показатели в мили секундах или это ты описался???
16 дек 09, 13:29    [8075014]     Ответить | Цитировать Сообщить модератору
 Re: SQL Server has encountered 1 occurrence(s) of I/O  [new]
pr0ger
Member

Откуда: Москва
Сообщений: 1933
это миллисекунды. Это время выполнения дисковой операции, если это время будет измерятся секундами, то это уже дискета а не RAID-массив
16 дек 09, 13:33    [8075041]     Ответить | Цитировать Сообщить модератору
 Re: SQL Server has encountered 1 occurrence(s) of I/O  [new]
Alexanderpeshkov
Member

Откуда:
Сообщений: 315
pr0ger
это миллисекунды. Это время выполнения дисковой операции, если это время будет измерятся секундами, то это уже дискета а не RAID-массив

ну тест показал в пределах 10 значит все ок? в чем тогда еще может быть проблема???
16 дек 09, 14:05    [8075303]     Ответить | Цитировать Сообщить модератору
 Re: SQL Server has encountered 1 occurrence(s) of I/O  [new]
Fedotov Alex
Member

Откуда:
Сообщений: 167
select @@version
16 дек 09, 14:07    [8075321]     Ответить | Цитировать Сообщить модератору
 Re: SQL Server has encountered 1 occurrence(s) of I/O  [new]
Alexanderpeshkov
Member

Откуда:
Сообщений: 315
Fedotov Alex
select @@version


Microsoft SQL Server 2005 - 9.00.1399.06 (Intel X86)   Oct 14 2005 00:33:37   Copyright (c) 
1988-2005 Microsoft Corporation  Standard Edition on Windows NT 5.2 (Build 3790: Service Pack 1) 
16 дек 09, 14:17    [8075410]     Ответить | Цитировать Сообщить модератору
 Re: SQL Server has encountered 1 occurrence(s) of I/O  [new]
Fedotov Alex
Member

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

Alexanderpeshkov,

https://www.sql.ru/forum/actualthread.aspx?tid=681285&hl=tokenandpermuserstore
http://blogs.msdn.com/chrissk/archive/2008/06/19/i-o-requests-taking-longer-than-15-seconds-to-complete-on-file.aspx
http://sqlblogcasts.com/blogs/sqldbatips/archive/2007/07/18/troubleshooting-performance-issues-with-tokenandpermuserstore-in-sql2005.aspx

Сообщение было отредактировано: 16 дек 09, 14:56
16 дек 09, 14:53    [8075792]     Ответить | Цитировать Сообщить модератору
 Re: SQL Server has encountered 1 occurrence(s) of I/O  [new]
pr0ger
Member

Откуда: Москва
Сообщений: 1933
Fedotov Alex
Alexanderpeshkov,

Alexanderpeshkov,

https://www.sql.ru/forum/actualthread.aspx?tid=681285&hl=tokenandpermuserstore
http://blogs.msdn.com/chrissk/archive/2008/06/19/i-o-requests-taking-longer-than-15-seconds-to-complete-on-file.aspx
http://sqlblogcasts.com/blogs/sqldbatips/archive/2007/07/18/troubleshooting-performance-issues-with-tokenandpermuserstore-in-sql2005.aspx

Это не к этому случаю относится. Сначала нужно источник проблем, а потом лечить. Обратная последовательность очень не эффективна.
16 дек 09, 14:59    [8075868]     Ответить | Цитировать Сообщить модератору
 Re: SQL Server has encountered 1 occurrence(s) of I/O  [new]
Alexanderpeshkov
Member

Откуда:
Сообщений: 315
я посмотрел эти сайты там не мой случай, там говорится про засыпание одного проца а у меня на сервере настройки сделаны так что система никогда не засыпает и проц тоже тем более что нагрузка примерно равномерная и не меняется особо, или это был совет поставить SP по новее???
16 дек 09, 15:19    [8076060]     Ответить | Цитировать Сообщить модератору
 Re: SQL Server has encountered 1 occurrence(s) of I/O  [new]
Alexanderpeshkov
Member

Откуда:
Сообщений: 315
Есть еще какие нибудь соображения????
я нашел еще инфу что это может быть из за того что файл лога и дата файл лежат в одном месте(рекомендуется их распихивать на разные физические диски) но у меня райд и другова физ диска на серваке нет....
17 дек 09, 12:23    [8079751]     Ответить | Цитировать Сообщить модератору
 Re: SQL Server has encountered 1 occurrence(s) of I/O  [new]
Now password
Guest
Выясните пожалуйста что вызывает данную ошибку. Должны были быть действия. Например создание индекса, на несколько миллионов строк, в режиме online, может легко положить вашу дисковую систему, если там нет супер мощных массивов.
17 дек 09, 13:29    [8080286]     Ответить | Цитировать Сообщить модератору
 Re: SQL Server has encountered 1 occurrence(s) of I/O  [new]
Alexanderpeshkov
Member

Откуда:
Сообщений: 315
единственное что изменилось это то что мы перешли на очередь Service Broker и все при этом эта же база стоит на другом сервере и нормально без ошибок правда там нагрузка на очередь существенно ниже...
17 дек 09, 13:59    [8080538]     Ответить | Цитировать Сообщить модератору
 Re: SQL Server has encountered 1 occurrence(s) of I/O  [new]
Now password
Guest
По своему опыту знаю, что Service broker не работает так плотно с дисковыми массивами и не может повлиять так сильно на их работу. Если у вас огромная очередь, выясните, что имеено её создаёт. Это может быть нехватка индексов, огромные вставки, одновременно лежащие на одном массиве большие СУБД и кубы данных, которые одновременно работают вместе. Я бы копал именно в этом направлении.
17 дек 09, 14:12    [8080643]     Ответить | Цитировать Сообщить модератору
 Re: SQL Server has encountered 1 occurrence(s) of I/O  [new]
Alexanderpeshkov
Member

Откуда:
Сообщений: 315
в том то и беда что не понятно, сама база 10 гб она одна на этом сервере файлы данных хранятся на райде 5, загрузка проца при всем это 14% и 2 гб памяти из 4
в базу валится где то по 15 сообщений в минуту по получению каждого сообщения дергается процедура которая сохраняет сообщение и делает не сложные действия с набором данных который был получен через очередь.... тем более он ругается не на файл данных а на файл лога я его сегодня сжал до минимума (512 метров) но и это не помогло (((( индексов грамадных и лишних нету только необходимые...
17 дек 09, 14:39    [8080871]     Ответить | Цитировать Сообщить модератору
 Re: SQL Server has encountered 1 occurrence(s) of I/O  [new]
Now password
Guest
Ну смотрите, если ругается на файл лога, значит запись в него происходит с такой скоростью, что дисковая система не успевает обрабатывать все необходимые действия, при этом 5 - ый рэйд не является лучшим средством хранения БД, в которую регулярно идут вставки. На каждую вставку выполянется процедура и это всё логируется, т.к., на сколько я понимаю, это всё выполянется транзакционным методом. Вот и подумайте, почему сервер может ругаться на лог БД. Дальше смотрите, если есть очередь, что - то вызывает нагрузку, это вставка, вы уверены? Чем проверяли? Чем проверяли наличие/отсутствие необходимых индексов? Что за вычисления происходят в процедуре, участвуют ли индексы и нужны ли они при этих вычислениях? Самое главное, если у вас в режиме текущей работы в perfmon- e наблюдаются очереди, значит вы ограничены в телодвижениях, нельзя создавать индексы в режиме online - это подгрузит tempdb и если она лежит на том - же массиве, что основная БД, будет неприятно... Но даже если она и не лежит там, то после построения индекса он всё равно будет накладываться в основную БД и тогда всё упадёт... Проверенно((( Выясните окончательно, что создаёт нагрузку, вот например скрипт выяснения текущих сессий SQL сервера, он стандартный:
SELECT
	Sessions.session_id AS SessionID, Sessions.login_name AS LoginName, Sessions.host_name AS HostName, Sessions.program_name AS ProgramName,
	Sessions.client_interface_name AS ClientInterfaceName,
	Requests.wait_time AS WaitTime, Requests.cpu_time AS CPUTime, Requests.total_elapsed_time AS ElapsedTime,
	Requests.reads AS Reads, Requests.writes AS Writes, Requests.logical_reads AS LogicalReads,
	Requests.row_count AS [RowCount], Requests.granted_query_memory*8 AS GrantedQueryMemoryKB,
	(Requests.cpu_time+1)*(Requests.reads+Requests.writes+1) AS Score,
	Statements.text AS BatchText,
	LEN(Statements.text) AS BatchTextLength, Requests.statement_start_offset/2 AS StartPos, Requests.statement_end_offset/2 AS EndPos,
	CASE
		WHEN Requests.sql_handle IS NULL THEN ' '
		ELSE
			SubString(
				Statements.text,
				(Requests.statement_start_offset+2)/2,
				(CASE
					WHEN Requests.statement_end_offset = -1 THEN LEN(CONVERT(nvarchar(MAX),Statements.text))*2
					ELSE Requests.statement_end_offset
				END - Requests.statement_start_offset)/2
			)
	END AS StatementText,
	QueryPlans.query_plan AS QueryPlan
FROM
	sys.dm_exec_sessions AS Sessions
	JOIN sys.dm_exec_requests AS Requests ON Sessions.session_id=Requests.session_id
	CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS Statements
	CROSS APPLY sys.dm_exec_query_plan(plan_handle) AS QueryPlans
ORDER BY score DESC
GO
17 дек 09, 14:56    [8081060]     Ответить | Цитировать Сообщить модератору
 Re: SQL Server has encountered 1 occurrence(s) of I/O  [new]
Alexanderpeshkov
Member

Откуда:
Сообщений: 315
процедура которая дергается сервис брокером по приходу сообщения делает делает инсерт этого сообщения в таблицу истории затем парсит хмл и делает апдейт или инсерт в одну из двух таблиц которые довольно массивные там где то по 3 млн записей, + есть еще две таблицы по 4,5 млн зап но к ним идет в основном только чтение при построении двух вьюх.... индексы я настраивал по плану который можно в студии построить настраивал так чтобы вьюхи строились быстро там где то по два индекса в каждой таблице по первому полю айди и по нескольким другим для селекта...

попробовал построить план для этой процедуры все ок только на вот кластерный индекс на вставку в эти таблицы почему то 128 % не совсем понятно что за индекс на вставку или это он показывает что мой кластерный индекс плохо работает на вставку...
17 дек 09, 16:23    [8081774]     Ответить | Цитировать Сообщить модератору
 Re: SQL Server has encountered 1 occurrence(s) of I/O  [new]
Now password
Guest
Вы идёте в правильном направлении, кластерный индекс скорее всего у вас по одному полю постороен, может конечно и составной, но что - то мне подсказывает, что это не так. В запросе на вставку у вас испольуется больше полей и поэтому, фактически, хоть он и пишет, что использует индекс, сканирует всю вашу таблицу целиком - это и создаёт вам нагрузку. Советую проверить, какие именно поля используются в запросе и подумать над созданием ещё одного индекса.
17 дек 09, 16:55    [8082111]     Ответить | Цитировать Сообщить модератору
 Re: SQL Server has encountered 1 occurrence(s) of I/O  [new]
Now password
Guest
Хотя нет, я вам соврал, при инсёрте он должен просканировать кластерный индекс, найти там максимальное значение и доваить строку... Вы тут новыми индексами никак не ускорите, а наоборот замедлите работу вставки данных. А вот update надо бы изучить более предметно.
17 дек 09, 17:09    [8082248]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить