среда, 16 января 2019 г.

Загрузка ФИАС ЗИК ГУ 3

 
Скачать https://its.1c.ru/download/fias2 в D:\Temp\FIAS



https://its.1c.ru/download/fias/download2?id=0


Разархивировать в выбранную папку


 

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

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

вторник, 15 января 2019 г.

Linux tuning to improve PostgreSQL performance

Замечательные лекции Ильи Космодемьянского:

Linux tuning to improve PostgreSQL performance
Linux tuning for Database performance
How does PostgreSQL work with disks: a DBA’s checklist in detail
презентация
How does PostgreSQL work with disks: a DBA's checklist in detail. PGConf.US 2015
Linux IO internals for database administrators
Millions of Queries per Second: PostgreSQL and MySQL’s Peaceful Battle at Today’s Demanding Workloads

В защиту swap'а [в Linux]: распространенные заблуждения



Говоря о vm.swappiness, необходимо учитывать исключительно важное изменение недавнего времени, сделанное Satoru Moriya в vmscan в 2012 году: оно в значительной мере меняет поведение vm.swappiness = 0.

Этот патч по существу говорит, что при установке vm.swappiness = 0 мы донельзя настроены против сканирования (и высвобождения) любых анонимных страниц, пока не настало состояние высокой конкуренции за память. Как отмечалось ранее, в общем случае вы не захотите такого поведения, поскольку оно исключает равенство приоритетов высвобождения до моментов экстремального давления на память, что само по себе в действительности может и привести к этому экстремальному давлению. Поэтому vm.swappiness = 1 — минимальное значение, которое стоит выбирать, если вы не хотите активировать такое особое поведение для сканирования анонимных страниц, реализованное в патче.

Значение ядра по умолчанию — vm.swappiness = 60.

$ cat /proc/sys/vm/swappiness
60
$ cat /proc/sys/vm/min_free_kbytes
67584


PostgreSQL High Availability Cookbook Second Edition

kernel.sched_migration_cost_ns = 5000000
kernel.sched_autogroup_enabled = 0
vm.dirty_background_bytes = 67108864 # 64 Mb
#vm.dirty_bytes = 1073741824 # для размера кэша RAID или SSD 1024 Mb
vm.dirty_bytes = 536870912 # для размера кэша RAID или SSD 512MB cache on board
vm.zone_reclaim_mode = 0
vm.swappiness =1

Millions of Queries per Second: PostgreSQL and MySQL’s Peaceful Battle at Today’s Demanding Workloads

vm.swappiness=1
cpupower frequency-set --governor performance
kernel.sched_autogroup_enabled=0
kernel.sched_migration_cost_ns= 5000000
vm.dirty_background_bytes=67108864
vm.dirty_bytes=536870912
IO scheduler [deadline] 


Tune Linux Kernel Parameters For PostgreSQL Optimization

 

Установка Zabbix сервера и веб-интерфейса с базой данных PostgreSQL

понедельник, 14 января 2019 г.

Фрагментация памяти Linux

Использование менеджера динамической памяти TCmalloc с платформой 1С:Предприятие версий 8.3.10-8.3.13

Платформа 8.3 → Сервер 1С:Предприятия, "ошибка" ATTN Server unavailable

Начиная с версии 8.3.15, TCmalloc используется в качестве менеджера памяти по умолчанию для  Linux и поставляется вместе с платформой.


Linux memory fragmentation
How to see Linux' view of the RAM in order to determinate the fragmentation

$ sudo cat /sys/kernel/debug/extfrag/extfrag_index



$ sysctl vm.compact_memory=1


Создание и настройка swap в Ubuntu

Есть ли какая-либо связь между фрагментацией памяти и включен ли обмен в системе?

Linux: Memory fragmentation and compaction

Как освободить память Linux

Увеличение скорости работы Ubuntu

Настройка Swappiness и кеширования в Linux

В защиту swap'а [в Linux]: распространенные заблуждения 

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

Понимание производительности Postgres

