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

Откуда: г. Москва
Сообщений: 129
К529,

Счетчик avg. disk queue length не обязательно сигнализирует о том, что "зависания сервера происходит по вине дисковой подсистемы". То есть, да, очередь скапливается на диске, но не факт, что это проблема производительности дисковой подсистемы. В условиях вашего "недосервера", безусловно, покупка ssd или raid ускорит работу, но не факт, что надолго.

В чем может быть проблема и как её решить? Сначала нужно уточнить некоторые моменты:

1. Непонятно, какая версия 1С (от этого зависит то, как диагностировать и оптимизировать), непонятна разрядность ОС, разрядность MS SQL. Для получения точной версии и разрядности нужно выполнить:
select @@VERSION


2. Относительно дисковой нагрузки непонятно, на чем именно возникают очереди. Это может быть как на чтении, так и на записи, при этом запись может быть в файлы данных или в файлы журналов транзакций, а еще непонятно на какую БД идёт нагрузка (хотя бы tempdb или обычная)
Для того, чтобы ответить на эти вопросы можно выполнить 2 скрипта:
+

select 
	ow.wait_type, 
	ow.wait_time_ms, 
	ow.signal_wait_time_ms, 
	ow.waiting_tasks_count, 
	ow.max_wait_time_ms, 
	cast(cast(ow.wait_time_ms+ow.signal_wait_time_ms as decimal(20,4))/ow.waiting_tasks_count as decimal(20,4)) avg_wait_time_ms 
from sys.dm_os_wait_stats ow 
where ow.wait_time_ms+ow.signal_wait_time_ms>0
and ow.wait_type not in ('REQUEST_FOR_DEADLOCK_SEARCH', 'XE_TIMER_EVENT', 'LAZYWRITER_SLEEP', 'LOGMGR_QUEUE', 'HADR_FILESTREAM_IOMGR_IOCOMPLETION',
	'DIRTY_PAGE_POLL', 'SQLTRACE_INCREMENTAL_FLUSH_SLEEP', 'XE_DISPATCHER_WAIT', 'CHECKPOINT_QUEUE', 'FT_IFTS_SCHEDULER_IDLE_WAIT',
	'BROKER_EVENTHANDLER', 'SLEEP_TASK', 'BROKER_TO_FLUSH', 'CLR_AUTO_EVENT', 'PREEMPTIVE_OS_WRITEFILEGATHER', 'BROKER_TASK_STOP', 'DISPATCHER_QUEUE_SEMAPHORE')
order by ow.wait_time_ms+ow.signal_wait_time_ms desc
В этом скрипте в первую очередь интересуют строки с WRITELOG, PAGEIOLATCH_SH, PAGEIOLATCH_EX (но и другие неплохо было бы увидеть)

SELECT 
	DB_NAME(stat.database_id) database_name, 
	stat.file_id, 
	cast(cast(stat.io_stall_read_ms as numeric)/stat.num_of_reads as numeric(20,4)) avg_read_stall, 
	cast(cast(stat.io_stall_write_ms as numeric)/stat.num_of_writes as numeric(20,4)) avg_write_stall, 
	stat.num_of_reads,
	stat.num_of_bytes_read,
	stat.io_stall_read_ms,
	stat.num_of_writes,
	stat.num_of_bytes_written,
	stat.io_stall_write_ms,
	stat.io_stall,
	stat.size_on_disk_bytes
FROM sys.dm_io_virtual_file_stats(NULL,NULL) stat
ORDER BY io_stall DESC

Ну а в этом - первые строки соответствуют "виновным" БД



3. Есть большие сомнения, что 4 ГБ хватает для какой-либо нормальной работы 1С. Имеет смысл а) более точно выяснить, хватает ли памяти (это можно будет сделать после уточнения версии), б) проанализировать, позволяет ли ОС и материнская плата добить памяти до 8-16-32 ГБ. Это сейчас очень недорого, тем более на несерверном железе.

4. Искать причину повышения нагрузки на диски. Самое вероятное, что может быть, это либо кривой код на стороне 1С, либо отсутствие нужных индексов или неактуальность статистик.

