четверг, 31 января 2019 г.

Как настроить синхронизацию времени на Ubuntu 16.04

Как настроить синхронизацию времени на Ubuntu 16.04
Настройка службы синхронизации времени systemd-timesyncd в Debian GNU/Linux 9 (Stretch)
How To Set Up Time Synchronization on Ubuntu 16.04

$ timedatectl
      Local time: Пт 2019-02-01 17:30:48 MSK
  Universal time: Пт 2019-02-01 14:30:48 UTC
        RTC time: Пт 2019-02-01 14:30:49
       Time zone: Europe/Moscow (MSK, +0300)
 Network time on: yes
NTP synchronized: no
 RTC in local TZ: no

После обновления
$ timedatectl
      Local time: Пт 2019-02-01 17:37:37 MSK
  Universal time: Пт 2019-02-01 14:37:37 UTC
        RTC time: Пт 2019-02-01 14:37:38
       Time zone: Europe/Moscow (MSK, +0300)
 Network time on: yes
NTP synchronized: yes
 RTC in local TZ: no

Вывод:
В последних обновления ubuntu 16.04 синхронизация ntp
работает автоматом.
Но нужно проверить.


 

Виртуальная машина ubuntu 16.04.5 PostgreSQL версия 10.5-11.1C 1С 8.3.13.1690

В данной статье опишем установку сервера СУБД PostgreSQL версия 10.5-11.1C на ubuntu 16.04.5 на виртуальную машину.
Нам потребуется (все 64 бит):
1. ubuntu 16.04.5
2. 1С берем на сайте 8.3.13.1690 при наличии договора ИТС
3. PostgreSQL версия 10.5-11.1C дистрибутивдополнительные модули  при наличии договора ИТС 
4. Драйверы hasp берем etersoft

1. Устанавливаем ubuntu 16.04.5 без swap файла, т.е. размечаем вручную весь диск ext4 root.
RAM (32GB)

Настройки ubuntu пользователь (привязка в скриптах) user пароль 12345, имя компьютера test, позже мы его сменим скриптом, как и ip адрес.

После установки, Ctrl +Alt + T (окно терминала)
$ sudo apt update -y
$ sudo apt upgrade -y
$ sudo apt install mc ssh samba -y

Возможно sudo apt upgrade -y не пройдет из за блокировки, тогда sudo reboot и повторите с начала.

$ lsusb
Bus 001 Device 004: ID 0529:0001 Aladdin Knowledge Systems HASP copy protection dongle
Bus 001 Device 003: ID 0529:0001 Aladdin Knowledge Systems HASP copy protection dongle
Bus 001 Device 002: ID 80ee:0021 VirtualBox USB Tablet
Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

2. Настройка сети скриптом.
Узнаем ip и имя адаптера
 $ ip a
2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP     inet 192.168.0.43/24 brd 192.168.0.255 scope global enp1s0

$ nano network.sh

Скопируем из буфера следующий скрипт, в котором Вам нужно исправить ip, адрес шлюза и имя адаптера в соответствии со своей сетью:

#!/bin/bash
# настройка ip и hostname
#----------------------------------------------------------------------
_hostname="u1604"
# virtualbox
_iface="enp0s3"
_address="192.168.0.239"
_gateway="192.168.0.1"
_netmask="255.255.255.0"
_nameserver="8.8.8.8"
#----------------------------------------------------------------------
# отключим сетевой менеджер для ubuntu desktop#sudo systemctl stop NetworkManager.service
#sudo systemctl disable NetworkManager.service
# настроим статический ip
sudo cat > /tmp/interfaces <<EOF
# 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 $_iface
#iface $_iface inet dhcp
iface $_iface inet static
address $_address
netmask $_netmask
gateway $_gateway
dns-nameservers $_nameserver
auto $_iface
EOF
sudo cp /tmp/interfaces /etc/network
#sudo rm /etc/resolv.conf
#sudo /bin/su -c "echo 'nameserver $_nameserver' > /etc/resolv.conf"
# изменим hostname и ip
sudo cat > /tmp/hosts <<EOF
127.0.0.1       localhost
$_address       $_hostname
EOF
sudo cp /tmp/hosts /etc
# изменим hostname
sudo hostname $_hostname
sudo /bin/su -c "echo $_hostname > /etc/hostname"
# отключим ipv6
sudo /bin/su -c "echo 'net.ipv6.conf.all.disable_ipv6 = 1' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'net.ipv6.conf.default.disable_ipv6 = 1' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'net.ipv6.conf.lo.disable_ipv6 = 1' >> /etc/sysctl.conf"
#sudo /bin/su -c "echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf"
#тюнинг postgresql
#add a swap file to an Ubuntu 16.04
sudo fallocate -l 1G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
sudo cp /etc/fstab /etc/fstab.bak
sudo echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
sudo /bin/su -c "echo 'vm.swappiness=1' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'kernel.sched_migration_cost_ns = 5000000' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'kernel.sched_autogroup_enabled = 0' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'vm.dirty_background_bytes = 67108864' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'vm.dirty_bytes = 536870912' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'vm.zone_reclaim_mode = 0' >> /etc/sysctl.conf"
sudo sysctl -p
# перезагрузим сеть
sudo systemctl restart networking.service
#sudo systemctl start networking.service
#sudo systemctl enable networking.service
# Настройка sudo journalctl -b sudo journalctl -b -1 sudo journalctl --list-boots
sudo sed -i 's/#Storage=auto/Storage=persistent/' /etc/systemd/journald.conf
# Отключение уведомлений службы Apport (/var/crash)
sudo sed -i 's/enabled=1/enabled=0/' /etc/default/apport
# Отключим службу ondemand# (для разгона cpu)
# cat /proc/cpuinfo | grep MHz
# systemctl status ondemand
sudo systemctl stop ondemand
sudo systemctl disable ondemand
# shutdown -r now

Сохраним файл network.sh

------------------------------------------
Сделаем исполняем
$ chmod +x network.sh

Выполним:

$  sudo sh network.sh
------------------------------------------

Перезагрузимся

$ sudo reboot

Проверка ntp:
#$ ntpq -p

Настройка Ubuntu для работы с ИБП от APC

Установка СУБД PostgreSQL версия 10.5-11.1С

После перезагрузки по сети можно подключиться MobaXterm
к нашей виртуальной машине (по ip или или имени )  загрузить файлы установки:
$ mkdir /home/user/test
В папку /test положить файлы:

postgresql_10.5_11.1C_amd64_deb.tar.bz2 
postgresql_10.5_11.1C_amd64_addon_deb.tar.bz2

wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main" >> /etc/apt/sources.list.d/postgresql.list'
sudo apt update -y
sudo apt-get install postgresql-common libtcl8.6 -y
dpkg -l | grep postgres | awk -F' ' '{print $2}' | sudo xargs apt-mark hold
#pgdg-keyring помечен как зафиксированный.
#postgresql-client-common помечен как зафиксированный.
#postgresql-common помечен как зафиксированный.
mkdir -p /tmp/post
cp /home/user/test/postgresql_10.5_11.1C_amd64_deb.tar.bz2 /tmp/post/
cp /home/user/test/postgresql_10.5_11.1C_amd64_addon_deb.tar.bz2 /tmp/post/
cd /tmp/post
tar -xvf postgresql_10.5_11.1C_amd64_deb.tar.bz2
cd  postgresql-10.5-11.1C_amd64_deb
#(libpq5_10.5-11.1C_amd64.deb  postgresql-10_10.5-11.1C_amd64.deb  postgresql-client-10_10.5-11.1C_amd64.deb)
sudo dpkg -i *.deb
cd /tmp/post/
tar -xvf postgresql_10.5_11.1C_amd64_addon_deb.tar.bz2
cd postgresql-10.5-11.1C_amd64_addon_deb
sudo dpkg -i *.deb
dpkg -l | grep 10.5-11.1C | awk -F' ' '{print $2}' | sudo xargs apt-mark hold
#libecpg-compat3 помечен как зафиксированный.
#libecpg-dev помечен как зафиксированный.
#libecpg6 помечен как зафиксированный.
#libpgtypes3 помечен как зафиксированный.
#libpq-dev помечен как зафиксированный.
#libpq5 помечен как зафиксированный.
#postgresql-10 помечен как зафиксированный.
#postgresql-10-dbg помечен как зафиксированный.
#postgresql-client-10 помечен как зафиксированный.
#postgresql-doc-10 помечен как зафиксированный.
#postgresql-plperl-10 помечен как зафиксированный.
#postgresql-plpython-10 помечен как зафиксированный.
#postgresql-plpython3-10 помечен как зафиксированный.
#postgresql-pltcl-10 помечен как зафиксированный.
#postgresql-server-dev-10 помечен как зафиксированный.

sudo -u postgres psql -U postgres -c "alter user postgres with password 'pass';"
sudo cp /etc/postgresql/10/main/postgresql.conf /etc/postgresql/10/main/postgresql.conf.bak

#Делаем проверки
sudo systemctl status postgresql.service
ss -tunpl | grep 5432
tcp    LISTEN     0      128       *:5432                  *:*
tcp    LISTEN     0      128      :::5432                 :::*
$ ps aux | grep postgres | grep -- -D
postgres  4914  0.0  0.1 320972 28864 ?        S    08:37   0:00 /usr/lib/postgresql/10/bin/postgres -D /var/lib/postgresql/10/main -c config_file=/etc/postgresql/10/main/postgresql.conf
-------------------------------------------------------------------------------------------------------

Установка 1с

