среда, 25 марта 2020 г.

Ускорение дисковой подсистемы Qemu KVM в Linux

Debian проблема печати штрих-кода на сервере 1С под линукс

Сергей Голод:
Привет всем. Столкнулся с проблемой печати штрих-кода на сервере 1С под линукс. Не могу понять чего ему не хватает.  Установлены все библиотеки (libpng, zip, gd, magiccore,...). Даже установил старую версию libpng-12, которую на форумах советуют использовать. Может нужна ещё какая-то отдельная библиотека?
8.3.16 + УТ 11

права на каталог /tmp. У меня данный катало создавался с опцией noexec:
defaults,noatime,nosuid,noexec,nodev,mode=1777

а 1С кладёт в /tmp свои .so, которые достаёт из компонент и запускает их. Если стоит опция noexec -  то соответственно запуск не проходит


понедельник, 16 марта 2020 г.

ERROR: invalid memory alloc request size 1230291841

postgres=# \c demo
You are now connected to database "demo" as user "postgres".
demo=# SELECT nspname || '.' || relname AS "relation",
demo-#     pg_size_pretty(pg_total_relation_size(C.oid)) AS "total_size"
demo-#   FROM pg_class C
demo-#   LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace)
demo-#   WHERE nspname NOT IN ('pg_catalog', 'information_schema')
demo-#     AND C.relkind <> 'i'
demo-#     AND nspname !~ '^pg_toast'
demo-#   ORDER BY pg_total_relation_size(C.oid) DESC
demo-#   LIMIT 20;
        relation        | total_size
------------------------+------------
 public._inforg24222    | 6462 MB
 public.config          | 165 MB
 public._inforg23805    | 34 MB
 public._inforg24502    | 23 MB
 public._inforg28528    | 23 MB
 public._accumrg28622   | 21 MB
 public._accumrg29176   | 18 MB
 public._crg1079        | 16 MB
 public._inforg31568    | 15 MB
 public._accumrg28976   | 14 MB
 public._inforg27395    | 13 MB
 public._accumrg29535   | 12 MB
 public._inforg31471    | 10 MB
 public._inforg31504    | 9992 kB
 public._accumrg29493   | 9616 kB
 public._accumrg29219   | 9144 kB
 public._accumrg29255   | 8176 kB
 public._accumrgtn29205 | 7632 kB
 public._accumrg29658   | 7344 kB
 public._inforg26344    | 6600 kB
(20 rows)

demo=# \q
postgres@test:/root$ exit
root@test:~# выход
user@test:~$  time sudo su postgres -c "pg_dump -Fc demo"  > ~/demo.dump
pg_dump: Ошибка выгрузки таблицы "_inforg24222": сбой в PQgetResult().
pg_dump: Сообщение об ошибке с сервера: ERROR:  invalid memory alloc request size 1230291841
pg_dump: Выполнялась команда: COPY public._inforg24222 (_fld24223_type, _fld24223_rtref, _fld24223_rrref, _fld24224, _fld864) TO stdout;

real    4m14,566s
user    3m47,729s
sys     0m4,269s


~$ sudo su postgres
[sudo] пароль для user:
postgres@test:/home/user$ psql
psql (10.10 (Ubuntu 10.10-4.1C))
Введите "help", чтобы получить справку.

postgres=# \c demo
Вы подключены к базе данных "demo" как пользователь "postgres".
demo=# DELETE FROM public._inforg24222;
DELETE 1657
 

среда, 11 марта 2020 г.

Перестал работать бэкап и восстановление средствами PostgreSQL

Прочее → 1С:Молокозавод 1.3.112.4 - не работает бэкап средствами PostgreSQL
Позиция 1С:
Причиной возникновения ошибки является ограничение PostgreSQL на работу со значениями, размер которых превышает 1Гб.
Ошибка может воспроизводиться, если конфигурация находится на поддержке и при этом отличается (значительно) от конфигурации поставщика (в режиме совместимости 8.2). В этом случае в таблице config может находиться запись с информацией об изменениях основной конфигурации относительно конфигурации поставщика, размер которой при выводе (например, pg_dump) превышает 1Гб (составляет порядка 500Мб при хранении).
Можем рекомендовать в качестве обхода:
-- снять конфигурацию с поддержки, после этого проблемы не будет.
При необходимости ее можно будет вновь вернуть.
-- настроить резервное копирование с помощью утилиты  pg_basebackup:

Отдельно:
lxd debian 10 сборка PostgreSQL 11.6 (По Олегу Харину)
lxd debian 10 сборка PostgreSQL 11.7 (По Олегу Харину)


