Потребовалось сделать сервер 1С для чего была выбрана связка OracleLinux 6.1 + 1C82 (8.2.14.519) + Postgres 9.0.4.Собрал следующее железо для тестов:
MB: Asus P5
CPU : Intel(R) Pentium(R) D CPU 3.20GHz 2 ядра
MEM : 8G
HDD : 1x160G 7200 (старый нового не нашлось)
hdparm -Tt /dev/sda
/dev/sda:
Timing cached reads: 2670 MB in 2.00 seconds = 1335.62 MB/sec
Timing buffered disk reads: 220 MB in 3.00 seconds = 73.30 MB/sec
При установке выделил под SWAP 10G, остальное под корень, получилось что-то вроде:
/dev/sda1 * 1 18152 145803264 83 Linux
/dev/sda2 18152 19458 10484736 82 Linux своп / Solaris
ставил все без LVM, разбивка руками. Выбрал минимальную установку
Прицепил RPM-репозитории:
cd /etc/yum.repos.d
touch public-yum-ol6.repo
добавил в файл public-yum-ol6.repo:
[ol6_ga_base]
name=Oracle Linux 6 GA - $basearch - base
baseurl=http://public-yum.oracle.com/repo/OracleLinux/OL6/0/base/$basearch/
gpgkey=http://public-yum.oracle.com/RPM-GPG-KEY-oracle-ol6
gpgcheck=1
enabled=1
[ol6_u1_base]
name=Oracle Linux 6 U1 - $basearch - base
baseurl=http://public-yum.oracle.com/repo/OracleLinux/OL6/1/base/$basearch/
gpgkey=http://public-yum.oracle.com/RPM-GPG-KEY-oracle-ol6
gpgcheck=1
enabled=1
затем все как обычно
yum update
итак что видим ....
если верить описанию система очень быстрая, некоторые прогнозируют прирост аж 110 процентов.
смотрим что есть по дефолту
cat /etc/sysctl.conf
# Kernel sysctl configuration file for Red Hat Linux
# Controls IP packet forwarding
net.ipv4.ip_forward = 0
# Controls source route verification
net.ipv4.conf.default.rp_filter = 1
# Do not accept source routing
net.ipv4.conf.default.accept_source_route = 0
# Controls the System Request debugging functionality of the kernel
kernel.sysrq = 0
# Controls whether core dumps will append the PID to the core filename.
# Useful for debugging multi-threaded applications.
kernel.core_uses_pid = 1
# Controls the use of TCP syncookies
net.ipv4.tcp_syncookies = 1
# Disable netfilter on bridges.
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0
# Controls the maximum size of a message, in bytes
kernel.msgmnb = 65536
# Controls the default maxmimum size of a mesage queue
kernel.msgmax = 65536
# Controls the maximum shared segment size, in bytes
kernel.shmmax = 68719476736
# Controls the maximum number of shared memory segments, in pages
kernel.shmall = 4294967296
vm.overcommit_memory=2
неплохо
добавим на всякий случай
kernel.panic=5
kernel.panic_on_oops=5
kernel.panic_on_io_nmi=5
kernel.panic_on_unrecovered_nmi=5
отключим все ненужное .... взламывать сервер некому, он будет сугубо локальным.
chkconfig ip6tables off
chkconfig iptables off
chkconfig netfs off
chkconfig postfix off
chkconfig saslauthd off
затем отключим SELinux, так как с ним не работает 1C.
vi /etc/selinux/config
SELINUX=disabled
и reboot
Приступим к настройке 1C и PostgreSQL. Прочитал статью http://www.alsigned.ru/?p=1129 про установку 1С 8.2 в связке с Postgresql 9.0. Сделал все как в статье, единственно подменил в конфигурации PostgreSQL 9.0.4 и патчи взял для версии 9.0.3 (http://v8.1c.ru/overview/postgres_patches_notes.htm).
Краткое изложение процесса:
Загружаем необходимые пакеты:
yum install rpm-build gcc make glibc-devel bison flex python-devel tcl-devel readline-devel \
zlib-devel openssl-devel krb5-devel e2fsprogs-devel gettext pam-devel openldap-devel icu libicu libicu-devel
Патчим PostgreSQL
wget http://v8.1c.ru/overview/postgresql_patches/9-0-4/postgresql...
rpm -i postgresql-9.0.4-1.1C.src.rpm
В файле /usr/lib/rpm/macros в параметре %_default_patch_fuzz заменяем 0 на 2.
В файле /root/rpmbuild/SOURCES/postgresql.init прописываем:
PGENGINE=/usr/pgsql/bin
PGDATA=/var/lib/pgsql/data
PGLOG=/var/lib/pgsql/pgstartup.log
В spec-файле /root/rpmbuild/SPECS/postgresql-9.0-4C.spec меняем postgresql-9.0 на postgresql, получится примерно так:
525 chkconfig --add postgresql
530 sbin/service postgresql condstop >/dev/null 2>&1
531 chkconfig --del postgresql
537 /sbin/service postgresql condrestart >/dev/null 2>&1
Собираем пакет с пропатченным PostgreSQL:
rpmbuild -ba --define 'runselftest 0' /root/rpmbuild/SPECS/postgresql-9.0-4C.spec
Устанавливаем пакет:
rpm -i /root/rpmbuild/RPMS/x86_64/*.rpm
Инициализируем БД:
su postgres
/usr/pgsql/bin/initdb -D /var/lib/pgsql/data --locale=ru_RU.UTF-8
Запускаем postgresql:
service postgresql start
Устанавливаем 1С:
Указываем имя хоста в /etc/hosts (имя должно совпадать с именем HOSTNAME, указанным в файле /etc/sysconfig/network):
127.0.0.1 localhost 1csrv 1csrv.mydomain.local
192.168.1.1 1csrv 1csrv.mydomain.local
Устанавливаем пакеты с 1С:
rpm -i 1C_Enterprise82-common-8.2.13-205.x86_64.rpm 1C_Enterprise82-server-8.2.13-205.x86_64.rpm \
1C_Enterprise82-ws-8.2.13-205.x86_64.rpm 1C_Enterprise82-common-nls-8.2.13-205.x86_64.rpm \
1C_Enterprise82-server-nls-8.2.13-205.x86_64.rpm 1C_Enterprise82-ws-nls-8.2.13-205.x86_64.rpm
далее активируем сервисы 1c и postgresql:
chkconfig srv1cv82 on
chkconfig postgresql on
В .bash_profile правим "PGDATA=/var/lib/pgsql9/data" на "PGDATA=/var/lib/pgsql/data".
Далее запустил 1С-клиента, создал базу TEST и запустил тест Гилева (gilev.ru)
...ждал минут 20 !!!! набрал 9.1 !!! балов явно мало для комфортной работы. Гилев рекомендует включить блокировки вручную .... что и делаем через конфигуратор
снова тест ..... уже 14 баллов.
Пробуем оптимизировать postgresql.conf:
shared_buffers = 1024MB # min 128kB
work_mem = 400MB # min 64kB
maintenance_work_mem = 2048MB # min 1MB
fsync = off # turns forced synchronization on or off
wal_sync_method = fdatasync # the default is the first option
commit_delay = 50 # range 0-100000, in microseconds
commit_siblings = 7 # range 1-1000
cpu_tuple_cost = 0.001 # same scale as above
cpu_index_tuple_cost = 0.0005 # same scale as above
effective_cache_size = 4096MB
далее
/etc/init.d/postgresql restart
/etc/init.d/srv1cv82 restart
Следующее тестирование показало 20.4 баллов.... неплохой результат.
Поставил две конфигурации кадрыКОРП + бухгалтерияКОПРП. В конфигураторе сменил блокировки на управляемый режим блокировок.
Написал скрипт для чистки логов и бекапа БД и поместил его в cron:
#!/bin/bash
set +x
/bin/rm -rf /backups/1c/*.log
/bin/touch /backups/1c/1c8_bkp.log
BKPDIR=/backups/1c
TIME=`date +%d-%m-%Y_%H:%M:%S` # год,месяц,день,часы,минуты
DATE_ARC=`date +%d%m%Y`
LOG=/backups/1c/1c8_bkp.log
dl() {
$* >> $LOG 2>&1
}
dl echo $TIME
dl /etc/init.d/srv1cv82 stop
dl /bin/sleep 10
/bin/find /backups/1c -type f -mtime +1 -print | /usr/bin/xargs /bin/rm -f
/bin/find /var/lib/pgsql/data/pg_log/ -type f -mtime +1 -print | /usr/bin/xargs /bin/rm -f
/usr/pgsql/bin/pg_dump -U postgres -Fc -Z9 -c -f /backups/1c/buh.$DATE_ARC.sql buh
/usr/pgsql/bin/pg_dump -U postgres -Fc -Z9 -c -f /backups/1c/hrm.$DATE_ARC.sql hrm
/usr/pgsql/bin/pg_dump -U postgres -Fc -Z9 -c -f /backups/1c/test.$DATE_ARC.sql test
dl echo $TIME
dl /etc/init.d/srv1cv82 start
Вот пожалуй и все
URL: http://www.alsigned.ru/?p=1129
Обсуждается: http://www.opennet.ru/tips/info/2621.shtml