Ну и как уже написали: настроить нормально бэкапы, настроить обслуживание индексов, возможно, поставить диски в зеркало
20 дек 13, 19:01    [15325240]     Ответить | Цитировать Сообщить модератору
 Re: Одновременное сохранение базы SQL 2008 на несколько жестких дисков  [new]
К529
Member

Откуда:
Сообщений: 48
Версия 1с 8.2 (8.2.15.301), ОСь Server 2003 SP2 32 -х битка, версия SQL Microsoft SQL Server Management Studio 10.0.1600.22 ((SQL_PreRelease).080709-1414 )
Клиентские средства служб Microsoft Analysis Services 2007.0100.1600.022 ((SQL_PreRelease).080709-1414 )
Компоненты доступа к данным (MDAC) 2000.086.3959.00 (srv03_sp2_rtm.070216-1710)
Текущего объема памяти хватает, выявил по все время одинаковой ее загрузки, во время работы клиентов в количестве до 15 человек. Мать позволяет расширить до 16 Гб, но сейчас стоит 4 Гб и 32-х битная система.
20 дек 13, 19:13    [15325330]     Ответить | Цитировать Сообщить модератору
 Re: Одновременное сохранение базы SQL 2008 на несколько жестких дисков  [new]
К529
Member

Откуда:
Сообщений: 48
пока что перенес имеющююся базу на другой новый жесткий диск, хочу теперь перекинуть tempdb туда же.
Бэкап как посоветуете настроить и куда сбрасывать? на этот новый или же докупить еще один?
20 дек 13, 19:16    [15325340]     Ответить | Цитировать Сообщить модератору
 Re: Одновременное сохранение базы SQL 2008 на несколько жестких дисков  [new]
Speshuric
Member

Откуда: г. Москва
Сообщений: 129
К529
Версия 1с 8.2 (8.2.15.301), ОСь Server 2003 SP2 32 -х битка, версия SQL Microsoft SQL Server Management Studio 10.0.1600.22 ((SQL_PreRelease).080709-1414 )
Клиентские средства служб Microsoft Analysis Services 2007.0100.1600.022 ((SQL_PreRelease).080709-1414 )
Компоненты доступа к данным (MDAC) 2000.086.3959.00 (srv03_sp2_rtm.070216-1710)
Текущего объема памяти хватает, выявил по все время одинаковой ее загрузки, во время работы клиентов в количестве до 15 человек. Мать позволяет расширить до 16 Гб, но сейчас стоит 4 Гб и 32-х битная система.

1. Версия SQL и клиентских утилит может отличаться. Всё-таки приведённым запросом корретнее.
2. 8.2.15 очень не новая версия, с тех пор кучу небольших но важных оптимизаций уже сделали в платформе 1С (например: включено использование native client и shared memory в случае когда сервер 1С и SQL на одной машине, изменен способ индексации временных таблиц, некоторые индексы сделали кластеризованными).
3. Где расположен сервер 1С:Предприятия? На том же компьютере или на другом? Если на том же, то уверяю вас, 4 ГБ памяти не хватит никак.
4. Какое прикладное решение 1С используется? Все известные мне современные типовые решения даже для 3 пользователей потребуют больше памяти.
5. То, что "всё время одинаковая загрузка" памяти (особенно, если смотреть в task manager) ничуть не говорит о том, что её достаточно. Нужно хотя бы посмотреть состояние счетчиков Memory\Pages/sec, Memory\Available Mbytes, SQL Server\Buffer Manager\Buffer Cache Hit Ratio, SQL Server\Memory Manager\Total Server Memory (KB), SQL Server\Buffer Manager\Page life expectancy


К529
пока что перенес имеющююся базу на другой новый жесткий диск, хочу теперь перекинуть tempdb туда же.
Бэкап как посоветуете настроить и куда сбрасывать? на этот новый или же докупить еще один?


Бэкап однозначно на другой диск. Особенно, если не используется сжатие бэкапов (оно доступно в вашей версии SQL только в редакциях Enterprise и Developer)
20 дек 13, 19:36    [15325441]     Ответить | Цитировать Сообщить модератору
 Re: Одновременное сохранение базы SQL 2008 на несколько жестких дисков  [new]
К529
Member