Там есть патч 999-pg_dump_bin.patch. Если его применить, то можно делать pg_dump с бинарным COPY указав в командной строке опцию --binary-copy. Пример если выгружать на самом сервере:
pg_dump --binary-copy -j 4 -h /var/run/postgresql/ -U postgres -Fd uvadrev -f 1C-uvadrev-2019-12-12.backup



Для выгрузки/загрузки используются дополнительные утилиты pg_dumpbinary/pg_restorebinary
pg_dumpbinary

$ lxc delete srv1c
$ lxc copy srv1c-cop srv1c
$ lxc start srv1c
$ lxc exec srv1c -- sudo --user ubuntu --login
$ sudo apt update
$ sudo apt upgrade
$ sudo apt install libdbd-pg-perl
$ git clone https://github.com/lzlabs/pg_dumpbinary.git
$ cd pg_dumpbinary$ perl Makefile.PL
$ make
$ sudo make install
$ perl -MCPAN -e shell install DateTime


$ sudo su postgres
$ psql -l
$ pg_dumpbinary -d dbname postgres backup_postgres


воскресенье, 8 марта 2020 г.

Установка 1С + postgresql под windows

Установка PostgreSQL, версия 10.5-24.1C windows 10

1. PostgreSQL. Версия 11.5-12.1C. Дистрибутив СУБД PostgreSQL для Windows (64-bit) одним архивом

Обратить внимание, что если PostgreSQL установлен не по умолчанию, нужно добавить права
полный доступ для NETWORK SERVICE для папки установки (если изменен) или на папку с данными. Иначе после reboot PostgreSQL не будет запускаться.

 
2. Database location на SSD диске
если пути установки не по умолчанию, нужно добавить права
полный доступ для NETWORK SERVICE для папки установки (если изменен) или на папку с данными. Иначе после reboot PostgreSQL не будет запускаться.

3. Ставим  Cервер 1С:Предприятия (64-bit) для Windows 8.3.15.1830 или
старше.

4. IP 6 отключаем

5. Технологический журнал не настраиваем.

6. При последней установке служба агента не запускалась
Удалить службу
sc delete "1C:Enterprise 8.3 Server Agent (x86-64)"

1C:Enterprise 8.3 Server Agent (x86-64) пока вход в систему не был переделан с системной учетной записью.


7.  Настроить  postgresql.conf  Добавить в конец файла postgresql.conf
как в статье:

PostgreSQL, версия 10.5-24.1C windows 10 postgresql.conf 

Перезапустить сервер PostgreSQL


8. Если планируем ставить pg_probackup нужно пересоздать кластер  PostgreSQL с контрольными суммами.

9. Настраиваем  pg_probackup

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

Если не использум pg_probackup, нужно настроить pg_basebackup

PostgreSQL 10.5-24 настройка WAL архивирования windows
Резервное копирование кластера PostgreSQL pg_basebackup Windows
 
10. Настроить vacuum

Windows обслуживание баз PostgreSQL

В скрипте настроить путь и пароль:

REM Установка переменных окружения
SET PGBIN=C:\Program Files\PostgreSQL\10.5-24.1C\bin
SET PGUSER=postgres
SET PGPASSWORD=pass

11. Настроить backup в dump
Из статьи ниже просто взять скрипт
Резервное копирование базы PostgreSQL pg_dump под windows
Сделать свой скрипт на каждую базу в скрипте настроить:
Имя базы:
SET PGDATABASE=demo

SET PGBIN=C:\Program Files\PostgreSQL\10.5-24.1C\bin
SET PGHOST=localhost
SET PGPORT=5432
SET PGUSER=postgres
SET PGPASSWORD=pass

12. Сделать общий скрипт в планировщике

Вообще хорошо перед pg_dump
Остановить сервер 1С
"C:\Program Files\1cv8\8.3.13.1690\bin\ragent.exe" -stop
скрипт vacuum
скрипт dump на каждую базу ...
скрипт dump на каждую базу ...
После pg_dump
Запуск сервера 1С
"C:\Program Files\1cv8\8.3.13.1690\bin\ragent.exe" -start

Целесообразно настроить удаление старых копий
forfiles /P "d:\demo" /D -30 /C "cmd /c del @path /q"


13. Настройка web доступа
Установка Apache HTTP Server 64 on Microsoft Windows

суббота, 7 марта 2020 г.

Установка Apache HTTP Server 64 on Microsoft Windows

Скачиваем windows версии
или
Скачиваем с SSL
Описание
Установка Apache на Windows
Установка php на apache. Установка и настройка сервера Apache
Настройка Apache для работы 1С через HTTPS (SSL)


