@@ -1184,50 +1184,50 @@ http://www.postgresql.org/docs/9.2/interactive/libpq-connect.html
1184
1184
内核参数优化总结
1185
1185
以及每项配置的原理
1186
1186
```
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
1206
1189
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
1217
1225
vm.overcommit_memory = 0 # 在分配内存时,允许少量over malloc
1218
1226
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
1231
1231
```
1232
1232
内存分配策略解释
1233
1233
参考
0 commit comments