Образ virtualbox p962.ova .
За основу взято: Установка postgresql 9.6.2 на ubuntu 16.04.2 lxc
Без файла подкачи!
Предустановки 4 ядра, 8 Гб RAM, сетевой мост, 1000 GB динамический.
Ubuntu 16.04.2
При инсталляции установить ssh, samba
Название p962
$ sudo -i
# apt update -y
# apt upgrade -y
# apt install mc htop -y
# reboot
$ sudo -i
How To Add Swap Space on Ubuntu 16.04
Создание:
# fallocate -l 8G /swapfile
Проверка:
# ls -lh /swapfile
-rw-r--r-- 1 root root 8,0G май 13 13:14 /swapfile
Подключение:
# chmod 600 /swapfile
Проверка:
# ls -lh /swapfile
-rw------- 1 root root 8,0G май 13 13:14 /swapfile
# mkswap /swapfile
Setting up swapspace version 1, size = 8 GiB (8589930496 bytes)
без метки, UUID=870205f2-31db-4977-a89e-f3e283ff91f9
Старт:
# swapon /swapfile
Посмотрим:
# swapon --show
NAME TYPE SIZE USED PRIO
/swapfile file 8G 0B -1
# free -h
total used free shared buff/cache available
Память: 31G 145M 30G 9,7M 231M 30G
Подкачка: 8,0G 0B 8,0G
Сделать перманентным:
# cp /etc/fstab /etc/fstab.bak
# echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
Посмотреть:
# nano /etc/fstab
В конце файла:
/swapfile none swap sw 0 0
# cat /proc/sys/vm/swappiness
60
По умолчанию установлено значение 60. Если это значение ближе к 100, система будет пытаться поместить в подкачку больше данных и сберечь память, при значениях близких к нулю, ядро не переносит данные на диск, если в этом нет крайней необходимости.
# cat /proc/sys/vm/vfs_cache_pressure
100
В конец
vm.swappiness=0
vm.vfs_cache_pressure = 50
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
Сохранить.
Применить сразу:
# sysctl -p
Отключим службу ondemand
(для разгона cpu)
# cat /proc/cpuinfo | grep MHz
# systemctl status ondemand
# systemctl stop ondemand
# systemctl disable ondemand
# reboot
$ sudo -i
Проверки:
# cat /proc/cpuinfo | grep MHz
# hdparm -Tt /dev/sda1
# free -h
# cat /proc/sys/vm/swappiness
# cat /proc/sys/vm/vfs_cache_pressure
Подключение под debian 7/8, ubuntu 12.04/14.04/16.04:
# 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 | sudo apt-key add - && sudo apt-get update
# sudo apt-get install postgresql-pro-1c-9.6 -y
# systemctl start postgresql
# systemctl enable postgresql
# systemctl status postgresql
● postgresql.service - PostgreSQL RDBMS
Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
Active: active (exited) since Вт 2017-04-18 08:51:27 UTC; 1min 18s ago
Main PID: 1455 (code=exited, status=0/SUCCESS)
апр 18 08:51:27 p962_lxc systemd[1]: Starting PostgreSQL RDBMS...
апр 18 08:51:27 p962_lxc systemd[1]: Started PostgreSQL RDBMS.
# su - postgres
$ psql -l
$ psql
\q
Далее наберем
\password
введем два раза новый пароль pass
и наберем команду
\q
для выхода.
$ exit
Обратите внимание, что данный пароль устанавливается для внутреннего пользователя базы данных, а не для одноименного пользователя операционной системы Ubuntu.
Проверим, корректно ли запущен и работает наш сервер PostgreSQL который нам нужен для дальнейшего развертывания базы данных. Выполним
# netstat -atn|grep 0.0.0.0:54
Мы должны получить строку с номером порта (обычно 5432)/
# ps ax | grep postgres
# netstat -nlt
Установка 1С
# apt-get install imagemagick -y
Строка ниже срабатывает далеко не всегда
# apt-get install ttf-mscorefonts-installer -y
# fc-cache -f -v
------------------------------------------------------------
Альтернативно:
# apt-get install wget -y
# mkdir /home/ubuntu/Downloads
# wget http://ftp.de.debian.org/debian/pool/contrib/m/msttcorefonts/ttf-mscorefonts-installer_3.6_all.deb -P /home/ubuntu/Downloads
# apt install /home/ubuntu/Downloads/ttf-mscorefonts-installer_3.6_all.deb
# fc-cache -f -v
------------------------------------------------------------
# cd /home/user/8.3.10.2252/
# tar xvzf deb64.tar.gz
# dpkg -i 1c*.deb
# apt-get -f install
# apt autoremove -y
# cd ..
# rm -R /home/user/8.3.10.2252
# chown -R usr1cv8:grp1cv8 /opt/1C
Зададим пароль pass
# passwd usr1cv8
# service srv1cv83 start
# service srv1cv83 status
!!!# service srv1cv83 restart
netstat -atn|grep 0.0.0.0:15
netstat -atn|grep 0.0.0.0:54
PostgreSQL - реальная альтернатива для высоконагруженных систем на базе 1С
Файл настройки PostgreSQL
Регламентная очистка
Лучшие практики от Гилева
# nano /etc/postgresql/9.6/main/postgresql.conf
ssl = false
autovacuum = on
autovacuum_max_workers =3
Autovacuum_naptime = 20s
autovacuum_vacuum_scale_factor = 0.01
autovacuum_analyze_scale_factor = 0.05
online_analyze.enable = on
fsync = on
synchronous_commit = off
Configuration calculator for PostgreSQL
Считаем что памяти 8 Gb
За основу взято: Установка postgresql 9.6.2 на ubuntu 16.04.2 lxc
Без файла подкачи!
Предустановки 4 ядра, 8 Гб RAM, сетевой мост, 1000 GB динамический.
Ubuntu 16.04.2
При инсталляции установить ssh, samba
Название p962
$ sudo -i
# apt update -y
# apt upgrade -y
# apt install mc htop -y
# reboot
$ sudo -i
How To Add Swap Space on Ubuntu 16.04
Создание:
# fallocate -l 8G /swapfile
Проверка:
# ls -lh /swapfile
-rw-r--r-- 1 root root 8,0G май 13 13:14 /swapfile
Подключение:
# chmod 600 /swapfile
Проверка:
# ls -lh /swapfile
-rw------- 1 root root 8,0G май 13 13:14 /swapfile
# mkswap /swapfile
Setting up swapspace version 1, size = 8 GiB (8589930496 bytes)
без метки, UUID=870205f2-31db-4977-a89e-f3e283ff91f9
Старт:
# swapon /swapfile
Посмотрим:
# swapon --show
NAME TYPE SIZE USED PRIO
/swapfile file 8G 0B -1
# free -h
total used free shared buff/cache available
Память: 31G 145M 30G 9,7M 231M 30G
Подкачка: 8,0G 0B 8,0G
Сделать перманентным:
# cp /etc/fstab /etc/fstab.bak
# echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
Посмотреть:
# nano /etc/fstab
В конце файла:
/swapfile none swap sw 0 0
# cat /proc/sys/vm/swappiness
60
По умолчанию установлено значение 60. Если это значение ближе к 100, система будет пытаться поместить в подкачку больше данных и сберечь память, при значениях близких к нулю, ядро не переносит данные на диск, если в этом нет крайней необходимости.
Другой параметр, который влияет на количество используемой памяти - это vfs_cache_pressure.
Он указывает системе какое время нужно хранить открытые файлы в кэше
оперативной памяти. Значение 100 заставляет систему удалять такие файлы
очень быстро, 0 - держать их в памяти как можно дольше. Посмотрите
текущее состояние: # cat /proc/sys/vm/vfs_cache_pressure
100
# nano /etc/sysctl.confВ конец
vm.swappiness=0
vm.vfs_cache_pressure = 50
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
Сохранить.
Применить сразу:
# sysctl -p
Отключим службу ondemand
(для разгона cpu)
# cat /proc/cpuinfo | grep MHz
# systemctl status ondemand
# systemctl stop ondemand
# systemctl disable ondemand
# reboot
$ sudo -i
Проверки:
# cat /proc/cpuinfo | grep MHz
# hdparm -Tt /dev/sda1
# free -h
# cat /proc/sys/vm/swappiness
# cat /proc/sys/vm/vfs_cache_pressure
Подключение под debian 7/8, ubuntu 12.04/14.04/16.04:
# 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 | sudo apt-key add - && sudo apt-get update
# sudo apt-get install postgresql-pro-1c-9.6 -y
# systemctl start postgresql
# systemctl enable postgresql
# systemctl status postgresql
● postgresql.service - PostgreSQL RDBMS
Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
Active: active (exited) since Вт 2017-04-18 08:51:27 UTC; 1min 18s ago
Main PID: 1455 (code=exited, status=0/SUCCESS)
апр 18 08:51:27 p962_lxc systemd[1]: Starting PostgreSQL RDBMS...
апр 18 08:51:27 p962_lxc systemd[1]: Started PostgreSQL RDBMS.
# su - postgres
$ psql -l
$ psql
\q
Далее наберем
\password
введем два раза новый пароль pass
и наберем команду
\q
для выхода.
$ exit
Обратите внимание, что данный пароль устанавливается для внутреннего пользователя базы данных, а не для одноименного пользователя операционной системы Ubuntu.
Проверим, корректно ли запущен и работает наш сервер PostgreSQL который нам нужен для дальнейшего развертывания базы данных. Выполним
# netstat -atn|grep 0.0.0.0:54
Мы должны получить строку с номером порта (обычно 5432)/
# ps ax | grep postgres
# netstat -nlt
Активные соединения с интернетом (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:139 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:5432 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:445 0.0.0.0:* LISTEN
tcp6 0 0 :::139 :::* LISTEN
tcp6 0 0 :::22 :::* LISTEN
tcp6 0 0 :::5432 :::* LISTEN
tcp6 0 0 :::445 :::* LISTEN
Установка 1С
# apt-get install imagemagick -y
Строка ниже срабатывает далеко не всегда
# apt-get install ttf-mscorefonts-installer -y
# fc-cache -f -v
------------------------------------------------------------
Альтернативно:
# apt-get install wget -y
# mkdir /home/ubuntu/Downloads
# wget http://ftp.de.debian.org/debian/pool/contrib/m/msttcorefonts/ttf-mscorefonts-installer_3.6_all.deb -P /home/ubuntu/Downloads
# apt install /home/ubuntu/Downloads/ttf-mscorefonts-installer_3.6_all.deb
# fc-cache -f -v
------------------------------------------------------------
# cd /home/user/8.3.10.2252/
# tar xvzf deb64.tar.gz
# dpkg -i 1c*.deb
# apt-get -f install
# apt autoremove -y
# cd ..
# rm -R /home/user/8.3.10.2252
# chown -R usr1cv8:grp1cv8 /opt/1C
Зададим пароль pass
# passwd usr1cv8
# service srv1cv83 start
# service srv1cv83 status
!!!# service srv1cv83 restart
netstat -atn|grep 0.0.0.0:15
netstat -atn|grep 0.0.0.0:54
PostgreSQL - реальная альтернатива для высоконагруженных систем на базе 1С
Файл настройки PostgreSQL
Регламентная очистка
Лучшие практики от Гилева
# nano /etc/postgresql/9.6/main/postgresql.conf
ssl = false
autovacuum = on
autovacuum_max_workers =3
Autovacuum_naptime = 20s
autovacuum_vacuum_scale_factor = 0.01
autovacuum_analyze_scale_factor = 0.05
online_analyze.enable = on
fsync = on
synchronous_commit = off
Configuration calculator for PostgreSQL
Считаем что памяти 8 Gb
# nano /etc/postgresql/9.6/main/postgresql.conf
max_connections = 16
shared_buffers = 2GB
effective_cache_size = 6GB
work_mem = 128MB
maintenance_work_mem = 512MB
min_wal_size = 2GB
max_wal_size = 4GB
checkpoint_completion_target = 0.9
wal_buffers = 16MB
default_statistics_target = 100
# poweroff
Сохраняем
p962.ova .
------------------------------------------------------------------------------
Действия после восстановления виртуальной машины из образа p962.ova
в VirtualBox 1. Импортировать файл p962.ova 2. Перед запуском изменить настройки сети перевыбрать сетевой мост и имя адаптера.
3. Система -> материнская плата установить 16 GB.
4. Система -> процессор установить 8 ядер.
5. Запустить виртуальную машину.
6. Через консоль настроить сеть:
$ sudo nano /etc/network/interfaces Пример:
# This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). #source /etc/network/interfaces.d/* # The loopback network interface auto lo iface lo inet loopback # The primary network interface #auto enp0s3 #iface enp0s3 inet dhcp iface enp0s3 inet static address 192.168.0.77 netmask 255.255.255.0 gateway 192.168.0.1 dns-nameservers 192.168.0.1 8.8.8.8 auto enp0s3
Сохранить.
Перезагрузка
$ sudo reboot
Кластер 1с не создан.
После перезагрузки
Подключение 1с
Наш образ 8GB RAM VirtualBox на диске SSD Samsung 850 EVOТест Гилева
____________________________________________________________________________________
Автоматическая сборка мусора (Automatic Vacuuming) в PostgreSQL
24.1. Регламентная очистка
vacuumdb
Опыт обслуживания базы 1С в PostgreSQL.
Обслуживание баз 1С
Дополнение.
Для борьбы с падением производительности, рекомендуют ночью запускать vacuumdb
# su - postgres
$ psql -l
Список баз данных Имя | Владелец | Кодировка | LC_COLLATE | LC_CTYPE | Права доступа -----------+----------+-----------+-------------+-------------+----------------------- demo | postgres | UTF8 | ru_RU.UTF-8 | ru_RU.UTF-8 | postgres | postgres | UTF8 | ru_RU.UTF-8 | ru_RU.UTF-8 | template0 | postgres | UTF8 | ru_RU.UTF-8 | ru_RU.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres template1 | postgres | UTF8 | ru_RU.UTF-8 | ru_RU.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres (4 строки)
Запуск вручную
# su - postgres
Сборка мусора
$ vacuumdb --verbose --analyze --full --dbname=demo
переиндексация баз
$ reindexdb --all reindexdb: переиндексация базы данных "demo" reindexdb: переиндексация базы данных "postgres" reindexdb: переиндексация базы данных "template1" У вас есть новая почта в /var/mail/postgres
Можно настроить cron
Установка Postfix — агент передачи почты (MTA — mail transfer agent)Выбрать (только локальное использование)
# apt-get install postfix
!!!#
tail /var/mail/root
# su - postgres
$ crontab -e
Добавить в конец файла
# Запуск vacuumdb каждый день в 22.01
00 22 * * * rm /var/mail/postgres
01 22 * * * vacuumdb --verbose --analyze --full --dbname=demo
Сохранить.
#
tail /var/mail/
postgres
#
nano /var/mail/postgres
Посмотреть настройки autovacuum
# su - postgres
$ psql
postgres=# select name, setting, context from pg_settings where name like 'autovacuum%';
autovacuum = on Если Вы лучше чем PostgreSQL знаете когда следует производить сборку
мусора, то автоматику можно выключить. Хотя лучше её просто правильно настроить. С другой стороны сборка мусора оттягивает на себя ресурсы системы и если это не
допустимо, то её можно отложить на некоторое время. При настройке службы
автоматической сборки мусора и анализа следует понимать, что один из
зарезервированных с помощью superuser_reserved_connections слотов может оказаться
в нужный момент занят. log_autovacuum_min_duration = -1 Установка равная нулю регистрирует все действия
autovacuum. Минус один (по умолчанию) запрещает вывод в лог. Например, если вы
установите значение равное 250 мс, то все действия autovacuum и analyzes, которые
работают 250 мс и более, будут заноситься в журнал. Включение этого параметра может
быть полезно для отслеживания autovacuum. Этот параметр может быть установлен только
в файле postgresql.conf или в командной строке сервера. autovacuum_naptime = 20 Время в секундах через которое база данных проверяется на
необходимость в сборке мусора. По умолчанию это происходит раз в минуту. autovacuum_vacuum_threshold = 50 Порог на число удалённых и изменённых записей в любой
таблице по превышению которого происходит сборка мусора (VACUUM). autovacuum_analyze_threshold = 50 Порог на число вставленных, удалённых и изменённых
записей в любой таблице по превышению которого запускается процесс анализа (ANALYZE). autovacuum_vacuum_scale_factor = 0.01 Процент изменённых и удалённых записей
по отношению к таблице по превышению которого запускается сборка мусора. autovacuum_analyze_scale_factor = 0.05 То же, что и предыдущая переменная, но по
отношению к анализу.
Бэкап и восстановление базы 1С в бд postgresql, обслуживание базы
PostgreSQL backups. Effortless.
Глава 25. Резервное копирование и восстановление
Установим продвинутый архиватор (использует несколько ядер)
# apt-get -y install pigz
# nano /etc/postgresql/9.6/main/pg_hba.conf
меняеем строку # "local" is for Unix domain socket connections only #local all all peer
local all all trust
Сохранить.
# systemctl restart postgresql # su - postgres Backup базы с архивированием $ pg_dump demo | pigz > /tmp/demo.sql.gz Backup базы без архивирования $ pg_dump demo > /tmp/demo.sql Разархивирование # unpigz -c /tmp/demo.sql.gz > /tmp/demo.sql Восстановление в туже базу # su - postgres Убьем базу demo $ dropdb demo $ psql -l Создадим базу demo $ createdb --username postgres -T template0 demo $ psql -l Восстановим в базу demo $ psql demo < /tmp/demo.sql $ psql demo < /tmp/demo201705231625.sql
Как посмотреть размер базы?
# su - postgres
$ psql
postgres=# select pg_database_size('demo'); pg_database_size ------------------ 8046019076 (1 строка)
postgres=# SELECT pg_size_pretty( pg_database_size( 'demo' ) ); pg_size_pretty ---------------- 7673 MB (1 строка)
Многопоточный тест производительности 1с
Описание теста
пробросим hasp в virtualbox
Установка локального hasp (только локального)
# cd /home/user # dpkg --add-architecture i386 # apt-get update # apt-get install libc6:i386 # dpkg -i --force-architecture aksusbd_7.54-1_i386.deb # apt-get -f install # lsusb Bus 001 Device 003: ID 0529:0001 Aladdin Knowledge Systems HASP copy protection dongle # service aksusbd restart # /etc/init.d/aksusbd status С локальным hasp работает. Менеджера лицензий hasplm нет. # netstat -anp | grep hasp # nano /etc/postgresql/9.6/main/postgresql.conf Для теста изменить: max_connections = 160 Сохранить. # systemctl restart postgresql или # reboot
Грузим конфигурацию
Запускаем тест. Ниже результаты данного теста.
Эмпирическим путем получено число в 400-500 попугаев на поток
(не учитывая временные таблицы), при котором работа терпима.
Многопоточный тест производительности 1с - результаты
.
Таким образом видно, что данная конфигурация будет эффективно
работать для 8-ми нагруженных клиентов.
Все результаты:
.
Настроим postgreSQL для теста Гилева (уже стоит)
# nano /etc/postgresql/9.6/main/postgresql.conf
standard_conforming_strings = off
Комментариев нет:
Отправить комментарий