在 CentOS 上优化 IBM Informix 数据库,通常可以从操作系统层、Informix 参数配置、存储与文件系统、内存与 CPU、网络、监控与维护几个方面入手。下面给你一套比较系统、可落地的优化思路。
编辑 /etc/sysctl.conf:
# 共享内存
kernel.shmmax = 68719476736
kernel.shmall = 16777216
kernel.shmmni = 4096
# 信号量
kernel.sem = 250 32000 100 128
# 文件句柄
fs.file-max = 655360
# 网络
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
net.ipv4.tcp_tw_reuse = 1
执行:
sysctl -p
编辑 /etc/security/limits.conf:
informix soft nofile 65536
informix hard nofile 65536
informix soft nproc 16384
informix hard nproc 16384
systemctl disable firewalld
systemctl stop firewalld
(生产环境如需要防火墙,请放行 Informix 端口,如 9088 / 1526)
/dev/sdb /informix xfs defaults,noatime,nodiratime 0 0
mount -o remount,noatime /informix
BUFFERS 100000 # 数据缓冲区(页)
LOGBUFF 1024 # 逻辑日志缓冲
PHYSBUFF 1024 # 物理日志缓冲
RESIDENT 1 # 锁定内存,防 swap
BUFFERS 一般建议为物理内存的 30%~50%
NUMCPUVPS 8
SINGLE_CPU_VP 0
MULTIPROCESSOR 1
CKPTINTVL 300
LRU_MAX_DIRTY 60
LRU_MIN_DIRTY 50
RA_PAGES 64
RA_THRESHOLD .50
onparams -a -d logdbs -s 50000
定期执行:
UPDATE STATISTICS HIGH;
或针对大表:
UPDATE STATISTICS MEDIUM;
SET EXPLAIN ON 分析执行计划onstat -p # 性能
onstat -g ses # 会话
onstat -g sql # SQL
onstat -d # dbspace
onstat -l # 日志
场景:CPU 高
onstat -g act场景:IO 高
如果你愿意,可以告诉我:
我可以直接帮你给出一套可用的 onconfig 配置示例。