Откуда:
Сообщений: 48
Да, сам сервер 1с и SQL стоит на одном и том же компьютере. на нем же как писал ранее стоит уже 2 жестких диска.на новый диск перенес и пишутся базы (пути сменил в SQL) и т.д. и соответственно тот который стоял ранее жесткий с самой операционной системой и на нем же стоит собственно SQL+ установлен конечно сервер 1с. Таким образом сейчас выглядит так:
1-й жесткий с самой системой+SQL+сервер 1с.
2-й жесткий, на него пишутся базы, больше на нем ничего нет.
По Вашим предложениям я тогда выполню:
- добавлю ОЗУ по максимум (тогда нужно будет ставить 64-х битку)
- для бэкапа докуплю еще один жесткий диск (чисто для бэкапа) + наверное БП сменить навеняка.
Ну а раньше как Вы уже поняли это ВСЁ было на одно 500 Гб-м жестком диске.
Кстати на счет счетчика Memory\Pages/sec, то его график, ну довольно часто скачут до потолка, но "процедур зависания" не наблюдается, а только стал замечать именно на Avg Disk Queue Length.
20 дек 13, 19:55    [15325506]     Ответить | Цитировать Сообщить модератору
 Re: Одновременное сохранение базы SQL 2008 на несколько жестких дисков  [new]
o-o
Guest
К529
Бэкап как посоветуете настроить и куда сбрасывать? на этот новый или же докупить еще один?


какой вообще смысл держать бэкап на том же диске?
бэкап -- это такой второй ключ от Вашей машины, на случай, если первый ломается/теряется.
Вы все упорно предлагаете его на ту же связку с основным прицепить,
это вот чтоб их однажды так вместе и потерять?
20 дек 13, 19:57    [15325513]     Ответить | Цитировать Сообщить модератору
 Re: Одновременное сохранение базы SQL 2008 на несколько жестких дисков  [new]
К529
Member

Откуда:
Сообщений: 48
Базы ведутся от одного программного комплекса, разработанной на основе 1с + собственно сама 1с УПП, но пока настроена работа нескольких подразделений (бухгалтерия + склад, в самой 1с работаю человек 5), человек 10 в программном комплексе. "Зависания" замечены даже тогда когда нет клиентов именно 1с и даже в такое время суток (очень рано), когда на предприятии в этой системе работает 2-3 человека. Соответственно имеется две базы. прогр. комплекса на основе 1с и база самой 1с.
20 дек 13, 20:00    [15325526]     Ответить | Цитировать Сообщить модератору
 Re: Одновременное сохранение базы SQL 2008 на несколько жестких дисков  [new]
Speshuric
Member

Откуда: г. Москва
Сообщений: 129
К529
Да, сам сервер 1с и SQL стоит на одном и том же компьютере. на нем же как писал ранее стоит уже 2 жестких диска.на новый диск перенес и пишутся базы (пути сменил в SQL) и т.д. и соответственно тот который стоял ранее жесткий с самой операционной системой и на нем же стоит собственно SQL+ установлен конечно сервер 1с. Таким образом сейчас выглядит так:
1-й жесткий с самой системой+SQL+сервер 1с.
2-й жесткий, на него пишутся базы, больше на нем ничего нет.
По Вашим предложениям я тогда выполню:
- добавлю ОЗУ по максимум (тогда нужно будет ставить 64-х битку)
- для бэкапа докуплю еще один жесткий диск (чисто для бэкапа) + наверное БП сменить навеняка.
Ну а раньше как Вы уже поняли это ВСЁ было на одно 500 Гб-м жестком диске.
Кстати на счет счетчика Memory\Pages/sec, то его график, ну довольно часто скачут до потолка, но "процедур зависания" не наблюдается, а только стал замечать именно на Avg Disk Queue Length.

К529
Базы ведутся от одного программного комплекса, разработанной на основе 1с + собственно сама 1с УПП, но пока настроена работа нескольких подразделений (бухгалтерия + склад, в самой 1с работаю человек 5), человек 10 в программном комплексе. "Зависания" замечены даже тогда когда нет клиентов именно 1с и даже в такое время суток (очень рано), когда на предприятии в этой системе работает 2-3 человека. Соответственно имеется две базы. прогр. комплекса на основе 1с и база самой 1с.

