понедельник, 22 мая 2017 г.

Виртуальный образ p962.ova

Образ 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, система будет пытаться поместить в подкачку больше данных и сберечь память, при значениях близких к нулю, ядро не переносит данные на диск, если в этом нет крайней необходимости.

 Другой параметр, который влияет на количество используемой памяти - это 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
 
 
 
 
 

Комментариев нет:

Отправить комментарий