Понимание производительности Postgres
pg-extras
heroku-pg-extras
pg-extras


python-pgextras
python-pgextras-doc

#$ git clone https://github.com/scottwoodall/python-pgextras.git
#$ cd python-pgextras
#$ sudo python setup.py install
$ sudo apt install python-pip
$ pip install pgextras
$ pip install --upgrade pip
$ pip install psycopg2-binary --user
$ pgextras -dsn "dbname='demo' user='postgres' host='localhost' port=5432 password='pass'" -methods cache_hit

cache_hit
###############################################################################
+----------------+------------------------+
| name           | ratio                  |
+----------------+------------------------+
| index hit rate | 0.98541833443308223331 |
| table hit rate | 0.91440228445786790547 |
+----------------+------------------------+
$ free -m
              total        used        free      shared  buff/cache   available
Память:       16040        1470       12091         217        2478       13973
Подкачка:           0           0           0








$ pgextras -dsn "dbname='demo' user='postgres' host='localhost' port=5432" -methods total_table_size

+-----------------------------+------------+
| name                        | size       |
+-----------------------------+------------+
| _accumrg12451               | 189 MB     |
| _inforg33069                | 154 MB     |
| _crg665                     | 140 MB     |
| config                      | 134 MB     |
| _accumrg12028               | 133 MB     |
| _accumrg12274               | 106 MB     |
| _accumrgt12287              | 88 MB      |
| _accumrgtn12473             | 75 MB      |
| _accumrg12518               | 63 MB      |

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

PostgreSQL процент попадания в кэш

postgres=# SELECT round(100 * sum(blks_hit) / sum(blks_hit + blks_read), 3) as cache_hit_ratio
FROM pg_stat_database;
 cache_hit_ratio
-----------------
          94.662
(1 строка)

Использование буферного кеша:

postgres=# CREATE EXTENSION pg_buffercache;
CREATE EXTENSION
postgres=#

SELECT 'total', pg_size_pretty(count(*) * (SELECT current_setting('block_size')::int))
FROM pg_buffercache
UNION SELECT 'dirty', pg_size_pretty(count(*) * (SELECT current_setting('block_size')::int))
FROM pg_buffercache
WHERE isdirty
UNION SELECT 'clear', pg_size_pretty(count(*) * (SELECT current_setting('block_size')::int))
FROM pg_buffercache
WHERE NOT isdirty
UNION SELECT 'used', pg_size_pretty(count(*) * (SELECT current_setting('block_size')::int))
FROM pg_buffercache
WHERE reldatabase IS NOT NULL
UNION SELECT 'free', pg_size_pretty(count(*) * (SELECT current_setting('block_size')::int))
FROM pg_buffercache
WHERE reldatabase IS NULL;
SELECT
d.datname,
pg_size_pretty(pg_database_size(d.datname)) AS database_size,
pg_size_pretty(count(b.bufferid) * (SELECT current_setting('block_size')::int)) AS size_in_shared_buffers,
round((100 * count(b.bufferid) / (SELECT setting FROM pg_settings WHERE name = 'shared_buffers')::decimal),2)
AS pct_of_shared_buffers
FROM pg_buffercache b
JOIN pg_database d ON b.reldatabase = d.oid
WHERE b.reldatabase IS NOT NULL
GROUP BY 1 ORDER BY 4 DESC LIMIT 10;

   datname  | database_size | size_in_shared_buffers | pct_of_shared_buffers
-----------+---------------+------------------------+-----------------------
 demo1     | 5342 MB       | 120 MB                 |                 93.98
 demo      | 1960 MB       | 5896 kB                |                  4.50
 postgres  | 7653 kB       | 1200 kB                |                  0.92
 template1 | 7621 kB       | 640 kB                 |                  0.49
(4 строки)

# postgresql.conf
shared_preload_libraries = 'online_analyze, plantuner, pg_stat_statements' # (change requires restart)

pg_stat_statements.max = 10000
pg_stat_statements.track = all

