Skip to content

Commit e592413

Browse files
authored
Update pgsql_perf_tuning.md
1 parent 090c6cd commit e592413

File tree

1 file changed

+41
-41
lines changed

1 file changed

+41
-41
lines changed

pgsql_perf_tuning.md

+41-41
Original file line numberDiff line numberDiff line change
@@ -1184,50 +1184,50 @@ http://www.postgresql.org/docs/9.2/interactive/libpq-connect.html
11841184
内核参数优化总结
11851185
以及每项配置的原理
11861186
```
1187-
kernel.shmmax = 274877906944 # 最大共享内存段大小
1188-
kernel.shmmni = 8192
1189-
kernel.sem = 51200 150994944 512000 51200 # 信号量, ipcs -l查看
1190-
kernel.core_pattern= /data01/corefiles/core_%e_%u_%t_%s.%p
1191-
net.ipv4.tcp_keepalive_intvl=20
1192-
net.ipv4.tcp_keepalive_probes=6
1193-
net.ipv4.tcp_keepalive_time=60
1194-
net.ipv4.tcp_synack_retries=2
1195-
net.ipv4.tcp_syncookies=1 # 开启SYN Cookies。当出现SYN等待队列溢出时,启用cookie来处理,可防范少量的SYN攻击
1196-
net.ipv4.tcp_tw_recycle=1 # 开启TCP连接中TIME-WAIT套接字的快速回收
1197-
net.ipv4.tcp_tw_reuse=1 # 开启重用。允许将TIME-WAIT套接字重新用于新的TCP连接
1198-
net.ipv4.tcp_timestamps=1 # 减少time_wait
1199-
net.ipv4.tcp_tw_timeout=3 # 快速回收TIME_WAIT状态的TCP socket https://en.wikipedia.org/wiki/Transmission_Control_Protocol
1200-
net.ipv4.ip_local_port_range = 9000 65535 # 本地自动分配的TCP UDP端口号范围
1201-
net.core.rmem_max = 4194304 # The maximum receive socket buffer size in bytes
1202-
net.core.wmem_max = 4194304 # The maximum send socket buffer size in bytes.
1203-
net.core.rmem_default = 262144 # The default setting of the socket receive buffer in bytes.
1204-
net.core.wmem_default = 262144 # The default setting (in bytes) of the socket send buffer.
1205-
fs.file-max = 7672460
1187+
vi /etc/sysctl.conf
1188+
# add by digoal.zhou
12061189
fs.aio-max-nr = 1048576
1207-
vm.extra_free_kbytes=512000
1208-
vm.min_free_kbytes=2097152
1209-
vm.mmap_min_addr=4096
1210-
vm.zone_reclaim_mode=0 # 禁用 numa, 或者在vmlinux中禁止.
1211-
vm.swappiness = 0 # 关闭交换分区
1212-
vm.dirty_background_bytes = 409600000 # 系统脏页到达这个值,系统后台刷脏页调度进程 pdflush(或其他) 自动将(dirty_expire_centisecs/100)秒前的脏页刷到磁盘
1213-
vm.dirty_expire_centisecs = 6000 # 比这个值老的脏页,将被刷到磁盘。6000表示60秒。
1214-
vm.dirty_writeback_centisecs = 50 # pdflush(或其他)后台刷脏页进程的唤醒间隔, 50表示0.5秒。
1215-
vm.dirty_ratio = 80 # 如果系统进程刷脏页太慢,使得系统脏页超过内存 80 % 时,则用户进程如果有写磁盘的操作(如fsync, fdatasync等调用),则需要主动把系统脏页刷出。
1216-
vm.nr_hugepages = 102352 # 大页数量,乘以/proc/meminfo Hugepagesize就是内存数量。
1190+
fs.file-max = 76724600
1191+
kernel.core_pattern= /data01/corefiles/core_%e_%u_%t_%s.%p # /data01/corefiles事先建好,权限777
1192+
kernel.sem = 4096 2147483647 2147483646 512000 # 信号量, ipcs -l 或 -u 查看,每16个进程一组,每组信号量需要17个信号量。
1193+
kernel.shmall = 107374182 # 所有共享内存段相加大小限制(建议内存的80%)
1194+
kernel.shmmax = 274877906944 # 最大单个共享内存段大小(建议为内存一半), >9.2的版本已大幅降低共享内存的使用
1195+
kernel.shmmni = 819200 # 一共能生成多少共享内存段,每个PG数据库集群至少2个共享内存段
1196+
net.core.netdev_max_backlog = 10000
1197+
net.core.rmem_default = 262144 # The default setting of the socket receive buffer in bytes.
1198+
net.core.rmem_max = 4194304 # The maximum receive socket buffer size in bytes
1199+
net.core.wmem_default = 262144 # The default setting (in bytes) of the socket send buffer.
1200+
net.core.wmem_max = 4194304 # The maximum send socket buffer size in bytes.
1201+
net.core.somaxconn = 4096
1202+
net.ipv4.tcp_max_syn_backlog = 4096
1203+
net.ipv4.tcp_keepalive_intvl = 20
1204+
net.ipv4.tcp_keepalive_probes = 3
1205+
net.ipv4.tcp_keepalive_time = 60
1206+
net.ipv4.tcp_mem = 8388608 12582912 16777216
1207+
net.ipv4.tcp_fin_timeout = 5
1208+
net.ipv4.tcp_synack_retries = 2
1209+
net.ipv4.tcp_syncookies = 1 # 开启SYN Cookies。当出现SYN等待队列溢出时,启用cookie来处理,可防范少量的SYN攻击
1210+
net.ipv4.tcp_timestamps = 1 # 减少time_wait
1211+
net.ipv4.tcp_tw_recycle = 0 # 如果=1则开启TCP连接中TIME-WAIT套接字的快速回收,但是NAT环境可能导致连接失败,建议服务端关闭它
1212+
net.ipv4.tcp_tw_reuse = 1 # 开启重用。允许将TIME-WAIT套接字重新用于新的TCP连接
1213+
net.ipv4.tcp_max_tw_buckets = 262144
1214+
net.ipv4.tcp_rmem = 8192 87380 16777216
1215+
net.ipv4.tcp_wmem = 8192 65536 16777216
1216+
net.nf_conntrack_max = 1200000
1217+
net.netfilter.nf_conntrack_max = 1200000
1218+
vm.dirty_background_bytes = 4096000000 # 系统脏页到达这个值,系统后台刷脏页调度进程 pdflush(或其他) 自动将(dirty_expire_centisecs/100)秒前的脏页刷到磁盘
1219+
vm.dirty_expire_centisecs = 6000 # 比这个值老的脏页,将被刷到磁盘。6000表示60秒。
1220+
vm.dirty_ratio = 80 # 如果系统进程刷脏页太慢,使得系统脏页超过内存 80 % 时,则用户进程如果有写磁盘的操作(如fsync, fdatasync等调用),则需要主动把系统脏页刷出。
1221+
vm.dirty_writeback_centisecs = 50 # pdflush(或其他)后台刷脏页进程的唤醒间隔, 50表示0.5秒。
1222+
vm.extra_free_kbytes = 4096000
1223+
vm.min_free_kbytes = 2097152
1224+
vm.mmap_min_addr = 65536
12171225
vm.overcommit_memory = 0 # 在分配内存时,允许少量over malloc
12181226
vm.overcommit_ratio = 90 # 当overcommit_memory = 2 时,用于参与计算允许指派的内存大小。
1219-
```
1220-
可选
1221-
```
1222-
net.core.netdev_max_backlog=10000
1223-
net.core.somaxconn=4096
1224-
net.ipv4.tcp_fin_timeout=5
1225-
net.ipv4.tcp_max_syn_backlog=4096
1226-
net.ipv4.tcp_mem=8388608 12582912 16777216
1227-
net.ipv4.tcp_rmem=8192 87380 16777216
1228-
net.ipv4.tcp_wmem=8192 65536 16777216
1229-
net.netfilter.nf_conntrack_max=1200000
1230-
net.nf_conntrack_max=1200000
1227+
vm.swappiness = 0 # 关闭交换分区
1228+
vm.zone_reclaim_mode = 0 # 禁用 numa, 或者在vmlinux中禁止.
1229+
net.ipv4.ip_local_port_range = 40000 65535 # 本地自动分配的TCP, UDP端口号范围
1230+
# vm.nr_hugepages = 102352 # 建议shared buffer设置超过64GB时 使用大页,页大小 /proc/meminfo Hugepagesize
12311231
```
12321232
内存分配策略解释
12331233
参考

0 commit comments

Comments
 (0)