Как заставить сервер c 2xE5-2630 v4, 128GB, raid ssd грузить процессор на 100% (тест Гилева 21,65)?

Здравствуйте все! Как загрузить сервер за 300к?
У нас есть сервер с вот такой конфигурацией:
603ecf63a12a9804569142.png
4xRAID1 SSD:
  • (240 intel): Система, SQL, 1С
  • (512 samsung evo pro) Основные базы 1С
  • (512 samsung evo pro)Дополнительные базы от разных программ, тестовые базы 1С
  • (1024 samsung evo) Виртуальные машины

Из ПО основное это: WS2012, MS SQL 14.0.2027.2, Сервер 1C Предприятие 8.3.16.1814, Hyper-v (все машины не ресурсоёмкие).
Сервер RDP отдельная машина, из которой идет подключение на этот сервер
Вот 8:30 рабочего дня, сервер предприятия 1с показывает 43 активных сеанса. Со вчерашнего вечера (уже более 10 часов) на сервере выполняется план обслуживания SQL:
Проверка целостности базы данных-->Реорганизация индекса-->Обновление статистики-->DBCC FREEPROCCACHE-->Резервное копирование На текущий момент завершена только Проверка целостности базы данных.
Вот его загрузка в разгар плана обслуживания и рабочего дня:
603ed2f761404849994234.png
Ночью, когда никто не работает производительность такая же.
Схема электропитания "Высокая производительность"
603ed337dc78a939966363.png
Настройка памяти SQL:
603ed44057962793563537.png
Ставил параллелизм:
603ed4d4bc0de584863142.png
Но такая нагрузка была и когда все было по умолчанию, это уже эксперименты.
Результат теста Гилева:
603ed6fc1592a976963216.png
Вообще не понятно что делает sql так долго если никто не работает в базах, и ресурсов ему хватает.
Но самое главное из-за чего это все началось, это жалобы пользователей на производительность 1С, а именно долгий отклик на простые открытия вкладок в самой программе, не говоря уже об отчетах. Для проверки, в момент жалоб, я запускал 1С прямо на этом "мощном" сервере, действительно все открывается медленно. Проблема плавающая, т.е. низкая производительность появляется периодами, и совершенно непонятна причина, стабильна только низкая нагрузка по всем параметрам.
  • Вопрос задан
  • 1381 просмотр
