Часто возникает проблема медленной работы баз 1С и бывает сложно определить источника проблем — у программистов, или системных администраторов. Поскольку Айтат занимается и программированием 1С и системным администрированием, то решение проблем быстродействия проходит прозрачно и эффективно. Постараемся показать наиболее частые причины «торможения» 1С.
На что следует обратить внимание в первую очередь
Файловая база, нужно обратить внимание на следующие моменты:
- Пропускная способность сети и скорость нахождения общей папки с базой
- Скорость работы дисков с базой
- Используемая версия платформы
Клиент-серверное решение:
- Некорректно настроенный сервер баз данных или кластер 1С: Предприятие
- Нехватка, или неправильное распределение мощностей серверов баз данных и кластера 1С: Предприятие.
- Ошибки в коде конфигурации, сделанные при добавлении функционала программистами.
В большинстве случаев медленная скорость работы связана именно с неправильными настройками и некорректной организацией инфраструктуры. Прежде чем покупать дорогое «железо» для модернизации — необходимо убедиться в корректности настроек, так как часто бывает, что мощностей добавили, а быстродействие не улучшилось. При анализе быстродействия сервера мы используем специальный чек-лист, который включает практически все пункты, которые могут повлиять на скорость работы 1С.
Общие настройки и рекомендации.
При количестве пользователей базы 1С менее 100 — рекомендуется совмещать сервер 1С и сервер баз данных (БД) на одном физическом, или виртуальном сервере. В этом случае можно использовать технологию SharedMemory, что само по себе даёт очень большую прибавку к быстродействию, т.к. сервер 1С и сервер базы данных используют общую оперативную память, а не какой-либо сетевой протокол, каждый из которых имеет свои ограничения. Лучше сервера 1С и базы данных изначально делать виртуальными, чтобы можно было быстро добавлять ресурсы при необходимости.
Настройка сервера базы данных (БД)
Сервер базы данных наиболее требователен к скорости дисков, ядерности процессоров, оперативной памяти. Скорость дисков для быстрой записи базы, многоядерность – для быстрой обработки данных, оперативная память для кеширования данных. Сервер баз данных может использовать практически неограниченное количество оперативной памяти, поэтому при совмещении серверов – необходимо вручную задавать максимальное количество памяти, которое может потребить сервер БД. При этом в идеале оперативной памяти должно быть столько, сколько занимают все базы данных. На сервере БД должно быть настроено обслуживание баз:
- Проверка целостности базы данных
- Перестроение индекса
- Реорганизация индекса
- Сжатие базы данных
- Очистка после обслуживания
Для баз с небольшим количеством изменений обслуживание можно делать 1 раз в неделю. О всех регламентных заданиях (будь то обслуживание баз, или резервное копирование) должны быть настроены оповещения, которые должен просматривать администратор сервера и принимать меры в случае неверного выполнения задания. При настройке расписания необходимо следить, чтобы операции не пересекались во времени.
Кэширование на дисках должно быть обязательно включено (желательно чтобы кэширование было организовано средствами RAID-контроллера, а не операционной системы. RAID-контроллер обязательно должен иметь BBU. Файлы баз данных и системная база данных tempdb должны располагаться на RAID-массиве из SSD дисков. Лучше всего использовать RAID10, т.к. он даёт максимальную скорость и безопасность при отказе диска.
Индексирование на дисках с базами желательно отключить. Файлы базы и файлы лога должны находиться на разных дисках.
Рекомендуется не совмещать сервера 1С и БД с другими серверными ролями за исключением Web-сервера, который настраивается для публикации 1С.
Если возможности выделить отдельный сервер под 1С и БД нет – нужно очень тщательно планировать используемые ресурсы каждой ролью. Ставить ограничения в использовании оперативной памяти в панели администрирования кластера 1С: Предприятие и в СУБД.
Нужно использовать последние версии ПО и ОС и СУБД должны иметь 64-разрядную архитектуру. Также на серверах должны быть обновлены BIOS, драйверы и прошивки RAID-контроллеров.
Настройки кластера 1С: Предприятие
Рекомендуется использовать предпоследнюю платформу сервера 1С: Предприятие. Перед установкой будет полезно прочитать на сайте 1С какие ошибки имеются в данным релизе платформы и являются ли они критичными для данной ситуации.
Будет полезно настроить перезапуск процесса при росте потребляемой оперативной памяти.
Другая важная настройка – журнал 1С. В конфигураторе можно настроить использование журнала 1С, по возможности вообще отключить его. Если всё же есть серьёзные основания его использовать, то нужно убедиться, что файл журнала находится на «быстрых» дисках и организовано его урезание.
Распределение мощностей между сервером 1С и сервером баз данных
- Оперативная память. В случае, если у нас совмещённый сервер, то необходимо вручную задавать максимальное использование оперативной памяти для серверов. Серверу базы данных, как правило, требуется больший объём памяти. Особенно это заметно после выполнения регламентных заданий. В идеале объём оперативной памяти должен быть равен или превышать суммарный объём всех баз. Серверу 1С: Предприятие требуется гораздо меньшее количество оперативной памяти. В большинстве случаев при объёме баз до 30Гб и количестве пользователей до 30 человек – объём потребляемой оперативной памяти не будет превышать 3Гб. Если же сервер потребляет больше, то стоит смотреть в сторону обновления платформы и\или оптимизации кода.
- Дисковая подсистема. Файлы базы данных и лога должны размещаться на «быстрых» дисках (SSD, 15K, или RAID10). Также нужно не забывать про системную базу tempdb, которая постоянно используется.
- Процессор. Для сервера БД лучше использовать многоядерный процессор, т.к. MS SQL хорошо работает с многоядерностью. Для сервера 1С, наоборот, лучше использовать более высокочастотный процессор. Если мы используем совмещенный сервер – нужны выбрать «золотую середину» между многоядерностью и частотой, например Intel Core i7-4960X Extreme Edition Ivy Bridge-E (3600MHz, LGA2011, L3 15360Kb) для использования мощной рабочей станции в качестве совмещённого сервера, или Intel Xeon E5-1660V3 Haswell-EP (3000MHz, LGA2011-3, L3 20480Kb) для использования в полноценном сервере.
Типичные ошибки при написании кода программистами
На практике нам приходилось сталкиваться с зависанием 1С у пользователей не только из-за производительности железа, но и из-за неоптимальности кода написанного разработчиками. Часто встречающимися ситуациями можно считать:
- Разработан отчет результат которого нужно ждать более 5 минут и при его формировании встает работа других пользователей. Над кодом такого отчета следует всерьез задуматься. Обычно мы устраняем такие симптомы, проводя реинжиниринг алгоритма, вводя индексные поля, меняя соединения в запросах.
- Используются инструменты в которых вместо запросов применены итерационные методы обработки данных.
- В стандартную конфигурацию вносятся изменения, последствия которых были слабо просчитаны.
Чаще всего пользователи знают конкретные инструменты базы, которые работают неоптимально. Хорошо когда сразу понятно, в каком направлении нужно искать подвох. Сложнее, если в конфигурацию внесено множество изменений и сотрудники компании не отдают себе отчет в том, от чего же происходит торможение. Тогда поиск и устранение причин неработоспособности системы может превратиться в длительное и увлекательное приключение.