# установка 1с
$ mkdir -p /tmp/1ctmp
$ cd /tmp/1ctmp
$ sudo apt install imagemagick -y
#$sudo apt install -y unixodbc libgsf-1-114 libglib2.0
$ sudo apt install libfreetype6 libgsf-1-common unixodbc glib2.0
#ubuntu
$ sudo  apt install -y xfonts-utils cabextract
$ sudo apt install ttf-mscorefonts-installer -y
$  ls /home/user/test/
$ cp /home/user/test/deb64_8_3_13_1690.tar.gz /tmp/1ctmp
$ tar xvzf deb64_8_3_13_1690.tar.gz
$ sudo dpkg -i 1c-enterprise83-common_8.3.13-1690_amd64.deb
$ sudo dpkg -i 1c-enterprise83-server_8.3.13-1690_amd64.deb
#$ sudo apt -f -y install
$ sudo chown -R usr1cv8:grp1cv8 /opt/1C
$ sudo echo -e "pass\npass\n" | sudo passwd usr1cv8
$ sudo service srv1cv83 start
$ sudo service srv1cv83 status

$ sudo  apt install -y libc6-i386
$ mkdir /tmp/hasp
$ cd /tmp/hasp
$ wget http://download.etersoft.ru/pub/Etersoft/HASP/last/x86_64/Ubuntu/16.04/haspd-modules_7.60-eter1ubuntu_amd64.deb
$ wget http://download.etersoft.ru/pub/Etersoft/HASP/last/x86_64/Ubuntu/16.04/haspd_7.60-eter1ubuntu_amd64.deb
$ sudo dpkg -i *.deb
#$ sudo apt-get install -f -y
$ sudo service haspd start
$ sudo service haspd status
$ sudo reboot

Не встал скриптом imagemagick?
Без строчки ниже будет ругаться при входе в 1с
$ sudo apt-get install imagemagick  -y

$ sudo reboot

Зашарить папку по сети

$ sudo mkdir /share/
$ sudo chmod -R 777 /share/
$ sudo chown -R root:sambashare /share/
$ sudo cp -b -f /etc/samba/smb.conf /etc/samba/smb.conf.bak
$ sudo nano /etc/samba/smb.conf

Добавить в конец

[files]
path = /share/
comment = No comment
read only = no
available = yes
browseable = yes
writable = yes
guest ok = yes
public = yes
printable = no
locking = no
strict locking = no

Сохранить
Перезагрузить службу

$ sudo service smbd restart

Настройка технологического журнала

$ sudo mkdir -p /home/usr1cv8/.1cv8/1C/1cv8/conf/

S sudo nano /home/usr1cv8/.1cv8/1C/1cv8/conf/logcfg.xml

<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://v8.1c.ru/v8/tech-log">
        <log location="/home/usr1cv8/log" history="96">
                <event>
                        <eq property="name" value="DBPOSTGRS"/>
                </event>
                <event>
                        <eq property="name" value="SDBL"/>
                </event>
                <event>
                        <eq property="name" value="EXCP"/>
                </event>
                <property name="all"/>
        </log>
</config>
Сохранить.

Другой вариант:

<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://v8.1c.ru/v8/tech-log">
        <log location="/home/usr1cv8/log" history="96">
                <event>
                        <ne property="name" value="DB2" />
                        <ne property="name" value="DBMSSQL" />
                        <ne property="name" value="DBMSSQLCONN" />
                        <ne property="name" value="DBORACLE" />
                        <ne property="name" value="DBPOSTGRS" />
                        <ne property="name" value="DBV8DBENG" />
                        <ne property="name" value="SDBL" />
                        <ne property="name" value="MEM" />
                        <ne property="name" value="TLOCK" />
                        <ne property="name" value="SRVC" />
                        <ne property="name" value="CALL" />
                        <ne property="name" value="CONN" />
                        <ne property="name" value="SCALL" />
                        <ne property="name" value="SCOM" />
                        <ne property="name" value="VRSREQUEST" />
                        <ne property="name" value="VRSRESPONSE" />
                </event>
                <property name="all" />
        </log>
</config>

Настройка дампов

$ sudo mkdir -p /home/usr1cv8/dumps/
$ sudo mkdir -p /home/usr1cv8/log/
$ sudo chown -R usr1cv8:grp1cv8 /home/usr1cv8/
$ echo 'usr1cv8 soft core unlimited' | sudo tee -a /etc/security/limits.conf
$ echo 'usr1cv8 hard core unlimited' | sudo tee -a /etc/security/limits.conf
$ echo 'kernel.core_pattern=/home/usr1cv8/dumps/core.%e.%p ' | sudo tee -a /etc/sysctl.conf
$ sudo sysctl -p

$ sudo usermod -aG sudo usr1cv8

Для автоматического создания бекапов:
Зададим папку, если не делали раньше,
$ mkdir /home/user/backup
#$ sudo chmod -R 777 /home/user/test/backup
#$ sudo chown -R user:user /home/user/test/backup

$ sudo cp /etc/fstab /etc/fstab.bak
$  ls -l /dev/disk/by-uuid
итого 0
lrwxrwxrwx 1 root root 10 янв 26 16:26 249a8fb4-196c-497b-962d-36a4fa994afd -> ../../sda1
lrwxrwxrwx 1 root root 10 янв 26 16:26 cf0301e7-62cb-4f3c-b6f1-3e126a8a675a -> ../../sdb1

$ sudo nano /etc/fstab


Добавить/исправить
UUID=cf0301e7-62cb-4f3c-b6f1-3e126a8a675a /home/user/backup ext4 defaults 0 2
Сохранить.

$ sudo reboot

Можно подключать базу 1С postgres пароль pass
(вместо test имя своего сервера)



После загрузки базы:
$ sudo /bin/su postgres -c "/usr/bin/vacuumdb --analyze --full --quiet --username postgres --dbname=demo"

Для 32 Gb RAM иначе не запустится!!!
Из 32 Gb выделяем 16 PostgreSQL

sudo nano /etc/postgresql/10/main/postgresql.conf

Добавить в конец:


# DB Version: 10
# OS Type: linux
# DB Type: oltp
# Total Memory (RAM): 16 GB
# Data Storage: ssd

max_connections = 1000
shared_buffers = 4GB
temp_buffers = 256MB
work_mem = 64MB
effective_cache_size = 12GB
maintenance_work_mem = 1GB
wal_buffers = 16MB
min_wal_size = 2GB
max_wal_size = 4GB

default_statistics_target = 100
effective_io_concurrency = 2
random_page_cost = 1.1
autovacuum = on
autovacuum_max_workers = 4
autovacuum_naptime = 20s
bgwriter_delay = 20ms
bgwriter_lru_multiplier = 4.0
bgwriter_lru_maxpages = 400
synchronous_commit = off
checkpoint_completion_target = 0.9
#min_wal_size = 2GB
#max_wal_size = 4GB
ssl = off
fsync = on
commit_delay = 1000
commit_siblings = 5
row_security = off
max_files_per_process = 1000
standard_conforming_strings = off
escape_string_warning = off
max_locks_per_transaction = 256
#log_min_duration_statement = 0
log_line_prefix = '%t [%p]: [%l-1] user=%u,db=%d,client=%h '
log_checkpoints = on
log_connections = on
log_disconnections = on
log_lock_waits = on
log_temp_files = 0
#log_autovacuum_min_duration = 0
lc_messages='C'
#log_duration = on
#log_statement = all
log_destination = stderr
plantuner.fix_empty_table = 'on'
online_analyze.table_type = 'temporary'
online_analyze.verbose = 'off'

Сохранить.


$ sudo systemctl restart postgresql.service
$ sudo systemctl restart srv1cv83.service 

Тестирование.

Тестовая база.

Документ начисление зарплаты и взносов за август:
Очистить.


1. Без настройки postgresql.conf и без тж
Заполнить: 172 с
Провести: 130 с

2. с настройкой postgresql.conf и без тж
Заполнить: 158 с
Провести: 132 с

3. с настройкой postgresql.conf и без тж
ошибка 30166230 закрыта с рекомендацией отключения отладки запросов
Так не получилось.
$ sudo su - postgres
$ psql

postgres=# alter system set debug_enable_cheapest_group_by to off;
postgres=# alter system set debug_enable_group_by_match_order_by to off;
postgres=# alter system set debug_group_by_reorder_by_pathkeys to off;

postgres=# SHOW debug_enable_cheapest_group_by;
postgres=# SHOW debug_enable_group_by_match_order_by;
postgres=# SHOW debug_group_by_reorder_by_pathkeys;

Так сработало:

sudo nano /etc/postgresql/10/main/postgresql.conf

Добавить в конец:
debug_enable_cheapest_group_by = 'off'
debug_enable_group_by_match_order_by = 'off'
debug_group_by_reorder_by_pathkeys = 'off'

Сохранить.

Заполнить: 144 с
Провести: 132 с






.

воскресенье, 27 января 2019 г.

Оценить размер таблиц в файловой базе 1С используя postgresql

Finding the total size of your biggest tables

Посмотреть размер базы: 
Самый простой способ: 
postgres=# \l+ 
   
Другой способ: 
 
postgres=# SELECT pg_database.datname, pg_size_pretty(pg_database_size(pg_database.datname)) AS size
FROM pg_database;
 
  datname  |  size
-----------+---------
 postgres  | 7301 kB
 demo      | 2752 MB
 template1 | 7301 kB
 template0 | 7169 kB
 demo1     | 9021 kB
 example   | 7484 MB
(6 rows) 



В файловых базах 1С есть ограничения на внутренний размер файла

Загрузить файловую базу в postgresql например demo

$ sudo su postgres
$ psql
postgres=# \c demo
Вы подключены к базе данных "demo" как пользователь "postgres".
demo=#
Выполнить запрос:

SELECT nspname || '.' || relname AS "relation",
    pg_size_pretty(pg_total_relation_size(C.oid)) AS "total_size"
  FROM pg_class C
  LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace)
  WHERE nspname NOT IN ('pg_catalog', 'information_schema')
    AND C.relkind <> 'i'
    AND nspname !~ '^pg_toast'
  ORDER BY pg_total_relation_size(C.oid) DESC
  LIMIT 20;


 

суббота, 26 января 2019 г.

test Тестовый сервер ubuntu 16.04.5 PostgreSQL версия 9.6.7-1.1C 1С > 8.3.10.2252

При установке встретился с багами:
Ureadahead сообщает об ошибках относительного пути в выходных данных journalctl
With IPv6 disabled, openssh will not forward X connections
journalctl: open database /etc/aliases.db: No such file or directory

В данной статье опишем установку сервера СУБД PostgreSQL версия 9.6.7-1.1C на ubuntu 16.04.5 на физическое железо.
Нам потребуется (все 64 бит):
1. ubuntu 16.04.5
2. 1С берем на сайте 8.3.13.1690 при наличии договора ИТС
3. PostgreSQL версия 9.6.7.1-1C дистрибутивдополнительные модули  при наличии договора ИТС 
4. Драйверы hasp берем etersoft

1. Устанавливаем ubuntu 16.04.5 без swap файла, т.е. размечаем вручную весь диск ext4 root.
RAM (32GB)

Настройки ubuntu пользователь (привязка в скриптах) user пароль 12345, имя компьютера test, позже мы его сменим скриптом, как и ip адрес.

После установки, Ctrl +Alt + T (окно терминала)
$ sudo apt update -y
$ sudo apt upgrade -y
$ sudo apt install mc ssh samba -y

Возможно sudo apt upgrade -y не пройдет из за блокировки, тогда sudo reboot и повторите с начала.

$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 005: ID 051d:0002 American Power Conversion Uninterruptible Power Supply
Bus 001 Device 004: ID 0529:0001 Aladdin Knowledge Systems HASP copy protection dongle
Bus 001 Device 003: ID 045e:078c Microsoft Corp.
Bus 001 Device 002: ID 046d:c077 Logitech, Inc. M105 Optical Mouse
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

2. Настройка сети скриптом.
Узнаем ip и имя адаптера
 $ ip a
2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP     inet 192.168.0.43/24 brd 192.168.0.255 scope global enp1s0

$ nano network.sh

Скопируем из буфера следующий скрипт, в котором Вам нужно исправить ip, адрес шлюза и имя адаптера в соответствии со своей сетью:

#!/bin/bash
# настройка ip и hostname
#----------------------------------------------------------------------
_hostname="test"
# real computer
_iface="enp1s0" _address="192.168.0.43"
_gateway="192.168.0.1"
_netmask="255.255.255.0"
_nameserver="8.8.8.8"
#----------------------------------------------------------------------
# отключим сетевой менеджер для ubuntu desktop#sudo systemctl stop NetworkManager.service
#sudo systemctl disable NetworkManager.service
# настроим статический ip
sudo cat > /tmp/interfaces <<EOF
# 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 $_iface
#iface $_iface inet dhcp
iface $_iface inet static
address $_address
netmask $_netmask
gateway $_gateway
dns-nameservers $_nameserver
auto $_iface
EOF
sudo cp /tmp/interfaces /etc/network
#sudo rm /etc/resolv.conf
#sudo /bin/su -c "echo 'nameserver $_nameserver' > /etc/resolv.conf"
# изменим hostname и ip
sudo cat > /tmp/hosts <<EOF
127.0.0.1       localhost
$_address       $_hostname
EOF
sudo cp /tmp/hosts /etc
# изменим hostname
sudo hostname $_hostname
sudo /bin/su -c "echo $_hostname > /etc/hostname"
# отключим ipv6
sudo /bin/su -c "echo 'net.ipv6.conf.all.disable_ipv6 = 1' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'net.ipv6.conf.default.disable_ipv6 = 1' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'net.ipv6.conf.lo.disable_ipv6 = 1' >> /etc/sysctl.conf"
#sudo /bin/su -c "echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf"
#тюнинг postgresql
#add a swap file to an Ubuntu 16.04
sudo fallocate -l 1G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
sudo cp /etc/fstab /etc/fstab.bak
sudo echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
sudo /bin/su -c "echo 'vm.swappiness=1' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'kernel.sched_migration_cost_ns = 5000000' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'kernel.sched_autogroup_enabled = 0' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'vm.dirty_background_bytes = 67108864' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'vm.dirty_bytes = 536870912' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'vm.zone_reclaim_mode = 0' >> /etc/sysctl.conf"
sudo sysctl -p
# перезагрузим сеть
sudo systemctl restart networking.service
#sudo systemctl start networking.service
#sudo systemctl enable networking.service
# Настройка sudo journalctl -b sudo journalctl -b -1 sudo journalctl --list-boots
sudo sed -i 's/#Storage=auto/Storage=persistent/' /etc/systemd/journald.conf
# Отключение уведомлений службы Apport (/var/crash)
sudo sed -i 's/enabled=1/enabled=0/' /etc/default/apport
# Отключим службу ondemand# (для разгона cpu)
# cat /proc/cpuinfo | grep MHz
# systemctl status ondemand
sudo systemctl stop ondemand
sudo systemctl disable ondemand
# shutdown -r now
Сохраним файл network.sh

------------------------------------------
Сделаем исполняем
$ chmod +x network.sh

Выполним:

Выполним:
$ sudo ./network.sh
или
$  sudo sh network.sh

Перезагрузимся

$ sudo reboot
-------------------------------------------------------------------------------------------------------

Установим диск для backup


$ sudo cp /etc/fstab /etc/fstab.bak
$  ls -l /dev/disk/by-uuid
итого 0
lrwxrwxrwx 1 root root 10 янв 26 16:26 249a8fb4-196c-497b-962d-36a4fa994afd -> ../../sda1
lrwxrwxrwx 1 root root 10 янв 26 16:26 cf0301e7-62cb-4f3c-b6f1-3e126a8a675a -> ../../sdb1

$ sudo nano /etc/fstab


Добавить/исправить
UUID=cf0301e7-62cb-4f3c-b6f1-3e126a8a675a /backup/copy ext4 defaults 0 2
Сохранить.

$ sudo reboot

После создания пользователя postgres
$ sudo chown -R postgres:postgres /backup
#$ sudo chmod -R 777 /backup


-------------------------------------------------------------------------------------------------------
Настройка Ubuntu для работы с ИБП от APC
-------------------------------------------------------------------------------------------------------
Настройка Postfix для отправки почты через yandex
-------------------------------------------------------------------------------------------------------


Установка СУБД PostgreSQL версия 9.6.7-1.1С

-------------------------------------------------------------------------------------------------------

После перезагрузки по сети можно подключиться MobaXterm
к нашей виртуальной машине (по ip или или имени )  загрузить файлы установки:
$ mkdir /home/user/test
В папку /test положить файлы:

postgresql_9.6.7_1.1C_amd64_deb.tar.bz2
postgresql_9.6.7_1.1C_amd64_addon_deb.tar.bz2

$ sudo apt-get install libicu55 postgresql-common  libtcl8.6 -y
$ dpkg -l | grep postgres
$ dpkg -l | grep postgres | awk -F' ' '{print $2}' | sudo xargs apt-mark hold
$ mkdir -p /tmp/post$ cp /home/user/test/postgresql_9.6.7_1.1C_amd64_deb.tar.bz2 /tmp/post/
$ cp /home/user/test/postgresql_9.6.7_1.1C_amd64_addon_deb.tar.bz2 /tmp/post/
$ cd /tmp/post
$ tar -xvf postgresql_9.6.7_1.1C_amd64_deb.tar.bz2
$ cd postgresql-9.6.7-1.1C_amd64_deb
$ sudo dpkg -i *.deb
$ cd /tmp/post/
$ tar -xvf postgresql_9.6.7_1.1C_amd64_addon_deb.tar.bz2
$ cd postgresql-9.6.7-1.1C_amd64_addon_deb
$ sudo dpkg -i *.deb
#$ sudo apt install -f
$ dpkg -l | grep 9.6.7-1.1C 
$ dpkg -l | grep 9.6.7-1.1C | awk -F' ' '{print $2}' | sudo xargs apt-mark hold
$ sudo -u postgres psql -U postgres -c "alter user postgres with password 'pass';"
$ sudo cp /etc/postgresql/9.6/main/postgresql.conf /etc/postgresql/9.6/main/postgresql.conf.bak
------
#Делаем проверки
$ sudo systemctl status postgresql.service
$ ss -tunpl | grep 5432
tcp    LISTEN     0      128       *:5432                  *:*
tcp    LISTEN     0      128      :::5432                 :::*
$ ps aux | grep postgres | grep -- -D
postgres  5583  0.0  0.0 315616 27400 ?        S    17:23   0:00 /usr/lib/postgresql/9.6/bin/postgres -D /var/lib/postgresql/9.6/main -c config_file=/etc/postgresql/9.6/main/postgresql.conf
-------------------------------------------------------------------------------------------------------

pg_probackup настройка автономного резервного копирования

 

$ sudo chown -R postgres:postgres /backup
#$ sudo chmod -R 777 /backup

$ sudo pg_dropcluster --stop 9.6 main
$ sudo pg_createcluster --locale ru_RU.UTF-8 9.6 main --  --data-checksums
$ sudo systemctl restart postgresql
$ ss -tunpl | grep 5432
$ sudo -u postgres psql -U postgres -c "show data_checksums;"
$ sudo -u postgres psql -U postgres -c "alter user postgres with password 'pass';"
$ sudo su -c "echo 'deb [arch=amd64] http://repo.postgrespro.ru/pg_probackup/deb/ $(lsb_release -cs) main-$(lsb_release -cs)' > /etc/apt/sources.list.d/pg_probackup.list"
$ sudo su -c "wget -O - http://repo.postgrespro.ru/pg_probackup/keys/GPG-KEY-PG_PROBACKUP | apt-key add -"
$ sudo apt-get update
$ sudo apt-get install pg-probackup-9.6


#Инициализация каталога резервных копий /backup - папка в корне
#$ sudo mkdir /backup 
#$ sudo chown -R postgres:postgres /backup
#$ sudo chmod -R 777 /backup
#$ sudo /bin/su postgres -c "pg_probackup-9.6 init -B /backup"


Инициализация каталога резервных копий /backup - диск
у нас /backup - диск ниже не пойдет:
#$ sudo /bin/su postgres -c "pg_probackup-9.6 init -B /backup"
инициализируем вручную:
$ sudo /bin/su postgres -c "mkdir -p /backup/backups"
$ sudo /bin/su postgres -c "mkdir -p /backup/wal"



$ sudo /bin/su postgres -c "pg_probackup-9.6 add-instance -B /backup -D /var/lib/postgresql/9.6/main --instance main"
INFO: Instance 'main' successfully inited


Настройка кластера баз данных:

sudo nano /etc/postgresql/9.6/main/pg_hba.conf
Раскомментировать:

local   replication     backup                                peer
host    replication     backup        127.0.0.1/32            md5

Сохранить.

Для 32 Gb RAM иначе не запустится!!!
Из 32 Gb выделяем 16 PostgreSQL

sudo cp  /etc/postgresql/9.6/main/postgresql.conf /etc/postgresql/9.6/main/postgresql.conf.bak 
sudo nano  /etc/postgresql/9.6/main/postgresql.conf

Добавить в конец:

#
# Для настройки pg_probackup-9.6
max_wal_senders = 10
wal_level = replica
# Для настройки архивного резервного копирования разкомментировать:
# archive_mode = on
# archive_command = 'pg_probackup-10 archive-push -B /backup --instance main --wal-file-path %p --wal-file-name %f'
#  Ниже настройки для 1с
# Total Memory (RAM): 16 GB
# Data Storage: ssd

max_connections = 1000
shared_buffers = 4GB
temp_buffers = 256MB
work_mem = 64MB
effective_cache_size = 12GB
maintenance_work_mem = 1GB
wal_buffers = 16MB
min_wal_size = 2GB
max_wal_size = 4GB

default_statistics_target = 100
effective_io_concurrency = 2
random_page_cost = 1.1
autovacuum = on
autovacuum_max_workers = 4
autovacuum_naptime = 20s
bgwriter_delay = 20ms
bgwriter_lru_multiplier = 4.0
bgwriter_lru_maxpages = 400
synchronous_commit = off
checkpoint_completion_target = 0.9
ssl = offfsync = on
commit_delay = 1000
commit_siblings = 5
row_security = off
max_files_per_process = 1000
standard_conforming_strings = off
escape_string_warning = off
max_locks_per_transaction = 256
#log_min_duration_statement = 0
log_line_prefix = '%t [%p]: [%l-1] user=%u,db=%d,client=%h '
log_checkpoints = on
log_connections = on
log_disconnections = on
log_lock_waits = on
log_temp_files = 0
#log_autovacuum_min_duration = 0
lc_messages='C'
#log_duration = on
#log_statement = all
log_destination = stderr
plantuner.fix_empty_table = 'on'
online_analyze.table_type = 'temporary'
online_analyze.verbose = 'off'

Сохранить.

$ sudo systemctl restart postgresql.service

Создание полной автономной резервной копии:
$ sudo /bin/su postgres -c "pg_probackup-9.6 backup -B /backup --instance main -b FULL --stream --compress"

Просмотр:
$ sudo /bin/su postgres -c "pg_probackup-9.6 show -B /backup"

BACKUP INSTANCE 'main'
==========================================================================================

 Instance  Version  ID      Recovery Time           Mode  WAL     Current/Parent TLI  Time  Data  Start LSN   Stop LSN  Status
==========================================================================================

 main      9.6      PNJKHE  2019-02-26 19:30:15+03  FULL  STREAM  1 / 0                41s  40MB  0/2000060  0/20001D0  OK


Удаление:

$ sudo /bin/su postgres -c "pg_probackup-10 delete -B /backup --instance main -i PNJKHE"

Проверка:
$ sudo /bin/su postgres -c "pg_probackup-9.6 validate -B /backup"

$ ls /backup/backups/main -1 | tail -1

$ sudo /bin/su postgres -c "pg_probackup-9.6 show -B /backup --instance main -i PNJKHE"

$ sudo /bin/su postgres -c "pg_probackup-10 validate -B /backup --instance main -i PNJKHE"

$ sudo /bin/su postgres -c "pg_probackup-9.6 validate -B /backup --instance main -i PNJKHE"
INFO: Validating backup PNJKHE
INFO: Backup PNJKHE data files are valid
INFO: Backup PNJKHE WAL segments are valid
INFO: Backup PNJKHE is valid.
INFO: Validate of backup PNJKHE completed.
 

$ sudo /bin/su postgres -c "pg_probackup-9.6 validate -B /backup --instance main -i PNKVZY"
ERROR: Backup PNKVZY has status: ERROR
 


pg_probackup настройка автономного резервного копирования
Скрипт backup postgres 9.6 pg_probackup

-------------------------------------------------------------------------------------------------------

Установка 1с

# установка 1с
$ mkdir -p /tmp/1ctmp
$ cd /tmp/1ctmp
$ sudo apt install imagemagick -y
#$sudo apt install -y unixodbc libgsf-1-114 libglib2.0
$ sudo apt install libfreetype6 libgsf-1-common unixodbc glib2.0
#ubuntu
$ sudo  apt install -y xfonts-utils cabextract
$ sudo apt install ttf-mscorefonts-installer -y
$  ls /home/user/test/
$ cp /home/user/test/deb64_8_3_13_1690.tar.gz /tmp/1ctmp$ tar xvzf deb64_8_3_13_1690.tar.gz
$ sudo dpkg -i 1c-enterprise83-common_8.3.13-1690_amd64.deb
$ sudo dpkg -i 1c-enterprise83-server_8.3.13-1690_amd64.deb
#$ sudo apt -f -y install
$ sudo chown -R usr1cv8:grp1cv8 /opt/1C
$ sudo echo -e "pass\npass\n" | sudo passwd usr1cv8
$ sudo service srv1cv83 start
$ sudo service srv1cv83 status
$ sudo usermod -aG sudo usr1cv8

$ sudo  apt install -y libc6-i386
$ mkdir /tmp/hasp
$ cd /tmp/hasp
$ wget http://download.etersoft.ru/pub/Etersoft/HASP/last/x86_64/Ubuntu/16.04/haspd-modules_7.60-eter1ubuntu_amd64.deb
$ wget http://download.etersoft.ru/pub/Etersoft/HASP/last/x86_64/Ubuntu/16.04/haspd_7.60-eter1ubuntu_amd64.deb
$ sudo dpkg -i *.deb
#$ sudo apt-get install -f -y
$ sudo service haspd start
$ sudo service haspd status
$ sudo reboot

$ sudo service srv1cv83 status
$ ss -tlnp | grep :15
LISTEN     0      128          *:1560                     *:*
LISTEN     0      128          *:1540                     *:*
LISTEN     0      128          *:1541                     *:*
LISTEN     0      128         :::1560                    :::*
LISTEN     0      128         :::1540                    :::*
LISTEN     0      128         :::1541                    :::*

Не встал скриптом imagemagick?
Без строчки ниже будет ругаться при входе в 1с
$ sudo apt-get install imagemagick  -y

$ sudo reboot

Зашарить папку по сети

$ sudo mkdir /share/
$ sudo chmod -R 777 /share/
$ sudo chown -R root:sambashare /share/
$ sudo cp -b -f /etc/samba/smb.conf /etc/samba/smb.conf.bak
$ sudo nano /etc/samba/smb.conf

Добавить в конец

[files]
path = /share/
comment = No comment
read only = no
available = yes
browseable = yes
writable = yes
guest ok = yes
public = yes
printable = no
locking = no
strict locking = no

Сохранить
Перезагрузить службу

$ sudo service smbd restart

Настройка технологического журнала

$ sudo mkdir -p /home/usr1cv8/.1cv8/1C/1cv8/conf/

S sudo nano /home/usr1cv8/.1cv8/1C/1cv8/conf/logcfg.xml

<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://v8.1c.ru/v8/tech-log">
        <log location="/home/usr1cv8/log" history="96">
                <event>
                        <eq property="name" value="DBPOSTGRS"/>
                </event>
                <event>
                        <eq property="name" value="SDBL"/>
                </event>
                <event>
                        <eq property="name" value="EXCP"/>
                </event>
                <property name="all"/>
        </log>
</config>
Сохранить.

Другой вариант:

<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://v8.1c.ru/v8/tech-log">
        <log location="/home/usr1cv8/log" history="96">
                <event>
                        <ne property="name" value="DB2" />
                        <ne property="name" value="DBMSSQL" />
                        <ne property="name" value="DBMSSQLCONN" />
                        <ne property="name" value="DBORACLE" />
                        <ne property="name" value="DBPOSTGRS" />
                        <ne property="name" value="DBV8DBENG" />
                        <ne property="name" value="SDBL" />
                        <ne property="name" value="MEM" />
                        <ne property="name" value="TLOCK" />
                        <ne property="name" value="SRVC" />
                        <ne property="name" value="CALL" />
                        <ne property="name" value="CONN" />
                        <ne property="name" value="SCALL" />
                        <ne property="name" value="SCOM" />
                        <ne property="name" value="VRSREQUEST" />
                        <ne property="name" value="VRSRESPONSE" />
                </event>
                <property name="all" />
        </log>
</config>

Настройка дампов

$ sudo mkdir -p /home/usr1cv8/dumps/
$ sudo mkdir -p /home/usr1cv8/log/
$ sudo chown -R usr1cv8:grp1cv8 /home/usr1cv8/
$ echo 'usr1cv8 soft core unlimited' | sudo tee -a /etc/security/limits.conf
$ echo 'usr1cv8 hard core unlimited' | sudo tee -a /etc/security/limits.conf
$ echo 'kernel.core_pattern=/home/usr1cv8/dumps/core.%e.%p ' | sudo tee -a /etc/sysctl.conf
$ sudo sysctl -p

$ sudo usermod -aG sudo usr1cv8



Можно подключать базу 1С postgres пароль pass
(вместо test имя своего сервера)




-------------------------------------------------------------------------------------------------------

Backup базы demo тестового сервера

Backup 


$ nano backup-sql.sh

Вставить текст ниже:

#!/bin/sh
set -e
echo "====================================================================" >> /home/user/backup/backup.log
# останавливаем сервер 1С
echo "останавливаем сервер 1С"
sudo systemctl stop  srv1cv83.service
#systemctl status  srv1cv83.service >> /home/user/backup/backup.log
echo "состояние сервера 1С"  >> /home/user/backup/backup.log
sudo systemctl status  srv1cv83.service | grep 'Active:' >> /home/user/backup/backup.log
echo "--------------------------------------------------------------------" >> /home/user/backup/backup.log
# Устанавливаем дату
DATA=`date +"%Y-%m-%d_%H-%M"`
echo "`date +"%Y-%m-%d_%H-%M-%S"` Size database file: " >> /home/user/backup/backup.log
sudo du -h -s /var/lib/postgresql/9.6/main/base  >> /home/user/backup/backup.log
echo "--------------------------------------------------------------------" >> /home/user/backup/backup.log
# Записываем информацию в лог с секундами
echo "`date +"%Y-%m-%d_%H-%M-%S"` Start backup, restore, vacuum  базы demo" >> /home/user/backup/backup.log
# Бэкапим базу данных demo и сразу сжимаем
echo "`date +"%Y-%m-%d_%H-%M-%S"` Start backup, restore, vacuum  базы demo"
#cd /home/user/backup/
sudo /bin/su postgres -c "pg_dump -Fc demo"  > /home/user/backup/demo_$DATA && \
    sudo /bin/su postgres -c "/usr/bin/vacuumdb --analyze --full --quiet \
    --username postgres --dbname=demo"

#echo $?
if [ $? -ne 0 ]
then
     echo "`date +"%Y-%m-%d_%H-%M-%S"` Ошибка завершения для базы demo"
     echo "`date +"%Y-%m-%d_%H-%M-%S"` Ошибка завершения для для базы demo" >> /home/user/backup/backup.log
else
     echo "`date +"%Y-%m-%d_%H-%M-%S"` Успешное завершение для базы demo"
     echo "`date +"%Y-%m-%d_%H-%M-%S"` Успешное завершение для базы demo" >> /home/user/backup/backup.log
fi
echo "--------------------------------------------------------------------" >> /home/user/backup/backup.log
# запускаем сервер 1С
echo "запускаем сервер 1С"
sudo systemctl start  srv1cv83.service
#systemctl status  srv1cv83.service >> /home/user/backup/backup.log
echo "состояние сервера 1С"  >> /home/user/backup/backup.log
sudo systemctl status  srv1cv83.service | grep 'Active:' >> /home/user/backup/backup.log
echo "--------------------------------------------------------------------" >> /home/user/backup/backup.log
echo "закончено"

Сохранить.

Однократный запуск:
$ sudo sh backup-sql.sh

Запуск по расписанию:

$ sudo -i
# crontab -e
Добавить в конец (сработает в 18:01):
# каждые день в 18.00

0 18 * * * sh /home/user/backup-sql.sh
Сохранить.

Смотреть задания:
# crontab -l

Проверка backup

Посмотрим архивные копии:
$ ls /home/user/backup
backup.log  demo_2019-02-02_17-42  demo_2019-02-02_18-00

#$ sudo /bin/su postgres -c "pg_dump -Fc demo"  > /home/user/test/backup/demo

Создадим тестовую базу:
$ sudo /bin/su postgres -c "createdb --username postgres -T template0 demotest"

Восстановим указав резервную копию
$ sudo /bin/su postgres -c "pg_restore -d demotest /home/user/backup/demo_2019-02-02_18-00"


к ней можно подключиться из 1С

Посмотреть список баз:
$ sudo /bin/su postgres -c "psql -l"

Размер базы demo 
$ sudo su -c "psql -d demo -c \"select pg_size_pretty( pg_database_size('demo'))\"" postgres


Размер базы demotest 
$ sudo su -c "psql -d demo -c \"select pg_size_pretty( pg_database_size('demotest'))\"" postgres


Размер базы demo
$ sudo su -c "psql -c \"select pg_size_pretty( pg_database_size('demo'))\"" postgres 

Размер базы demotest
$ sudo su -c "psql -c \"select pg_size_pretty( pg_database_size('demotest'))\"" postgres 


Удаление базы demotest
$ sudo /bin/su postgres -c "dropdb demotest"

Посмотреть список баз:
$ sudo /bin/su postgres -c "psql -l"
.
#----------------------------------------------------------------------

Скрипт изменения ip адреса


$ nano changeip.sh

Скопируем из буфера следующий скрипт, в котором Вам нужно исправить ip и адрес шлюза в соответствии со своей сетью:

#!/bin/bash
# настройка ip и hostname
#----------------------------------------------------------------------
_hostname="test"
# real computer
_iface="enp1s0" _address="192.168.0.43"
_gateway="192.168.0.1"
_netmask="255.255.255.0"
_nameserver="8.8.8.8"
#----------------------------------------------------------------------
# настроим статический ip
sudo cat > /tmp/interfaces <<EOF
# 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 $_iface
#iface $_iface inet dhcp
iface $_iface inet static
address $_address
netmask $_netmask
gateway $_gateway
dns-nameservers $_nameserver
auto $_iface
EOF
sudo cp /tmp/interfaces /etc/network#sudo rm /etc/resolv.conf
#sudo /bin/su -c "echo 'nameserver $_nameserver' > /etc/resolv.conf"
# изменим hostname и ip
sudo cat > /tmp/hosts <<EOF
127.0.0.1       localhost
$_address       $_hostname
EOF
sudo cp /tmp/hosts /etc
# изменим hostname
sudo hostname $_hostname
sudo /bin/su -c "echo $_hostname > /etc/hostname"
# перезагрузим сеть
sudo systemctl restart networking.service

Сохраним файл changeip.sh

Сделаем исполняем
$ chmod +x changeip.sh

Выполним:

$ ./changeip.sh

Тестирование.

Тестовая база.

Документ начисление зарплаты и взносов за август:
Очистить.


1. Без настройки postgresql.conf и без тж
Заполнить: 156 с
Провести: 114 с

2. с настройкой postgresql.conf и без тж
Заполнить: 156 с
Провести: 114 с


$ free -m
              total        used        free      shared  buff/cache   available
Память:       32061        2625       26943         863        2493       28084
Подкачка:        1023           0        1023

суббота, 19 января 2019 г.

Настройка PostgreSQL с помощью pgbench

Настройка PostgreSQL с помощью pgbench

$ psql
#postgres=# DROP DATABASE example;
postgres=# CREATE DATABASE example;
postgres=# \q

$ pgbench -i -s 500 example
Опция -i(initialize) скажет pgbench инициализировать указанную базу данных.
По умолчанию pgbenchбудут созданы таблицы выше с количеством строк, показанных выше. Это создает простую 16MBбазу данных.
Так как мы будем использовать pgbenchдля измерения изменений в производительности, небольшой 16MB базы данных будет недостаточно, чтобы подчеркнуть наш экземпляр. Это где -s(масштабирование) опция вступает в игру.

-sОпция используется для умножения числа строк , введенных в каждую таблицу. В приведенной выше команде мы ввели параметр «масштабирования» 500. Это говорит pgbenchо создании базы данных в 500 раз больше размера по умолчанию.

Это означает, что в нашей pgbench_accountsтаблице теперь есть 50000000 записи. Это также означает, что размер нашей базы данных теперь 8 GB( 500 x 16MB).

#postgres=# DROP DATABASE example;
postgres=# CREATE DATABASE example;
postgres=# \q

$ pgbench -i -s 1 example
postgres=# SELECT pg_size_pretty( pg_database_size( 'example' ) );
 pg_size_pretty
----------------
 23 MB
(1 строка)

#postgres=# DROP DATABASE example;
postgres=# CREATE DATABASE example;
postgres=# \q
$ pgbench -i -s 10 example

postgres=# SELECT pg_size_pretty( pg_database_size( 'example' ) );
 pg_size_pretty
----------------
 157 MB
(1 строка)

#postgres=# DROP DATABASE example;
postgres=# CREATE DATABASE example;
postgres=# \q
$ pgbench -i -s 100 example

postgres=# SELECT pg_size_pretty( pg_database_size( 'example' ) );
 pg_size_pretty
----------------
 1503 MB
(1 строка)

#postgres=# DROP DATABASE example;
postgres=# CREATE DATABASE example;
postgres=# \q
$ pgbench -i -s 500 example

postgres=# SELECT pg_size_pretty( pg_database_size( 'example' ) );
 pg_size_pretty
----------------
 7485 MB
(1 строка)


$ pgbench -c 10 -j 10 -t 10000 example

При вызове pgbench мы добавляем в команду довольно много опций.
Первый - -c (клиенты), который используется для определения количества клиентов, с которыми необходимо связаться. Для этого испытания, я использовал , 10 чтобы сказать , pgbench чтобы выполнить с 10 клиентами.

Это означает, что при pgbench выполнении тестов открывается 10 разных сессий.
Следующий параметр - -j флаг (потоки). Этот флаг используется для определения количества рабочих процессов для pgbench. В приведенной выше команде я указал значение 10. Это скажет pgbench запустить 10 рабочих процесса во время бенчмаркинга.

Третий используемый вариант - -t(транзакции), который используется для указания количества транзакций для выполнения.
В приведенной выше команде я указал значение 10000. Однако это не означает, что 10000с нашей службой базы данных будут выполняться только транзакции. Это означает, что каждый сеанс клиента будет выполнять 10000 транзакции. Подводя итог, можно сказать, что базовый тестовый запуск состоял из двух pgbench рабочих процессов, имитирующих 10000 транзакции от 10 клиентов для общего количества 100000 транзакций.

postgres=# show shared_buffers;
 shared_buffers
----------------
 4GB
(1 строка)

postgres@u1604:~$ pgbench -c 10 -j 10 -t 10000 example
starting vacuum...end.
transaction type: <builtin: TPC-B (sort of)>
scaling factor: 500
query mode: simple
number of clients: 10
number of threads: 10
number of transactions per client: 10000
number of transactions actually processed: 100000/100000
latency average = 1.600 ms
tps = 6250.430421 (including connections establishing)
tps = 6256.860642 (excluding connections establishing)

sudo nano /etc/postgresql/10/main/postgresql.conf
....
shared_buffers = 128MB
....
Сохранить.
sudo systemctl restart postgresql.service
 postgres@u1604:~$ pgbench -c 10 -j 10 -t 10000 example
starting vacuum...end.
transaction type: <builtin: TPC-B (sort of)>
scaling factor: 500
query mode: simple
number of clients: 10
number of threads: 10
number of transactions per client: 10000
number of transactions actually processed: 100000/100000
latency average = 1.761 ms
tps = 5677.796580 (including connections establishing)
tps = 5681.195082 (excluding connections establishing)
postgres@u1604:~$
user@u1604:~$ free -m
              total        used        free      shared  buff/cache   available
Память:       32168        1542        5418         222       25207       29895
Подкачка:        1023           0        1023

sudo nano /etc/postgresql/10/main/postgresql.conf
....
shared_buffers = 1GB
....
Сохранить.
sudo systemctl restart postgresql.service
postgres@u1604:~$ pgbench -c 10 -j 10 -t 10000 example
starting vacuum...end.
transaction type: <builtin: TPC-B (sort of)>
scaling factor: 500
query mode: simple
number of clients: 10
number of threads: 10
number of transactions per client: 10000
number of transactions actually processed: 100000/100000
latency average = 1.815 ms
tps = 5511.049911 (including connections establishing)
tps = 5517.989252 (excluding connections establishing)
postgres@u1604:~$



user@u1604:~$ free -m
              total        used        free      shared  buff/cache   available
Память:       32168        1518        4896         222       25753       29921
Подкачка:        1023           0        1023

$ pgbench -c 10 -j 10 -t 10000 example
starting vacuum...end.
transaction type: <builtin: TPC-B (sort of)>
scaling factor: 500
query mode: simple
number of clients: 10
number of threads: 10
number of transactions per client: 10000
number of transactions actually processed: 100000/100000
latency average = 2.670 ms
tps = 3744.674440 (including connections establishing)
tps = 3746.879000 (excluding connections establishing)

$ pgbench -c 10 -T 60 example
sudo nano /var/lib/pgpro/1c-10/data/postgresql.conf
sudo systemctl restart postgrespro-1c-10.service 


PostgreSQL 10 – Shared Buffers Performance

пятница, 18 января 2019 г.

Модели разделяемой памяти в PostgreSQL

Тюнинг Ubuntu server 16.04.5 PostgreSQL, версия 10.5-10.1C

Оптимизация производительности PostgreSQL
Настройки PostgreSQL для работы с 1С:Предприятием. Часть 2
Глава 5. Администрирование
Тестовая виртуальная машина

1. Устанавливаем ubuntu 16.04.5 HWE server  без swap файла,
т.е. размечаем вручную весь диск ext4 root.

ubuntu имя компьютера u1604
ubuntu пользователь user пароль 12345
ubuntu пользователь postgres password pass
ubuntu пользователь usr1cv8 password pass

Настройки виртуальной машины - RAM (32GB)
Сеть - сетевой мост.
Проще всего пробросить в виртуальную машину лицензии 1С:Предприятия 8 посредством локального hasp.
Настройки ubuntu пользователь (привязка в скриптах) user пароль 12345, имя компьютера
u1604 сеть DHCP

После установки, Ctrl +Alt + T (окно терминала)
$ sudo apt update -y
$ sudo apt upgrade -y
$ sudo apt install mc ssh samba htop -y

Возможно sudo apt upgrade -y не пройдет из за блокировки, тогда sudo reboot и повторите с начала.

$ lsusb
Bus 001 Device 002: ID 80ee:0021 VirtualBox USB Tablet
Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Пробросить hasp средствами VirtualBox

$ lsusb
Bus 001 Device 004: ID 0529:0001 Aladdin Knowledge Systems HASP copy protection dongle
Bus 001 Device 003: ID 0529:0001 Aladdin Knowledge Systems HASP copy protection dongle
Bus 001 Device 002: ID 80ee:0021 VirtualBox USB Tablet
Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

$ sudo cat /proc/cpuinfo | grep MHz
$ sudo systemctl status ondemand
$ sudo systemctl stop ondemand
$ sudo systemctl disable ondemand
$ sudo poweroff

Образ u16045.ova

2. После перезагрузки по сети можно подключиться MobaXterm
к нашей виртуальной машине (по ip или или имени )  загрузить файлы установки:
$ mkdir /home/user/test

В папку /test положить файлы:


postgresql_10.5_10.1C_amd64_deb.tar.bz2
postgresql_10.5_10.1C_amd64_addon_deb.tar.bz2

Исправим bug
Several regex warnings when installing latest postgres update

sudo nano /usr/sbin/pam_getenv
строка 78 заменить
$val =~ s/(?<!\\)\${([^}]+)}/$ENV{$1}||""/eg;
на
$val =~ s/(?<!\\)\$\{([^}]+)\}/$ENV{$1}||""/eg;

#sudo apt-get install libicu55  -y
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main" >> /etc/apt/sources.list.d/postgresql.list'
sudo apt update -y
sudo apt-get install postgresql-common libtcl8.6 -y
dpkg -l | grep postgres | awk -F' ' '{print $2}' | sudo xargs apt-mark hold
mkdir -p /tmp/post
cp /home/user/test/postgresql_10.5_10.1C_amd64_deb.tar.bz2 /tmp/post/
cp /home/user/test/postgresql_10.5_10.1C_amd64_addon_deb.tar.bz2 /tmp/post/
cd /tmp/post
tar -xvf postgresql_10.5_10.1C_amd64_deb.tar.bz2
cd  postgresql-10.5-10.1C_amd64_deb
sudo dpkg -i *.deb
cd /tmp/post/
tar -xvf postgresql_10.5_10.1C_amd64_addon_deb.tar.bz2
cd postgresql-10.5-10.1C_amd64_addon_deb
sudo dpkg -i *.deb

dpkg -l | grep 10.5-10.1C | awk -F' ' '{print $2}' | sudo xargs apt-mark hold
#sudo apt-mark hold postgresql-common postgresql-client-common

sudo -u postgres psql -U postgres -c "alter user postgres with password 'pass';"
sudo cp /etc/postgresql/10/main/postgresql.conf /etc/postgresql/10/main/postgresql.conf.bak
#sudo rm /etc/apt/sources.list.d/postgresql.list
#sudo apt update  -y
#Делаем проверки
#sudo systemctl status postgresql.service
#ss -tunpl | grep 5432
# $ ps aux | grep postgres | grep -- -D
postgres  4914  0.0  0.1 320972 28864 ?        S    08:37   0:00 /usr/lib/postgresql/10/bin/postgres -D /var/lib/postgresql/10/main -c config_file=/etc/postgresql/10/main/postgresql.conf

#--------------------------------------------------------------------------------
Собственно тюнинг.

#add a swap file to an Ubuntu 16.04
sudo fallocate -l 1G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
sudo cp /etc/fstab /etc/fstab.bak
sudo echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
# отключим ip6
sudo /bin/su -c "echo 'net.ipv6.conf.all.disable_ipv6 = 1' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'net.ipv6.conf.default.disable_ipv6 = 1' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'net.ipv6.conf.lo.disable_ipv6 = 1' >> /etc/sysctl.conf"
#sudo /bin/su -c "echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf"
#тюнинг postgresql
sudo /bin/su -c "echo 'vm.swappiness=1' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'kernel.sched_migration_cost_ns = 5000000' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'kernel.sched_autogroup_enabled = 0' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'vm.dirty_background_bytes = 67108864' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'vm.dirty_bytes = 536870912' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'vm.zone_reclaim_mode = 0' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'vm.zone_reclaim_mode = 0' >> /etc/sysctl.conf"
sudo sysctl -p

PGTune

sudo nano /etc/postgresql/10/main/postgresql.conf
Добавить в конец:

# DB Version: 10
# OS Type: linux
# DB Type: oltp
# Total Memory (RAM): 16 GB
# Data Storage: ssd

max_connections = 1000
shared_buffers = 4GB
temp_buffers = 256MB
work_mem = 64MB
effective_cache_size = 12GB
maintenance_work_mem = 1GB
wal_buffers = 16MB
min_wal_size = 2GB
max_wal_size = 4GB

default_statistics_target = 100
effective_io_concurrency = 2
random_page_cost = 1.1
autovacuum = on
autovacuum_max_workers = 4
autovacuum_naptime = 20s
bgwriter_delay = 20ms
bgwriter_lru_multiplier = 4.0
bgwriter_lru_maxpages = 400
synchronous_commit = off
checkpoint_completion_target = 0.9
#min_wal_size = 2GB
#max_wal_size = 4GB
ssl = off
fsync = on
commit_delay = 1000
commit_siblings = 5
row_security = off
max_files_per_process = 1000
standard_conforming_strings = off
escape_string_warning = off
max_locks_per_transaction = 256
#log_min_duration_statement = 0
log_line_prefix = '%t [%p]: [%l-1] user=%u,db=%d,client=%h '
log_checkpoints = on
log_connections = on
log_disconnections = on
log_lock_waits = on
log_temp_files = 0
#log_autovacuum_min_duration = 0
lc_messages='C'
#log_duration = on
#log_statement = all
log_destination = stderr
plantuner.fix_empty_table = 'on'
online_analyze.table_type = 'temporary'
online_analyze.verbose = 'off'

Сохранить.
 
sudo nano /etc/postgresql/10/main/postgresql.conf
Добавить в конец:

# DB Version: 10
# OS Type: linux
# DB Type: oltp
# Total Memory (RAM): 4 GB
# Data Storage: ssd

max_connections = 1000
shared_buffers = 1GB
temp_buffers = 64MB
work_mem = 16MB
effective_cache_size = 3GB
maintenance_work_mem = 256MB
wal_buffers = 16MB
min_wal_size = 2GB
max_wal_size = 4GB
default_statistics_target = 100
effective_io_concurrency = 2
random_page_cost = 1.1
autovacuum = on
autovacuum_max_workers = 4
autovacuum_naptime = 20s
bgwriter_delay = 20ms
bgwriter_lru_multiplier = 4.0
bgwriter_lru_maxpages = 400
synchronous_commit = off
checkpoint_completion_target = 0.9
#min_wal_size = 2GB
#max_wal_size = 4GB
ssl = off
fsync = on
commit_delay = 1000
commit_siblings = 5
row_security = off
max_files_per_process = 1000
standard_conforming_strings = off
escape_string_warning = off
max_locks_per_transaction = 256
#log_min_duration_statement = 0
log_line_prefix = '%t [%p]: [%l-1] user=%u,db=%d,client=%h '
log_checkpoints = on
log_connections = on
log_disconnections = on
log_lock_waits = on
log_temp_files = 0
#log_autovacuum_min_duration = 0
lc_messages='C'
#log_duration = on
#log_statement = all
log_destination = stderr
plantuner.fix_empty_table = 'on'
online_analyze.table_type = 'temporary'
online_analyze.verbose = 'off'

Сохранить.


sudo nano /etc/postgresql/10/main/postgresql.conf
Добавить в конец:

# DB Version: 10
# OS Type: linux
# DB Type: oltp
# Total Memory (RAM): 8 GB
# Data Storage: ssd

max_connections = 1000
shared_buffers = 2GB
temp_buffers = 128MB
work_mem = 32MB
effective_cache_size = 6GB
maintenance_work_mem = 512MB
wal_buffers = 16MB
min_wal_size = 2GB
max_wal_size = 4GB
default_statistics_target = 100
effective_io_concurrency = 2
random_page_cost = 1.1
autovacuum = on
autovacuum_max_workers = 4
autovacuum_naptime = 20s
bgwriter_delay = 20ms
bgwriter_lru_multiplier = 4.0
bgwriter_lru_maxpages = 400
synchronous_commit = off
checkpoint_completion_target = 0.9
#min_wal_size = 2GB
#max_wal_size = 4GB
ssl = off
fsync = on
commit_delay = 1000
commit_siblings = 5
row_security = off
max_files_per_process = 1000
standard_conforming_strings = off
escape_string_warning = off
max_locks_per_transaction = 256
#log_min_duration_statement = 0
log_line_prefix = '%t [%p]: [%l-1] user=%u,db=%d,client=%h '
log_checkpoints = on
log_connections = on
log_disconnections = on
log_lock_waits = on
log_temp_files = 0
#log_autovacuum_min_duration = 0
lc_messages='C'
#log_duration = on
#log_statement = all
log_destination = stderr
plantuner.fix_empty_table = 'on'
online_analyze.table_type = 'temporary'
online_analyze.verbose = 'off'

Сохранить.

sudo nano /etc/postgresql/10/main/postgresql.conf
Добавить в конец:

# DB Version: 10
# OS Type: linux
# DB Type: oltp
# Total Memory (RAM): 2 GB
# Data Storage: ssd

max_connections = 1000
shared_buffers =512MB
temp_buffers = 32MB
work_mem = 8MB
effective_cache_size =768MB
maintenance_work_mem = 128MB
wal_buffers = 16MB
min_wal_size = 2GB
max_wal_size = 4GB
default_statistics_target = 100
effective_io_concurrency = 2
random_page_cost = 1.1
autovacuum = on
autovacuum_max_workers = 4
autovacuum_naptime = 20s
bgwriter_delay = 20ms
bgwriter_lru_multiplier = 4.0
bgwriter_lru_maxpages = 400
synchronous_commit = off
checkpoint_completion_target = 0.9
#min_wal_size = 2GB
#max_wal_size = 4GB
ssl = off
fsync = on
commit_delay = 1000
commit_siblings = 5
row_security = off
max_files_per_process = 1000
standard_conforming_strings = off
escape_string_warning = off
max_locks_per_transaction = 256
#log_min_duration_statement = 0
log_line_prefix = '%t [%p]: [%l-1] user=%u,db=%d,client=%h '
log_checkpoints = on
log_connections = on
log_disconnections = on
log_lock_waits = on
log_temp_files = 0
#log_autovacuum_min_duration = 0
lc_messages='C'
#log_duration = on
#log_statement = all
log_destination = stderr
plantuner.fix_empty_table = 'on'
online_analyze.table_type = 'temporary'
online_analyze.verbose = 'off'

Сохранить.

# SELECT name, setting, unit FROM pg_settings where category like '%Memory%';
# cat /proc/meminfo 

четверг, 17 января 2019 г.

Тюнинг Ubuntu server 16.04.5 PostgreSQL, версия 10.3-3.1C

Оптимизация производительности PostgreSQL
Настройки PostgreSQL для работы с 1С:Предприятием. Часть 2
Глава 5. Администрирование
Тестовая виртуальная машина

1. Устанавливаем ubuntu 16.04.5 HWE server  без swap файла,
т.е. размечаем вручную весь диск ext4 root.

ubuntu имя компьютера u1604
ubuntu пользователь user пароль 12345
ubuntu пользователь postgres password pass
ubuntu пользователь usr1cv8 password pass

Настройки виртуальной машины - RAM (32GB)
Сеть - сетевой мост.
Проще всего пробросить в виртуальную машину лицензии 1С:Предприятия 8 посредством локального hasp.
Настройки ubuntu пользователь (привязка в скриптах) user пароль 12345, имя компьютера
u1604 сеть DHCP

После установки, Ctrl +Alt + T (окно терминала)
$ sudo apt update -y
$ sudo apt upgrade -y
$ sudo apt install mc ssh samba htop -y

Возможно sudo apt upgrade -y не пройдет из за блокировки, тогда sudo reboot и повторите с начала.

$ lsusb
Bus 001 Device 002: ID 80ee:0021 VirtualBox USB Tablet
Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Пробросить hasp средствами VirtualBox

$ lsusb
Bus 001 Device 004: ID 0529:0001 Aladdin Knowledge Systems HASP copy protection dongle
Bus 001 Device 003: ID 0529:0001 Aladdin Knowledge Systems HASP copy protection dongle
Bus 001 Device 002: ID 80ee:0021 VirtualBox USB Tablet
Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

$ sudo cat /proc/cpuinfo | grep MHz
$ sudo systemctl status ondemand
$ sudo systemctl stop ondemand
$ sudo systemctl disable ondemand
$ sudo poweroff

Образ u16045.ova

2. После перезагрузки по сети можно подключиться MobaXterm
к нашей виртуальной машине (по ip или или имени )  загрузить файлы установки:
$ mkdir /home/user/test

В папку /test положить файлы:


postgresql_10.3_2.1C_amd64_deb.tar.bz2
postgresql_10.3_2.1C_amd64_addon_deb.tar.bz2
fonts-ttf-ms_1.0-eter4ubuntu_all.deb
aksusbd_7.81-1_amd64.deb

Исправим bug
Several regex warnings when installing latest postgres update

sudo nano /usr/sbin/pam_getenv
строка 78 заменить
$val =~ s/(?<!\\)\${([^}]+)}/$ENV{$1}||""/eg;
на
$val =~ s/(?<!\\)\$\{([^}]+)\}/$ENV{$1}||""/eg;

#sudo apt-get install libicu55  -y
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main" >> /etc/apt/sources.list.d/postgresql.list'
sudo apt update -y
sudo apt-get install postgresql-common libtcl8.6 -y
mkdir -p /tmp/post
cp /home/user/test/postgresql_10.3_3.1C_amd64_deb.tar.bz2 /tmp/post/
cp /home/user/test/postgresql_10.3_3.1C_amd64_addon_deb.tar.bz2 /tmp/post/
cd /tmp/post
tar -xvf postgresql_10.3_3.1C_amd64_deb.tar.bz2
cd  postgresql-10.3-3.1C_amd64_deb
sudo dpkg -i *.deb
cd /tmp/post/
tar -xvf postgresql_10.3_3.1C_amd64_addon_deb.tar.bz2
cd postgresql-10.3-3.1C_amd64_addon_deb
sudo dpkg -i *.deb

dpkg -l | grep 10.3-3.1C | awk -F' ' '{print $2}' | sudo xargs apt-mark hold
sudo apt-mark hold postgresql-common postgresql-client-common

sudo -u postgres psql -U postgres -c "alter user postgres with password 'pass';"
sudo cp /etc/postgresql/10/main/postgresql.conf /etc/postgresql/10/main/postgresql.conf.bak
#sudo rm /etc/apt/sources.list.d/postgresql.list
#sudo apt update  -y
#Делаем проверки
#sudo systemctl status postgresql.service
#ss -tunpl | grep 5432
# $ ps aux | grep postgres | grep -- -D
postgres  4914  0.0  0.1 320972 28864 ?        S    08:37   0:00 /usr/lib/postgresql/10/bin/postgres -D /var/lib/postgresql/10/main -c config_file=/etc/postgresql/10/main/postgresql.conf

#--------------------------------------------------------------------------------
Собственно тюнинг.

#add a swap file to an Ubuntu 16.04
sudo fallocate -l 1G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
sudo cp /etc/fstab /etc/fstab.bak
sudo echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
# отключим ip6
sudo /bin/su -c "echo 'net.ipv6.conf.all.disable_ipv6 = 1' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'net.ipv6.conf.default.disable_ipv6 = 1' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'net.ipv6.conf.lo.disable_ipv6 = 1' >> /etc/sysctl.conf"
#sudo /bin/su -c "echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf"
#тюнинг postgresql
sudo /bin/su -c "echo 'vm.swappiness=1' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'kernel.sched_migration_cost_ns = 5000000' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'kernel.sched_autogroup_enabled = 0' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'vm.dirty_background_bytes = 67108864' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'vm.dirty_bytes = 536870912' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'vm.zone_reclaim_mode = 0' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'vm.zone_reclaim_mode = 0' >> /etc/sysctl.conf"
sudo sysctl -p

PGTune

sudo nano /etc/postgresql/10/main/postgresql.conf
Добавить в конец:

# DB Version: 10
# OS Type: linux
# DB Type: oltp
# Total Memory (RAM): 16 GB
# Data Storage: ssd

max_connections = 1000
shared_buffers = 4GB
temp_buffers = 256MB
work_mem = 64MB
effective_cache_size = 12GB
maintenance_work_mem = 1GB
wal_buffers = 16MB
min_wal_size = 2GB
max_wal_size = 4GB

default_statistics_target = 100
effective_io_concurrency = 2
random_page_cost = 1.1
autovacuum = on
autovacuum_max_workers = 4
autovacuum_naptime = 20s
bgwriter_delay = 20ms
bgwriter_lru_multiplier = 4.0
bgwriter_lru_maxpages = 400
synchronous_commit = off
checkpoint_completion_target = 0.9
#min_wal_size = 2GB
#max_wal_size = 4GB
ssl = off
fsync = on
commit_delay = 1000
commit_siblings = 5
row_security = off
max_files_per_process = 1000
standard_conforming_strings = off
escape_string_warning = off
max_locks_per_transaction = 256
#log_min_duration_statement = 0
log_line_prefix = '%t [%p]: [%l-1] user=%u,db=%d,client=%h '
log_checkpoints = on
log_connections = on
log_disconnections = on
log_lock_waits = on
log_temp_files = 0
#log_autovacuum_min_duration = 0
lc_messages='C'
#log_duration = on
#log_statement = all
log_destination = stderr
plantuner.fix_empty_table = 'on'
online_analyze.table_type = 'temporary'
online_analyze.verbose = 'off'

Сохранить.
 
sudo nano /etc/postgresql/10/main/postgresql.conf
Добавить в конец:

# DB Version: 10
# OS Type: linux
# DB Type: oltp
# Total Memory (RAM): 4 GB
# Data Storage: ssd

max_connections = 1000
shared_buffers = 1GB
temp_buffers = 64MB
work_mem = 16MB
effective_cache_size = 3GB
maintenance_work_mem = 256MB
wal_buffers = 16MB
min_wal_size = 2GB
max_wal_size = 4GB
default_statistics_target = 100
effective_io_concurrency = 2
random_page_cost = 1.1
autovacuum = on
autovacuum_max_workers = 4
autovacuum_naptime = 20s
bgwriter_delay = 20ms
bgwriter_lru_multiplier = 4.0
bgwriter_lru_maxpages = 400
synchronous_commit = off
checkpoint_completion_target = 0.9
#min_wal_size = 2GB
#max_wal_size = 4GB
ssl = off
fsync = on
commit_delay = 1000
commit_siblings = 5
row_security = off
max_files_per_process = 1000
standard_conforming_strings = off
escape_string_warning = off
max_locks_per_transaction = 256
#log_min_duration_statement = 0
log_line_prefix = '%t [%p]: [%l-1] user=%u,db=%d,client=%h '
log_checkpoints = on
log_connections = on
log_disconnections = on
log_lock_waits = on
log_temp_files = 0
#log_autovacuum_min_duration = 0
lc_messages='C'
#log_duration = on
#log_statement = all
log_destination = stderr
plantuner.fix_empty_table = 'on'
online_analyze.table_type = 'temporary'
online_analyze.verbose = 'off'

Сохранить.


sudo nano /etc/postgresql/10/main/postgresql.conf
Добавить в конец:

# DB Version: 10
# OS Type: linux
# DB Type: oltp
# Total Memory (RAM): 8 GB
# Data Storage: ssd

max_connections = 1000
shared_buffers = 2GB
temp_buffers = 128MB
work_mem = 32MB
effective_cache_size = 6GB
maintenance_work_mem = 512MB
wal_buffers = 16MB
min_wal_size = 2GB
max_wal_size = 4GB
default_statistics_target = 100
effective_io_concurrency = 2
random_page_cost = 1.1
autovacuum = on
autovacuum_max_workers = 4
autovacuum_naptime = 20s
bgwriter_delay = 20ms
bgwriter_lru_multiplier = 4.0
bgwriter_lru_maxpages = 400
synchronous_commit = off
checkpoint_completion_target = 0.9
#min_wal_size = 2GB
#max_wal_size = 4GB
ssl = off
fsync = on
commit_delay = 1000
commit_siblings = 5
row_security = off
max_files_per_process = 1000
standard_conforming_strings = off
escape_string_warning = off
max_locks_per_transaction = 256
#log_min_duration_statement = 0
log_line_prefix = '%t [%p]: [%l-1] user=%u,db=%d,client=%h '
log_checkpoints = on
log_connections = on
log_disconnections = on
log_lock_waits = on
log_temp_files = 0
#log_autovacuum_min_duration = 0
lc_messages='C'
#log_duration = on
#log_statement = all
log_destination = stderr
plantuner.fix_empty_table = 'on'
online_analyze.table_type = 'temporary'
online_analyze.verbose = 'off'

Сохранить.

sudo nano /etc/postgresql/10/main/postgresql.conf
Добавить в конец:

# DB Version: 10
# OS Type: linux
# DB Type: oltp
# Total Memory (RAM): 2 GB
# Data Storage: ssd

max_connections = 1000
shared_buffers =512MB
temp_buffers = 32MB
work_mem = 8MB
effective_cache_size =768MB
maintenance_work_mem = 128MB
wal_buffers = 16MB
min_wal_size = 2GB
max_wal_size = 4GB
default_statistics_target = 100
effective_io_concurrency = 2
random_page_cost = 1.1
autovacuum = on
autovacuum_max_workers = 4
autovacuum_naptime = 20s
bgwriter_delay = 20ms
bgwriter_lru_multiplier = 4.0
bgwriter_lru_maxpages = 400
synchronous_commit = off
checkpoint_completion_target = 0.9
#min_wal_size = 2GB
#max_wal_size = 4GB
ssl = off
fsync = on
commit_delay = 1000
commit_siblings = 5
row_security = off
max_files_per_process = 1000
standard_conforming_strings = off
escape_string_warning = off
max_locks_per_transaction = 256
#log_min_duration_statement = 0
log_line_prefix = '%t [%p]: [%l-1] user=%u,db=%d,client=%h '
log_checkpoints = on
log_connections = on
log_disconnections = on
log_lock_waits = on
log_temp_files = 0
#log_autovacuum_min_duration = 0
lc_messages='C'
#log_duration = on
#log_statement = all
log_destination = stderr
plantuner.fix_empty_table = 'on'
online_analyze.table_type = 'temporary'
online_analyze.verbose = 'off'

Сохранить.