Серверный вариант (предполагаем что сервер 64 уже установлен и при установке выбраны Модули расширения веб-сервера):

1. Устанавливаем VC_redist.x64.exe 

2. Разархивируем httpd-2.4.41-win64-VS16.zip в c:\Apache24

3. PATH добавить c:\Apache24\bin



4. Задать host или ip (нужно на момент установки службы, потом можно убрать)

c:\Apache24\conf\httpd.conf

ServerName localhost


5. Установим службу

c:\Apache24\bin\httpd.exe -k install

6. Опубликуем базу:


7. Если сервер 64 бит,  а публиковали на платформе 32 бит, правим

 c:\Apache24\conf\httpd.conf

#LoadModule _1cws_module "C:/Program Files (x86)/1cv8/8.3.16.1148/bin/wsap24.dll"
LoadModule _1cws_module "C:/Program Files/1cv8/8.3.16.1148/bin/wsap24.dll"

Править нужно после каждого обновления публикации !!!


8. Проверить брандмауэр windows, для работы через OpenVPN должны быть разрешены публичные сети:



9.Файловый вариант устанавливаем 64 битный сервер (серверный ключ не нужен).
Дополнительно установить модули расширения веб-сервера, пользователя не создавать, службу сервера не запускать.

Для файлового варианта, следует учитывать
8.10.2.1. Общие особенности

c:\Apache24\conf\httpd.conf

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

<IfModule mpm_winnt_module>
    ThreadStackSize 8388608
</IfModule>


10. Целесообразно поставить в автозагрузку или в планировщик

c:\Apache24\bin\ApacheMonitor.exe

для управления apache







воскресенье, 1 марта 2020 г.

lxd debian 10 сборка PostgreSQL 11.7 (По Олегу Харину)

Платформа 8.3 → Решение проблем производительности PostgreSQL при расчёте себестоимости в ERP

$ lxc image list images: > 1.txt
$ lxc launch images:debian/10 deb10h
#$ lxc list
#$ lxc config set deb10h security.privileged true
#$ lxc restart deb10h
$ lxc exec deb10h /bin/bash
# adduser builder
# usermod -aG sudo builder

# apt update
# apt upgrade
## apt install qemu-user-static -y
# apt install mc samba sudo ssh wget -y

# poweroff
#$ lxc stop deb10h
$ lxc copy deb10h harin117

$ lxc start harin117
$ lxc list

Соединяемся по ssh builder@192.168.1.156

Последовательность сборки по шагам (работаем под пользователем не root):
  1. Ставим необходимые общие пакеты для сборки:
    $ sudo apt-get install build-essential fakeroot devscripts -y
    $ wget https://apt.postgresql.org/pub/repos/apt/pool/main/p/postgresql-11/postgresql-11_11.7.orig.tar.bz2
  2. Распаковываем приложенный архив для сборки PostgreSQL:
    $ mkdir postgresql-11_11.7-1.1C
    $ cd postgresql-11_11.7-1.1C
  3. Копируем:
    $ cp ~/postgresql-11_11.7-1.1C.opt.dsc .
    $ cp ~/postgresql-11_11.7-1.1C.opt.debian.tar.xz .
    $ cp ~/postgresql-11_11.7.orig.tar.bz2 .
    $ ls
    postgresql-11_11.7-1.1C.opt.debian.tar.xz  postgresql-11_11.7-1.1C.opt.dsc  postgresql-11_11.7.orig.tar.bz2
     
  4. Распаковываем и накладываем патчи:
    $ dpkg-source -x postgresql-11_11.7-1.1C.opt.dsc
  5. Переходим в каталог сборки:
    $ cd postgresql-11-11.7
  6. Устанавливаем пакеты, необходимые для сборки PostgreSQL:
    $ sudo mk-build-deps -i
    1. - для Ubuntu-сервер потребовалось ещё предварительно установить пакет equivs (для Debian нет надобности):
        $ sudo apt-get install equivs
  7. Запускаем сборку:
    $ debuild -b -uc -us
На хорошем компьютере сборка примерно 20-45 минут.
Если всё проходит нормально, то получаем в каталоге postgresql-11_11.7-1.1C файлы *.deb.

Для работы 1С достаточно установить:

 libpq5_11.7-1.1C.opt_amd64.deb
postgresql-11_11.7-1.1C.opt_amd64.deb
postgresql-client-11_11.7-1.1C.opt_amd64.deb


Пакуем в postgresql-11_11.7-1.1C.tar.gz

Установка в контейнер debian

Можно создать новый контейнер:
 