Сохранить.

postgres=# CREATE EXTENSION pg_stat_statements;

Сколько оперативной памяти использует PostgreSQL?

How much RAM is PostgreSQL using?

$ ps -u postgres o pid= | sed 's#[0-9]\+#/proc/&/smaps#'| xargs sudo grep ^Pss: | awk '{A+=$2} END {print A}'

$ pg_top --dbname=demo --host=localhost --username=postgres --password

last pid: 23573;  load avg:  0.06,  0.09,  0.11;       up 0+01:51:28                                                                                                                                 14:41:23
8 processes: 8 sleeping
CPU states:  0.1% user,  0.0% nice,  0.1% system, 99.7% idle,  0.0% iowait
Memory: 4776M used, 11G free, 35M buffers, 2120M cached
DB activity:   0 tps,  0 rollbs/s,   0 buffer r/s, 100 hit%,     38 row r/s,    0 row w/s
DB I/O:     0 reads/s,     0 KB/s,     0 writes/s,     1 KB/s
DB disk: 984.2 GB total, 923.9 GB free (6% used)
Swap:

  PID USERNAME PRI NICE  SIZE   RES STATE   TIME   WCPU    CPU COMMAND
14668 postgres  20    0  356M  185M sleep   0:47  0.01%  0.00% postgres: 10/main: postgres demo 127.0.0.1(34192) idle
 1053 postgres  20    0  313M 8872K sleep   0:01  0.00%  0.00% postgres: 10/main: wal writer process
 1052 postgres  20    0  314M  131M sleep   0:00  0.00%  0.00% postgres: 10/main: writer process
 1051 postgres  20    0  314M  126M sleep   0:00  0.00%  0.00% postgres: 10/main: checkpointer process
 1054 postgres  20    0  314M 6636K sleep   0:00  0.00%  0.00% postgres: 10/main: autovacuum launcher process
15517 postgres  20    0  317M   24M sleep   0:00  0.00%  0.00% postgres: 10/main: postgres demo 127.0.0.1(34268) idle
23574 postgres  20    0  315M   16M sleep   0:00  0.00%  0.00% postgres: 10/main: postgres demo ::1(44446) idle
 1056 postgres  20    0  314M 4968K sleep   0:00  0.00%  0.00% postgres: 10/main: bgworker: logical replication launcher


$ sudo grep -B1 -E '^Size: *[0-9]{6}' /proc/14668/smaps
7feca9c68000-7fecb2dfc000 rw-s 00000000 00:05 18103                      /dev/zero (deleted)
Size:             149072 kB


$ sudo grep -A14 7feca9c68000-7fecb2dfc000 /proc/14668/smaps
7feca9c68000-7fecb2dfc000 rw-s 00000000 00:05 18103                      /dev/zero (deleted)
Size:             149072 kB
KernelPageSize:        4 kB
MMUPageSize:           4 kB
Rss:              135664 kB
Pss:               46961 kB
Shared_Clean:          0 kB
Shared_Dirty:     135660 kB
Private_Clean:         0 kB
Private_Dirty:         4 kB
Referenced:       135664 kB
Anonymous:             0 kB
LazyFree:              0 kB
AnonHugePages:         0 kB
ShmemPmdMapped:        0 kB



$ ps -u postgres o pid= | sed 's#[0-9]\+#/proc/&/smaps#' | xargs sudo grep ^Pss: | awk '{A+=$2} END{print A}'
203953

postgres@u1604:~$ free; /usr/lib/postgresql/10/bin/pg_ctl -D /var/lib/postgresql/10/main -m immediate stop; free
              total        used        free      shared  buff/cache   available
Память:    16425432     2527808    11553792      156700     2343832    13397088
Подкачка:           0           0           0
ожидание завершения работы сервера.... готово
сервер остановлен
              total        used        free      shared  buff/cache   available
Память:    16425432     2512900    11712696        9260     2199836    13559644
Подкачка:           0           0           0
postgres@u1604:~$