Добре, для всіх, хто цікавиться,
Ми вирішили проблему в "Запитаннях" пару місяців тому, просто встановивши приєднані SSD-накопичувачі на кожен з 3-х серверів і перемістивши дані БД та файли журналу з SAN на ці SSD-диски
Ось підсумок того, що я зробив для дослідження цього питання (використовуючи рекомендації з усіх постів, це це питання), перш ніж ми вирішили встановити SSD-накопичувачі:
1) розпочав збір лічильників PerfMon для наступних накопичувачів на всіх 3 серверах:
Disk F:
- це логічний диск на базі SAN, містить файли даних MDF
Disk I:
- це логічний диск на базі SAN, містить файли журналу LDF
Disk T:
, безпосередньо додається SSD, присвячений виключно tempDB
На малюнку нижче - середні значення, зібрані за 2 тижні
Disk I: (LDF)
у нього такий невеликий IO, а затримка дуже низька, тому Disk I: можна ігнорувати
Ви можете бачити, що він Disk T: (TempDB)
має більший IO порівняно з Disk F: (MDF)
, і він має значно кращу затримку одночасно - 0 мс
Очевидно, що з Disk F щось не так: там, де перебувають файли даних, він має високу затримку та середню чергу запису диска, незважаючи на низький IO
2) Перевірена затримка окремих баз даних за допомогою запиту на цьому веб-сайті
https://www.brentozar.com/blitz/slow-storage-reads-writes/
Мало активних баз даних на первинному сервері мали затримку читання 150-250 мс та затримку запису 150-450 мс
Що цікаво, майстри та файли баз даних MSDB мали затримку до 90 мс, що підозріло, враховуючи невеликий розмір даних та низький IO - ще одна вказівка, що щось не в порядку з SAN
3) Конкретних термінів не було
Під час якого "SQL Server зіткнувся з появою випадків ..." з'явилися повідомлення
Не було технічного обслуговування або важкого диска ETL, коли ці повідомлення були зареєстровані
4) Переглядач подій Windows
Не показано жодних інших записів, які б натякали на проблему, за винятком випадків виникнення "SQL Server".
5) Розпочали перевірку топ-10 запитів
Від sp_BlitzCache (процесор, зчитування тощо) та оптимізація, де це можливо,
Немає важких запитів супер IO, які б виправляли тони даних і сильно впливали на сховище, хоча
індексація в базах даних нормальна, я її підтримую
6) У нас немає команди SAN
У нас є лише 1 sysadmin, який допомагає з
певних випадків Мережевий шлях до SAN - це багатофазний, кожен з 3 серверів має 2 мережевих кабелю, що ведуть до комутаторів, а потім до SAN, і його повинен бути 1 гігабайт / сек.
7) Результатів CrystalDiskMark не було
Або будь-які інші результати тестових показників, коли були налаштовані сервери, тому я не знаю, якою повинна бути швидкість , і не можна в цей момент орієнтуватись, щоб побачити, які швидкості є в даний час, оскільки це вплине на виробництво
8) Налаштування сеансу розширених подій на події контрольно-пропускного пункту для відповідної бази даних
Сеанс XE допоміг виявити, що під час повідомлень "SQL Server зіткнувся з випадками ..." контрольний пункт відбувався дуже повільно (до 90 секунд)
9) Журнал помилок SQL Server
Містяться записи "FlushCache" "Насичення"
Вони повинні з'являтися, коли час контрольної точки для даної бази даних перевищує налаштування інтервалу відновлення
Деталі показали, що кількість даних, яку КПП намагається стерти, невелика, і це потребує тривалого часу, а загальна швидкість - близько 0,25 Мб / с ... дивно
10) Нарешті, на цьому малюнку показана схема усунення несправностей із зберіганням:
Здається, у нас просто "Проблема обладнання: - Працюйте з системним адміністратором / постачальником обладнання, щоб виправити будь-яку неправильну конфігурацію SAN, старих / несправних драйверів, контролерів, програмного забезпечення тощо".
В іншому запитанні "Повільна контрольна точка ..." Повільна контрольна точка та 15-секундні попередження вводу-виводу на флеш-пам’яті
Шон мав дуже приємний перелік того, що потрібно перевірити на апаратному та програмному рівні для усунення несправностей.
Наш sysadmin не міг перевірити всі речі зі списку, тому ми просто вирішили кинути певну техніку в цьому питанні - це зовсім не було дорого.
Роздільна здатність:
Ми замовили 1 TB накопичувачі SSD та встановили прямо на сервери
Оскільки у нас є групи доступності, ми перенесли файли даних БД з SAN на SSD на вторинних репліках, потім не вдалося перенести та перенесли файли на колишній первинний. Це дозволило за мінімальний загальний час простою - менше 1 хвилини
Тепер кожен сервер має локальну копію даних БД, і резервні копії повного / розрізнення / журналу робляться для згаданого SAN.
Більше не повідомляється про те, що повідомлення "SQL Server не зустрічається ..." у журналах перегляду подій Windows, а також виконання резервних копій, перевірки цілісності, Повторно збільшилася кількість індексів, запитів тощо
Наскільки ефективність щодо затримки вводу-виводу покращилася після перенесення файлів БД на SSD?
Для оцінки впливу використовували журнали продуктивності Windows Performance Monitor за 2 тижні до міграції та 4 тижні після міграції:
Також нижче наведено порівняння статистики затримки рівня БД (використана статистика захоплених віртуальних файлів SQL Server до та після міграції)
Підсумок
Міграція з SAN на безпосередньо приєднані локальні SSD була варте того, що
вона мала великий вплив на затримку пам’яті та покращилася в середньому понад 90% (особливо WRITE-операції), і ми вже не маємо 20-50-ти сек.
Перехід на локальний SSD вирішив не лише проблеми зі збереженням даних, але й безпеку даних, про які я був стурбований (якщо SAN виходить з ладу, усі 3 сервери втрачають свої дані одночасно)