Решения вопроса 1
Mikhail_E
@Mikhail_E
1С, SQL
1. Загрузить процессор на MSSQL можно так :
- Должна быть задача на SQL серваке, которая потребует этих ресурсов (в простое или при малых задачах SQL проц не загрузит)
- Ставим параллелизм = количеству ядер
- Ставим Стоимостной порог в 0.
После завершения текущих проверок, советую вернуть MAXDOP/MaxThreshhold на (1/4 или 1/8 от количества ядер а порог выявить методом проб и замеров). Дело в том, что загрузка проца 100% не значит что всё будет быстрее (только в некоторых случаях типа проверки целостности). Т.к. при распараллеливании запросов по ядрам, появляются "Накладные расходы" на распараллеливание и сбор обратно результатов воедино. Это будет выглядеть как ожидания CXPACKET и Latch. (См "закон Амадала" + CXPACKET в гугле)
2. "Проверка целостности базы данных" - на ежедневной основе смысла не имеет, особенно если база достаточно крупная. Её имеет смысл делать или при возникновении проблем, или раз в квартал/месяц ... зависит от размеров базы. UPD: Лучше всё же её делать, если позволяет размер и тех. окно. Т.к. можно упустить ошибку целостности и перенести её в бэкап.
3. Если есть проблемы с производительностью, это вопрос не простой, и требует кучу опыта. Навскидку рекомендую сначала проверить :
- Нагрузку на дисковую подсистему, и если там будет проблема (Очередь к диску более 2 в среднем) выполнить разнесение *.mdf, *.log, tempdb, инстанс кластера 1c серверов на отдельные диски.
- Нагрузку на оперативку от MSSQL (можете гуглить это может вызывать большую активность IO на дисковую подсистему)
- Проверить способ коннекта к MSSQL ("Shared memory" должно быть "on" и использоваться, если 1с сервак и mssql сервак физически на одно машине .. это +10% к производительности.
ну и куча чего ещё ... в одном посте всего не расписать.
и т.д. вариантов очень много.
главный совет: решайте проблемы , только если она есть и мешает, если это лично ваше мнение, а пользователям не мешает, лучше делайте настройки по дефолту (см. APDEX, анализ производительности)
UPD: И да, виртуалки для 1C + MSSQL = зло, и не потому что "фирма 1С плохая", а потому что у вас не сможет 1С и MSSQL не сможет общаться через оперативку, и между оператором чтения на MSSQL до железа сервера будет 4 прослойки (SQLOS, OS виртуалки, Гипервизор, OS сервера, вместо SQLOS + OS сервера).
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
@GilevVyacheslav
На не правильный вопрос нельзя получить правильный ответ. В формулировке вопроса вы связываете 100% загруженности сервера с повышением производительности. В действительности же наоборот, чем выше нагрузка тем больше шансов словить операциями ожидания оборудования и замедлится. Т.е. первое что вы должны сделать это отказаться от концепции "загрузить под 100% процессор" чтобы улучшить производительность.

Для вашего процессора результаты нашего теста могут достигать 40 баллов.

Тест интегральный, то есть показывает суммирующий результат всех факторов. Таких факторов много. Именно поэтому это не тест для конкретного компонента. Чистую скорость отдельного компонента тест не покажет. Влияние дисков оценить можно но не надо например замерять скорость дисков этим тестом. Влияние дисков на общую скорость 1С и скорость дисков это не одно и тоже.

Ну и очевидный не для всех момент - тест надо делать когда нет нагрузки на сервер.

На результаты теста могут влиять
процессор (частота)
BIOS (turboboost и т.п.)
планки памяти (частота, расположение по каналам)
Гипервизор - схема электропитания, динамические ресурсы, приоритеты
ОС Windows - схема электропитания, квотирование dfss | Linux - Power saving
версии платформы 1С:Предприятие 8
версии субд
скорость диска, где размещена база
скорость диска, где размещена tempdb (если MS SQL Server)
скорость диска, где размещены кластер 1С, профиль учетки службы 1С, темпы
канал взаимодействия между 1С и субд: Shared memory | скорость сети
зеркалирование

Соответственно по списку начните с настройки биоса и убедитесь с помощью CPU-Z что частота процессора работает стабильно работает в турбобусте.

Если же Вы наблюдаете только периодическое замедление любых операций, то замерьте скорость реакции в свойствах рабочего процесса. Например при достижении 80% оперативной памяти в редакции ПРОФ сервера 1С происходит общее торможение. Подобные эффекты бывают при рестарте рабочих процессов или падении (поищите поиском *.mdmp файлы как признак падения). Наконец можно общее замедление словить запустив много фоновиков (сбросьте все фоновики в момент подвисания или вообще заблокируйте их старт). Выключите антивирус если есть.
Ответ написан
На прошлой работе админил, 150+ активных пользователей 1С
1) 1C утекает по памяти, настраивайте автоматический перезапуск процессов. Например каждые 40 часов.
2) количество процессов для 1С вообще не интересно, можно оставить 1 процессор и будет работать так же. Тупняки были решены путём установки интела из "голд" серии, с рабочей частотой >3ГГц. На самом деле, на i5 10й серии будет быстрее работать 1Ска под ваши потребности. Тест гилёва покажет кратное преимущество.
3) переиндексация и всё остальное для БД, как показывает мой опыт, делается долго только первый раз. И эффекта нет никакого.
В целом - проблему тупняков простым вливанием денег в железо не смог победить. Мы пробовали разные версии БД, пробовал postgresql, линукс/винда - работает одинаково безобразно, видимо где то внутри движка проблемы. На этом моя история закончена.
Ответ написан
@VirDim
Для начала установить max DOP (степень параллелизма) равным 1. Для 1С всегда рекомендуется устанавливать равным 1 в обычной работе. Подробности тут https://its.1c.ru/db/metod8dev/content/5945/hdoc (нужна учетная запись итс). Скорее всего после этого тормоза у пользователей пропадут. Конфигурация у вас какая-то типовая или самописная?
Ответ написан
@darst
1с по факту не особо грузит процессор главное для нее это память и скорость дисков. Есть вариант, что sql не хватает памяти поэтому он периодически скидывает её в swap. Как вариант увеличь максимальный объем для sql.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы