Skip to content

Commit 734928f

Browse files
committed
fix
1 parent bcbbea6 commit 734928f

File tree

3 files changed

+31
-28
lines changed

3 files changed

+31
-28
lines changed

201611/20161121_01.md

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -404,37 +404,37 @@ unix_socket_directories = '.'
404404
tcp_keepalives_idle = 60
405405
tcp_keepalives_interval = 10
406406
tcp_keepalives_count = 10
407-
shared_buffers = 128GB
408-
maintenance_work_mem = 4GB
407+
shared_buffers = 128GB # 1/4 主机内存
408+
maintenance_work_mem = 2GB # min( 2G, (1/4 主机内存)/autovacuum_max_workers )
409409
dynamic_shared_memory_type = posix
410410
vacuum_cost_delay = 0
411411
bgwriter_delay = 10ms
412412
bgwriter_lru_maxpages = 1000
413413
bgwriter_lru_multiplier = 10.0
414-
bgwriter_flush_after = 0 # IO很好的机器,不需要考虑平滑调度
414+
bgwriter_flush_after = 0 # IO很好的机器,不需要考虑平滑调度
415415
max_worker_processes = 128
416-
max_parallel_workers_per_gather = 0 # 如果需要使用并行查询,设置为大于1
416+
max_parallel_workers_per_gather = 0 # 如果需要使用并行查询,设置为大于1 ,不建议超过 主机cores-2
417417
old_snapshot_threshold = -1
418418
backend_flush_after = 0 # IO很好的机器,不需要考虑平滑调度, 否则建议128~256kB
419419
wal_level = replica
420420
synchronous_commit = off
421-
full_page_writes = on
422-
wal_buffers = 1GB
421+
full_page_writes = on # 支持原子写超过BLOCK_SIZE的块设备,在对齐后可以关闭。或者支持cow的文件系统可以关闭。
422+
wal_buffers = 1GB # min( 2047MB, shared_buffers/32 ) = 512MB
423423
wal_writer_delay = 10ms
424424
wal_writer_flush_after = 0 # IO很好的机器,不需要考虑平滑调度, 否则建议128~256kB
425-
checkpoint_timeout = 30min # 不建议频繁做检查点,否则XLOG会产生很多的FULL PAGE WRITE。
426-
max_wal_size = 256GB # 建议是SHARED BUFFER的2倍
427-
min_wal_size = 64GB
428-
checkpoint_completion_target = 0.05 # 硬盘好的情况下,可以让检查点快速结束,恢复时也可以快速达到一致状态。否则建议0.5~0.9
429-
checkpoint_flush_after = 0 # IO很好的机器,不需要考虑平滑调度, 否则建议128~256kB
425+
checkpoint_timeout = 30min # 不建议频繁做检查点,否则XLOG会产生很多的FULL PAGE WRITE(when full_page_writes=on)
426+
max_wal_size = 256GB # 建议是SHARED BUFFER的2倍
427+
min_wal_size = 64GB # max_wal_size/4
428+
checkpoint_completion_target = 0.05 # 硬盘好的情况下,可以让检查点快速结束,恢复时也可以快速达到一致状态。否则建议0.5~0.9
429+
checkpoint_flush_after = 0 # IO很好的机器,不需要考虑平滑调度, 否则建议128~256kB
430430
archive_mode = on
431431
archive_command = '/bin/date' # 后期再修改,如 'test ! -f /disk1/digoal/arch/%f && cp %p /disk1/digoal/arch/%f'
432432
max_wal_senders = 8
433433
random_page_cost = 1.3 # IO很好的机器,不需要考虑离散和顺序扫描的成本差异
434434
parallel_tuple_cost = 0
435435
parallel_setup_cost = 0
436436
min_parallel_relation_size = 0
437-
effective_cache_size = 300GB # 看着办,剩下的都是OS可用的CACHE。
437+
effective_cache_size = 300GB # 看着办,扣掉会话连接RSS,shared buffer, autovacuum worker, 剩下的都是OS可用的CACHE。
438438
force_parallel_mode = off
439439
log_destination = 'csvlog'
440440
logging_collector = on
@@ -445,13 +445,13 @@ log_disconnections = on
445445
log_error_verbosity = verbose
446446
log_timezone = 'PRC'
447447
vacuum_defer_cleanup_age = 0
448-
hot_standby_feedback = off # 建议关闭,以免备库长事务导致 主库无法回收垃圾而膨胀。
448+
hot_standby_feedback = off # 建议关闭,以免备库长事务导致 主库无法回收垃圾而膨胀。
449449
max_standby_archive_delay = 300s
450450
max_standby_streaming_delay = 300s
451451
autovacuum = on
452452
log_autovacuum_min_duration = 0
453-
autovacuum_max_workers = 16 # CPU核多,并且IO好的情况下,可多点,但是注意16*autovacuum mem,会消耗较多内存,所以内存也要有基础。
454-
autovacuum_naptime = 45s # 建议不要太高频率,否则会因为vacuum产生较多的XLOG。
453+
autovacuum_max_workers = 16 # CPU核多,并且IO好的情况下,可多点,但是注意16*autovacuum mem,会消耗较多内存,所以内存也要有基础。
454+
autovacuum_naptime = 45s # 建议不要太高频率,否则会因为vacuum产生较多的XLOG。
455455
autovacuum_vacuum_scale_factor = 0.1
456456
autovacuum_analyze_scale_factor = 0.1
457457
autovacuum_freeze_max_age = 1600000000