$ lxc launch images:debian/10 dpg
#$ lxc config set dpg security.privileged true
#$ lxc restart dpg
$ lxc exec dpg /bin/bash
# adduser user
# usermod -aG sudo user
# apt update
# apt upgrade
## apt install qemu-user-static -y
# apt install mc samba sudo ssh wget -y
# dpkg-reconfigure locales
## Выбираем ru_RU.UTF-8
# locale -a  
## timedatectl set-timezone Europe/Moscow
# dpkg-reconfigure tzdata
## apt install keyboard-configuration
## dpkg-reconfigure keyboard-configuration
Сохранить.
# poweroff
$ lxc copy dpg pgh117
$ lxc start pgh117


$ lxc list
| pgh116     | RUNNING | 192.168.0.173 (eth0) |


В контейнере со сборкой
$ scp postgresql-11_11.6-1.1C.tar.gz user@192.168.0.173:/home/user


Соединяемся по ssh user@192.168.0.173

$ ssh user@192.168.0.173
#$ sudo apt search postgresql-common
$ wget -q https://www.postgresql.org/media/keys/ACCC4CF8.asc -O - | sudo apt-key add -
$ sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ buster-pgdg main" >> /etc/apt/sources.list.d/pgdg.list'
$ sudo apt-get update
$ sudo apt libllvm7 libxslt1.1
$ sudo apt install postgresql-common
$ tar xvzf postgresql-11_11.7-1.1C.tar.gz
$ cd postgresql-11_11.7-1.1C
$ sudo dpkg -i libpq5_11.7-1.1C.opt_amd64.deb
$ sudo dpkg -i postgresql-client-11_11.7-1.1C.opt_amd64.deb
$ sudo dpkg -i postgresql-11_11.7-1.1C.opt_amd64.deb
$ dpkg -l | grep 11.7-1.1C | awk -F' ' '{print $2}' | sudo xargs apt-mark hold

$ sudo pg_dropcluster --stop 11 main
$ sudo pg_createcluster --locale ru_RU.utf8 11 main --  --data-checksums
$ sudo pg_ctlcluster 11 main start
$ sudo -u postgres psql -U postgres -c "alter user postgres with password 'pass';"
$ sudo pg_ctlcluster 11 main stop 
$ sudo apt install nano
$ sudo nano /etc/postgresql/11/main/postgresql.conf

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

# DB Version: 11
# 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 = 8GB # 4GB for 1c
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 = 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
#log_duration = on
#log_statement = all
log_destination = stderr
plantuner.fix_empty_table = 'on'
online_analyze.table_type = 'temporary'
online_analyze.verbose = 'off'

Сохранить.

$ sudo pg_ctlcluster 11 main start 

Выход.
$ sudo poweroff

#$ lxc stop pgh117
$ lxc copy pgh117 pgh117-cop
$ lxc start pgh117

$ mkdir ~/backup/
$ nano ~/backup_pgh117.sh


#!/usr/bin/env bash
set -ex
lxc stop pgh117
BACKUP_DIR=/home/user/backup
#HOSTS=$(lxc list -c n --format csv)
HOSTS=pgh117
for HOST in ${HOSTS}

do
    BACKUP_NAME=${HOST}-$(date +"%Y-%m-%d")

    lxc snapshot ${HOST} auto-backup
    lxc publish ${HOST}/auto-backup --alias ${BACKUP_NAME}
    #lxc image export ${BACKUP_NAME} ${BACKUP_DIR}/${BACKUP_NAME}.tar.gz
    lxc image export ${BACKUP_NAME} ${BACKUP_DIR}/${BACKUP_NAME}
    lxc image delete ${BACKUP_NAME}
    lxc delete ${HOST}/auto-backup
done
lxc start pgh117

Сохранить.


$ chmod +x ~/backup_pgh117.sh
$ ./backup_pgh117.sh

+ lxc stop pgh117
+ BACKUP_DIR=/home/user/backup
+ HOSTS=pgh117
+ for HOST in ${HOSTS}
++ date +%Y-%m-%d
+ BACKUP_NAME=pgh117-2020-03-01
+ lxc snapshot pgh117 auto-backup
+ lxc publish pgh117/auto-backup --alias pgh117-2020-03-01
Контейнер публикуется с отпечатком: 51bb790f417f919264fa95f8ef1c8dd6d0cfdbcb9dc7af639187526e2236b64b
+ lxc image export pgh117-2020-03-01 /home/user/backup/pgh117-2020-03-01
Image exported successfully!
+ lxc image delete pgh117-2020-03-01
+ lxc delete pgh117/auto-backup
+ lxc start pgh117

pgh117-2020-03-01.tar.gz

Начинаем испытания.