生产环境PostgreSQL数据库操作系统参数探究

操作系统参数

序号 参数名称 参数值 参数意义 参数值分析
1 fs.aio-max-nr 1048576 系统允许的异步I/O最大请求数,用于支持高并发I/O操作。 值较高,适合高并发环境,如数据库系统大规模读写操作场景。
2 fs.file-max 76724600 系统允许打开的最大文件描述符数量,影响文件和网络连接数量的上限。 值非常高,支持大量并发连接和文件访问,适合数据库服务器场景。
3 kernel.sem 4096 2147483647 2147483646 512000 系统信号量参数,分别表示:每组信号量最大值、系统信号量最大值、单个信号量集最大值、信号量集合的数量上限。 非常高的配置,确保在高并发环境下信号量不会成为瓶颈。
4 kernel.shmall 92274688 共享内存的总页数限制。 值较高,支持大型共享内存使用需求(如数据库)。
5 kernel.shmmni 819200 系统中共享内存段的最大数量。 值较高,适合需要大量共享内存段的应用程序,如数据库。
6 net.core.netdev_max_backlog 10000 网络设备接收队列的最大长度。 增大此值减少网络拥堵,提高网络处理能力,适合高流量环境。
7 net.core.rmem_default 262144 套接字默认的接收缓冲区大小。 默认值适中,适合普通流量的接收操作。
8 net.core.rmem_max 4194304 套接字最大接收缓冲区大小。 值较大,适合高带宽、高延迟的网络环境。
9 net.core.wmem_default 262144 套接字默认的发送缓冲区大小。 默认值适中,适合普通流量的发送操作。
10 net.core.wmem_max 4194304 套接字最大发送缓冲区大小。 值较大,适合高带宽的发送场景。
11 net.core.somaxconn 16384 允许监听队列的最大长度(即listen函数的backlog参数上限)。 非常高的值,有助于处理大量的并发连接请求。
12 net.ipv4.tcp_max_syn_backlog 16384 未完成连接请求队列的最大长度。 高值有助于应对大量的SYN请求,减少连接失败的可能性。
13 net.ipv4.tcp_keepalive_intvl 20 TCP保持活动探测的间隔时间(秒)。 值较短,适合快速探测空闲连接的有效性。
14 net.ipv4.tcp_keepalive_probes 3 TCP保持活动探测的最大重试次数。 默认值,适合检测连接存活。
15 net.ipv4.tcp_keepalive_time 60 TCP保持活动时间,连接空闲多久后开始发送探测包(秒)。 值较短,有助于及时发现失效连接。
16 net.ipv4.tcp_mem 8388608 12582912 16777216 TCP栈使用的内存范围,分别表示:最小、默认、最大内存分配量(单位页)。 高值配置,适合高流量、大并发场景。
17 net.ipv4.tcp_fin_timeout 5 TCP连接关闭时FIN-WAIT-2状态的超时时间(秒)。 值短,可快速释放连接资源。
18 net.ipv4.tcp_synack_retries 2 SYN-ACK重试次数。 较低值减少资源浪费,但可能对高延迟网络产生一定影响。
19 net.ipv4.tcp_syncookies 1 是否启用SYN Cookie以防范SYN攻击。 开启防护机制,适合公共网络场景。
20 vm.dirty_background_ratio 0 内存脏页异步回写的阈值(占总内存百分比)。 配置为0,实际控制通过dirty_background_bytes
22 vm.dirty_expire_centisecs 3000 脏页写入到磁盘的超时时间(单位10ms)。 较长的时间延迟,有助于减少磁盘IO压力。
23 vm.dirty_ratio 95 内存脏页同步回写的阈值(占总内存百分比)。 高值允许更多的脏页留存于内存中,适合大内存环境。
24 vm.nr_hugepages 256 系统保留的大页内存数量。 适合内存密集型应用(如数据库),可提高性能。
25 vm.min_free_kbytes 2097152 系统预留的最小空闲内存(字节)。 高值确保内存分配时系统有足够的可用空间,减少OOM风险。

数据库参数