201710/20171011_01.md

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -131,15 +131,16 @@ fio的测试规格。
131131
```
132132
# 规格相关(8C, 64G为例)
133133
shared_buffers = 16GB # 1/4 主机内存 = 16G
134-
work_mem = 64MB # 1/4 主机内存 / 256 = 16G/256 = 64MB
135-
wal_buffers = 512MB # min(2047MB, shared_buffers/32) = 512MB
134+
work_mem = 64MB # 1/4 主机内存 / 256 = 16G/256 = 64MB (假设256个并发同时使用work_mem)
135+
wal_buffers = 512MB # min( 2047MB, shared_buffers/32 ) = 512MB
136136
maintenance_work_mem = 2GB # min( 2G, (1/4 主机内存)/autovacuum_max_workers ) = min(2G, 16/5) = 2GB
137137
max_wal_size = 32GB # shared_buffers*2 = 16*2 = 32GB
138138
min_wal_size = 8GB # max_wal_size/4 = 32/4 = 8GB
139139
effective_cache_size = 40GB # 5/8 主机内存 = 40GB
140140
max_parallel_workers_per_gather = 6 # 主机cores-2 = 8-2 = 6
141141
142142
# 优化器相关
143+
# https://github.com/digoal/blog/blob/master/201311/20131126_03.md
143144
seq_page_cost = 1.0
144145
random_page_cost = 1.2
145146
cpu_tuple_cost = 0.01
@@ -168,7 +169,7 @@ max_parallel_workers = 128
168169
wal_level = replica
169170
fsync = on
170171
synchronous_commit = off
171-
full_page_writes = on
172+
full_page_writes = on # 支持原子写超过BLOCK_SIZE的块设备,在对齐后可以关闭。或者支持cow的文件系统可以关闭。
172173
wal_writer_delay = 10ms
173174
wal_writer_flush_after = 1MB
174175
checkpoint_timeout = 35min
@@ -204,9 +205,9 @@ autovacuum_multixact_freeze_max_age = 1200000000
204205
autovacuum_vacuum_cost_delay = 0
205206
statement_timeout = 0
206207
vacuum_freeze_min_age = 50000000
207-
vacuum_freeze_table_age = 500000000
208+
vacuum_freeze_table_age = 800000000
208209
vacuum_multixact_freeze_min_age = 50000000
209-
vacuum_multixact_freeze_table_age = 500000000
210+
vacuum_multixact_freeze_table_age = 800000000
210211
datestyle = 'iso, ymd'
211212
timezone = 'PRC'
212213
lc_messages = 'en_US.UTF8'

201710/20171018_01.md

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -544,6 +544,8 @@ tcp_keepalives_interval = 60
544544
tcp_keepalives_count = 10
545545
shared_buffers = 256MB # 共享内存,建议设置为系统内存的1/4 .
546546
maintenance_work_mem = 64MB # 系统内存超过32G时,建议设置为1GB。超过64GB时,建议设置为2GB。超过128GB时,建议设置为4GB。
547+
work_mem = 64MB # 1/4 主机内存 / 256 (假设256个并发同时使用work_mem)
548+
wal_buffers = 512MB # min( 2047MB, shared_buffers/32 )
547549
dynamic_shared_memory_type = posix
548550
vacuum_cost_delay = 0
549551
bgwriter_delay = 10ms
@@ -552,16 +554,16 @@ bgwriter_lru_multiplier = 5.0
552554
effective_io_concurrency = 0
553555
max_worker_processes = 128
554556
max_parallel_workers_per_gather = 32 # 建议设置为主机CPU核数的一半。
555-
max_parallel_workers = 32 # 建议设置为主机CPU核数的一半。
557+
max_parallel_workers = 32 # 看业务AP和TP的比例,以及AP TP时间交错分配。实际情况调整。例如 主机CPU cores-2
556558
wal_level = replica
557559
fsync = on
558560
synchronous_commit = off
559-
full_page_writes = on
561+
full_page_writes = on # 支持原子写超过BLOCK_SIZE的块设备,在对齐后可以关闭。或者支持cow的文件系统可以关闭。
560562
wal_writer_delay = 10ms
561563
wal_writer_flush_after = 1MB
562564
checkpoint_timeout = 35min
563-
max_wal_size = 8GB # 建议设置为max(8GB, shared_buffers*2)
564-
min_wal_size = 80MB
565+
max_wal_size = 32GB # shared_buffers*2
566+
min_wal_size = 8GB # max_wal_size/4
565567
archive_mode = on
566568
archive_command = '/bin/date'
567569
max_wal_senders = 10
@@ -574,7 +576,7 @@ parallel_tuple_cost = 0.1
574576
parallel_setup_cost = 1000.0
575577
min_parallel_table_scan_size = 8MB
576578
min_parallel_index_scan_size = 512kB
577-
effective_cache_size = 10GB # 建议设置为主机内存的3/4
579+
effective_cache_size = 10GB # 建议设置为主机内存的5/8
578580
log_destination = 'csvlog'
579581
logging_collector = on
580582
log_directory = 'log'
@@ -602,9 +604,9 @@ statement_timeout = 0 # 单位ms, s, min, h, d.
602604
lock_timeout = 0 # 单位ms, s, min, h, d. 表示锁等待的超时时间,0表示不限制。
603605
idle_in_transaction_session_timeout = 2h # 单位ms, s, min, h, d. 表示空闲事务的超时时间,0表示不限制。
604606
vacuum_freeze_min_age = 50000000
605-
vacuum_freeze_table_age = 500000000
606-
vacuum_multixact_freeze_min_age = 5000000
607-
vacuum_multixact_freeze_table_age = 500000000
607+
vacuum_freeze_table_age = 800000000
608+
vacuum_multixact_freeze_min_age = 50000000
609+
vacuum_multixact_freeze_table_age = 800000000
608610
datestyle = 'iso, ymd'
609611
timezone = 'PRC'
610612
lc_messages = 'en_US.UTF8'

0 commit comments

Comments
 (0)