1. УПП на 4 ГБ не жилец никак. Тем более на 1 сервере.
2. Надо точнее диагностировать, что именно больше всего нагружает дисковую подсистему. Примерный перечень кандидатов:
  • Чтение/запись в tempdb. УПП так написана, что нагрузка может быть очень существенной.
  • Чтение из файлов данных БД. Это скорее всего будет говорить о очень плохом плане запросов. Найти и исправить такой запрос обычно не очень сложно.
  • Запись в файлы журналов транзакций. Это на вашей конфигурации вполне реально, особенно, если учесть, что журналы транзакций записываются в обход кэша ОС (write through). В этом случае надо будет отделять журналы от всей остальной активности.
  • Запись в файлы БД. В вашем случае это маловероятно хотя бы потому, что в производительность журналов транзакций придётся уткнуться гораздо раньше.
  • Запись в журнал регистрации 1С. На УПП при неаккуратном написании обработок эта нагрузка может быть весьма заметной.
  • 32-битный сервер 1с может заметно нагружать папку временных файлов ОС при больших выборках.
    Только поняв, что именно на диске нагружено, можно будет победить проблему.
    3. По памяти надо смотреть сразу все те счетчики, которые перечислены. Одного Memory\Pages/sec совсем недостаточно.
    4. Попробуйте выяснить, можно ли перейти на более свежую платформу 1С. Сейчас у вас скорее всего используется протокол TCP вместо Shared Memory. 1С часто нагружает БД огромным количеством мелких запросов и тут выигрыш может быть значительным.
    5. Если будете мигрировать на 64-битную ОС, то рассмотрите возможность перехода с SQL Server 2008 на SQL Server 2008 R2. Это позволит в стандартной редакции использовать сжатие бэкапов, а это и дисковое пространство, и скорость резервного копирования и проще манипуляции с бэкапами.
    6. После 1-2 дней работы снимите данные по тем запросам, которые я кидал раньше. Это позволит сразу сильно сузить круг поиска проблем и дать уже предметные рекомендации не основанные на "может быть" и "скорее всего".
  • 20 дек 13, 21:50    [15325931]     Ответить | Цитировать Сообщить модератору
     Re: Одновременное сохранение базы SQL 2008 на несколько жестких дисков  [new]
    К529
    Member

    Откуда:
    Сообщений: 48
    Спасибо. понял. счетчики подобавлял. веду наблюдение за ними вот уже около часа и могу сказать, что в данный момент скачет, впрочем как и раньше скакал довольно часто Memory\Pages/sec, и Processor Time, остальные на низком уровне. это при условии, что в данный момент работают только 3 человека. завтра же будет больше. понаблюдаю еще день, другой и сообщу о результатах. И если можно еще вопрос:
    Раз уж перенес базы на др. диск, то хочу и tembdb.mdf + templog.ldf перенести туда же, а старые удалить. Подскажите в моей ситуации:
    У меня есть база допустим с именем base1.mdf и есть tembdb.mdf + templog.ldf, я tembdb.mdf + templog.ldf хочу перенести на другой жесткий диск с уже перенесенной base1.mdf и base1_log.ldf, мои действия в new query должны быть такие:
    use master
    alter database tempdb
    modify file(
    name = tempdev,
    filename = N'C:\путь к перенесенной базе на др. жестком диске\tempdb.mdf')
    go

    alter database tempdb
    modify file(
    name = templog,
    filename = N'C:\путь к перенесенной базе на др. жестком диске\templog.ldf')
    go
    20 дек 13, 22:25    [15326058]     Ответить | Цитировать Сообщить модератору
     Re: Одновременное сохранение базы SQL 2008 на несколько жестких дисков  [new]
    К529
    Member

    Откуда:
    Сообщений: 48
    И если можете подсказать правильные рекомендации по архитектуре и внутреннему обустрою для пока что такого имеющегося оборудования и условий. То есть где и что лучше располагать\бэкапить и т.д.
    Сори, но повторюсь:
    Сервер на biostar h61mgv3, с 4гб памяти, 2 ЖД, 1-й - система, SQL 2008, 1с сервер. 2-й - хранение\запись самих баз. и если добавить 3-й ЖД - для бэкапа баз. Так будет для начала правильно "растасовать" имеющееся железо и программное обеспечение?
    + сменить БП, добавить ОЗУ, если что.
    еще раз большая благодарность.
    20 дек 13, 22:34    [15326105]     Ответить | Цитировать Сообщить модератору
     Re: Одновременное сохранение базы SQL 2008 на несколько жестких дисков  [new]
    Speshuric
    Member

    Откуда: г. Москва
    Сообщений: 129
    К529,

    Да. Полная инструкция по переносу есть в справке (по шагам, на русском, без регистрации и СМС :) ). См. пример "Ж.Перемещение базы данных tempdb в новое расположение".
    20 дек 13, 22:37    [15326128]     Ответить | Цитировать Сообщить модератору
     Re: Одновременное сохранение базы SQL 2008 на несколько жестких дисков  [new]
    К529
    Member

    Откуда:
    Сообщений: 48
    я понял. изучая эти процедуры, вижу информацию про перенос системной базы SQL master, базу шаблонов model и т.д. Мне это необходимо делать? или достаточно перекинуть саму пользовательскую базу и ее лог + tmpdb? или я так понял это необходимо в конкретных плановых\внеплановых перемещениях. например для обслуживания ЖД.
    20 дек 13, 23:16    [15326322]     Ответить | Цитировать Сообщить модератору
     Re: Одновременное сохранение базы SQL 2008 на несколько жестких дисков  [new]
    К529
    Member

    Откуда:
    Сообщений: 48
    Плюс изменение пути к журналу агента SQL Server и т.д. для пользовательских баз это не нужно и пути пусть остаются дефолтными как есть?
    20 дек 13, 23:18    [15326340]     Ответить | Цитировать Сообщить модератору
     Re: Одновременное сохранение базы SQL 2008 на несколько жестких дисков  [new]
    Speshuric
    Member

    Откуда: г. Москва
    Сообщений: 129
    К529
    я понял. изучая эти процедуры, вижу информацию про перенос системной базы SQL master, базу шаблонов model и т.д. Мне это необходимо делать? или достаточно перекинуть саму пользовательскую базу и ее лог + tmpdb? или я так понял это необходимо в конкретных плановых\внеплановых перемещениях. например для обслуживания ЖД.

    В рамках вашей задачи "распределить нагрузку по дискам", переносить master, model, msdb не нужно.
    20 дек 13, 23:19    [15326348]     Ответить | Цитировать Сообщить модератору
     Re: Одновременное сохранение базы SQL 2008 на несколько жестких дисков  [new]
    Dmitry V. Liseev
    Member [заблокирован]

    Откуда: Санкт-Петербург
    Сообщений: 5489
    Антивирус, полагаю, сканирует файлы базы на лету при каждом изменении?
    21 дек 13, 20:33    [15328278]     Ответить | Цитировать Сообщить модератору
     Re: Одновременное сохранение базы SQL 2008 на несколько жестких дисков  [new]
    К529
    Member

    Откуда:
    Сообщений: 48
    Перенес базы на другой диск.После 2-х дневного наблюдения, было все нормально, но вот сегодня снова avg. disk queue length был под потолок и "зависание" длилось минут 10...
    23 дек 13, 22:50    [15336603]     Ответить | Цитировать Сообщить модератору
     Re: Одновременное сохранение базы SQL 2008 на несколько жестких дисков  [new]
    К529
    Member

    Откуда:
    Сообщений: 48
    антивирь отключил. погляжу пока как без него будет.
    23 дек 13, 22:51    [15336605]     Ответить | Цитировать Сообщить модератору
     Re: Одновременное сохранение базы SQL 2008 на несколько жестких дисков  [new]
    К529
    Member

    Откуда:
    Сообщений: 48
    Может нужно разнести SQL и 1с на разные машины? об увеличении ОЗУ и т.д. для существующей конфигурации уже пошел процесс
    24 дек 13, 10:40    [15337816]     Ответить | Цитировать Сообщить модератору
     Re: Одновременное сохранение базы SQL 2008 на несколько жестких дисков  [new]
    Speshuric
    Member

    Откуда: г. Москва
    Сообщений: 129
    К529
    Может нужно разнести SQL и 1с на разные машины? об увеличении ОЗУ и т.д. для существующей конфигурации уже пошел процесс


    1. Выполните запросы из сообщения выше: 15325240 и закиньте результаты сюда. Зачем вслепую-то гадать?
    2. На какой диск была очередь? На тот на котором базы или на другой?
    24 дек 13, 11:19    [15338069]     Ответить | Цитировать Сообщить модератору
     Re: Одновременное сохранение базы SQL 2008 на несколько жестких дисков  [new]
    К529
    Member

    Откуда:
    Сообщений: 48
    и на тот и на другой. но чаще показывает частый зигзаг на новый диск. результат запроса выложу. вот добавил еще счетчики page fault sec для процесса rphost, и в диспетчере задач добавил колонку page fault так вот отсортировав колонку увидел, что он кушает значение в 65 ххх ххх, то есть более 65 000. это нормально?? PF Delta бегает от 100 с чем-то до 200,300,769... по-разному.page fault для sqlservr.exe равен 900 ххх, более 900 000 то есть.
    24 дек 13, 13:35    [15339384]     Ответить | Цитировать Сообщить модератору
     Re: Одновременное сохранение базы SQL 2008 на несколько жестких дисков  [new]
    К529
    Member

    Откуда:
    Сообщений: 48
    точнее page fault sec для процесса rphost показывает 65 000 000.
    24 дек 13, 13:37    [15339405]     Ответить | Цитировать Сообщить модератору
     Re: Одновременное сохранение базы SQL 2008 на несколько жестких дисков  [new]
    pkarklin
    Member

    Откуда: Москва (Муром)
    Сообщений: 74925
    К529
    точнее page fault sec для процесса rphost показывает 65 000 000.


    Дык, явно не хватает ему памяти и он сваливается в жуткий пейджинг. Так что проблемы скорее всего не на стороне MS SQL. Памяти явно мало.
    24 дек 13, 14:19    [15339763]     Ответить | Цитировать Сообщить модератору
     Re: Одновременное сохранение базы SQL 2008 на несколько жестких дисков  [new]
    Критик
    Member

    Откуда: Москва / Калуга
    Сообщений: 33991
    Блог
    К529,

    докупайте памяти, 32Гб стоят очень недорого для организации,
    или снимите с неиспользуемых машин, если срочно
    24 дек 13, 14:21    [15339772]     Ответить | Цитировать Сообщить модератору
     Re: Одновременное сохранение базы SQL 2008 на несколько жестких дисков  [new]
    К529
    Member

    Откуда:
    Сообщений: 48
    понятно, что очередь у жестких дисков была есть и будет, но вопрос отчего она возникает и соответствующие задержки тоже?я понял, что надо бы увеличить физическую память сделаем. спасибо. Вот буквально 5 минут назад, у оператора, в простой определенной форме, открыл и добавил позицию, нажал сохранить и все..опять минут 5 крутится курсор (сохранение), при этом как и ожидалось счетчик очереди на новый диск под потолок. может ли из-за нехватки памяти для rphost (или скорее всего физ. памяти), появляться задержка в очереди для жесткого диска, что и чревато задержками\"зависаниями" со стороны др. пользователей?
    24 дек 13, 14:37    [15339855]     Ответить | Цитировать Сообщить модератору
     Re: Одновременное сохранение базы SQL 2008 на несколько жестких дисков  [new]
    alexeyvg
    Member

    Откуда: Moscow
    Сообщений: 31442
    К529
    Вот буквально 5 минут назад, у оператора, в простой определенной форме, открыл и добавил позицию, нажал сохранить и все..опять минут 5 крутится курсор (сохранение)
    А такие вещи надо исследовать конкретно, а не "давайте купим дисков".
    У каждого зависания есть конкретная причина.
    24 дек 13, 14:41    [15339890]     Ответить | Цитировать Сообщить модератору
    Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3 4   вперед  Ctrl      все
    Все форумы / Microsoft SQL Server Ответить