
Решаем задачи автоматизации
На базе программ 1С
И собственных решений
А потом обслуживаем
По разумным ценам
Снижение издержек лицензирования и затрат на содержание сервера ОС.
Поиск и устранение блокировок. Управляемые блокировки. Оптимизация запросов.
Снятие проблем автоматического режима управления блокировками SQL Server. Оптимизация и настройка PostgreSQl.
Контроль вносимых изменений. Исключение избыточной нагрузки. Мгновенный отклик 1С, исключение простоев в работе.
Вопросу, какая же СУБД - Postgresql или MS SQL для 1С является наиболее оптимальной, посвящено множество статей. В этой статье мы рассмотрим шаги оптимизации обоих. Каждая СУБД вендора имеет как собственные рекомендации по настройке, так и рекомендации фирмы 1С. Следует отметить, что в зависимости от оборудования, конфигурации серверов и количества пользователей, задающих разную нагрузку, детали процесса оптимизации СУБД под 1С и реализации рекомендаций могут меняться.
Опыт эксплуатации баз 1С на PostgreSQL показал, что наибольшей производительности и оптимальной работы 1С и PostgreSQL удалось добиться на linux, поэтому желательно использовать именно ее. Но вне зависимости от операционной системы, важно помнить, что настройки, указанные по умолчанию при установке PostgreSQL, предназначены только для запуска сервера СУБД. Ни о какой промышленной эксплуатации речи идти не может! Следующим шагом после запуска станет оптимизация PostgreSQL под 1С:
Установка параметра shared_buffers в RAM/4 является рекомендацией по умолчанию, но пример Sql Server говорит о том, что чем больше памяти ему выделяется, тем лучше его производительность (при отключенном сбросе страниц в файл подкачки). То есть, чем больше страниц данных располагаются в оперативной памяти, тем меньше обращений к диску. Возникает вопрос: почему такой маленький кэш? Ответ прост: если shared_buffers большой, то часть неиспользуемых страниц свопируется на диск. Но как отследить момент, когда сброс прекратится, и показатель параметра будет оптимальным? Для достижения и выхода на оптимальный показатель shared_buffers, его значение необходимо поднимать на продуктиве ежедневно (по возможности) с определенным шагом прироста и смотреть, в какой момент начнется сброс страниц на диск (увеличится своп).
Установка 1С на PostgreSQL под Windows – достаточно простой процесс. При запуске установочного пакета необходимо указать кодировку UTF-8. По сути, это единственный интересный нюанс и еще какая-то настройка PostgreSQL для 1С 8.3 из-под Windows не потребуется. Установка и настройка PostgreSQL для 1С на ОС linux может вызвать ряд затруднений. Для их преодоления в качестве примера рассмотрим запуск работы (используя дистрибутивы ведущего российского вендора PostgreSQL-Pro и компании 1С) PostgreSQL на сервере Ubuntu 16.04 х64
1.Скачиваем указанную позицию дистрибутива СУБД PostgreSQL:
2.Выкладываем PostgreSQL на сервер;
3.Распаковать установщик СУБД PostgreSQL можно командой:
tar -xvf postgresql-9.4.2-1.1C_amd64_deb.tar.bz2
4.Перед установкой дистрибутива СУБД PostgreSQL проверим наличие в системе необходимой локали (по умолчанию ru_RU.UTF-8):
5.Если система, с которой будет работать PostgreSQL, ставилась с языком отличным от русского, необходимо создать новые локали:
locale-gen ru_RU
update-locale LANG=ru_RU.UTF8
dpkg-reconfigure locales
6.Если необходимая локаль все же имеется, устанавливаем ее по умолчанию:
locale –a
nano /etc/default/locale
Заменяем содержимое на LANG=ru_RU.UTF-8
7.После перезагрузки, установим необходимые пакеты для нашей версии PostgreSQL:
apt-get install libxslt1.1 ssl-cert
8.Версия PostgreSQL пакета 9.4.2-1.1C связана с пакетом libicu версии libicu48. В репозитории нужной версии уже нет, ее можно скачать;
9.Скачиваем и помещаем в каталог, где хранятся скачанные файлы для PostgreSQL;
10.Перейдя в каталог с файлами PostgreSQL, производим установку, последовательно набирая следующие команды:
cd <Путь к папке с файлами>
dpkg -i libicu48_4.8.1.1-3ubuntu0.6_amd64.deb
dpkg -i libpq5_9.4.2-1.1C_amd64.deb
dpkg -i postgresql-client-common_154.1.1C_all.deb
dpkg -i postgresql-common_154.1.1C_all.deb
dpkg -i postgresql-client-9.4_9.4.2-1.1C_amd64.deb
dpkg -i postgresql-9.4_9.4.2-1.1C_amd64.deb
dpkg -i postgresql-contrib-9.4_9.4.2-1.1C_amd64.deb
11.Готово. Дистрибутив СУБД PostgreSQL установлен.
Для установки сервера необходимо выполнить подряд следующие команды:
sudo sh -c 'echo "deb http:// 1c.postgrespro.ru/deb/ $(lsb_release -cs) main" > /etc/apt/sources.list.d/postgrespro-1c.list'
wget --quiet -O - http:// 1c.postgrespro.ru/keys/GPG-KEY-POSTGRESPRO-1C-92 | sudo apt-key add - && sudo apt-get update
sudo apt-get install postgresql-pro-1c-9.4
Для доступа к серверу редактируем параметры в файле pg_hba.conf
сd <Путь до каталога pg_hba.conf>
cp pg_hba.conf pg_hba.conf.old
bash -c "echo 'local all postgres trust' > pg_hba.conf"
bash -c "echo 'host all all all md5' >> pg_hba.conf"
Сам файл имеет следующую структуру:
Файл хорошо документирован, но на английском языке. Кратко рассмотрим основные параметры:
TYPE
METHOD
Более подробную и развернутую информацию можно посмотреть в документации к продукту PostgreSQL.
Далее необходимо запустить сервер:
root@NODE2:/home/asd# service --status-all |grep postgres
[ - ] postgresql
root@NODE2:/home/asd# service postgresql start
root@NODE2:/home/asd# service --status-all |grep postgres
[ + ] postgresql
После окончания основной установки, необходимо настроить конфигурационный файл сервера postgresql.conf, согласно специфики работы PostgreSQL, сервера 1С и конфигурации сервера Ubuntu.
Устанавливаем последние обновления для SQL Sever.
Операционная система резервирует место и забивает его нулями, что занимает достаточно много времени при следующих событиях:
Решается данная проблема добавлением роли (под которой запущен сервер) к пункту локальной политики безопасности «Выполнение задач по обслуживанию томов».
При возможности необходимо разнести базу TempDB (особенно интенсивно она используется в режиме управляемых блокировок RCSI) и журнал транзакций на разные диски.
На сервере, где работает SQL сервер, режим энергосбережения должен быть установлен в «Высокая производительность».
По рекомендации Microsoft, разнести кластерные и некластерные индексы на разные диски, предварительно разместив некластерные индексы в отдельной файловой группе.
В папке с файлами БД не должно быть сжатия.
На вкладке «Память» для сервера устанавливаем минимальную планку в размере 50% от общего объема памяти. Максимальную рассчитываем по одной из формул:
Ограничиваем параметр DOP «Max degree of parallelism» и ставим его в значение «1».
Актуализируем статистику по расписанию. Начиная с SQL Server 2008, обновление статистики вызывает перекомпиляцию запросов и, соответственно, очищает процедурный кэш, поэтому отдельную процедуру по очистке процедурного кэша выполнять не надо.
Периодически проводим реиндексацию таблицы и дефрагментацию индексов.
Устанавливаем правильную политику резервирования. Если вам не надо восстанавливаться на последний момент времени к краху системы, а последние минут 5 или больше для вашего бизнеса не критичны, то установите модель восстановления в «Простая». Этим вы ускорите в разы скорость при записи. Главное, чтобы дифференцированный бекап успевал выполняться за указанное время.
Добиваемся улучшения при работе с TempDB при вводе/выводе посредством создания дополнительных файлов данных. Если логических процессоров меньше 8, рекомендуется создать файл данных для каждого логического процессора. Если логических процессоров больше 8, рекомендуется создать 8 файлов данных и, увеличивая на один при кратности 4, обязательно оценить нагрузку на TempDB.
Подпишитесь на рассылку и получайте самые свежие статьи 1 раз в месяц специально для вас