在 Ubuntu 上运行 IBM Informix(常见为 Informix Dynamic Server,IDS)时,性能优化通常从操作系统层、数据库配置层、SQL/应用层、监控与调优四个方面入手。下面给你一套比较系统的优化思路。
编辑 /etc/sysctl.conf:
# 共享内存
kernel.shmmax = 68719476736
kernel.shmall = 16777216
# 信号量
kernel.sem = 250 32000 100 1024
# 文件句柄
fs.file-max = 65536
# 网络
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_window_scaling = 1
执行:
sysctl -p
编辑 /etc/security/limits.conf:
informix soft nofile 65536
informix hard nofile 65536
informix soft nproc 8192
systemctl disable snapd
systemctl disable bluetooth
BUFFERS 100000 # 数据缓冲区(page数)
LOCKS 20000
LOGSIZE 5000
RESIDENT 1 # 常驻内存
BUFFERS 一般设为物理内存的 30%~50%
VPCLASS cpu,num=8 # CPU VP
VPCLASS aio,num=4 # 异步IO
VPCLASS net,num=2
CKPTINTVL 300
PHYSBUFF 512
LOGBUFF 512
rootdbs / datadbs / logdbs / tempdbsUPDATE STATISTICSUPDATE STATISTICS HIGH FOR TABLE orders;
SELECT *LOAD / UNLOADSET ISOLATION TO COMMITTED READ;
onstat -g ses # 会话
onstat -g sql # SQL
onstat -p # 性能概览
onstat -g io # IO
onstat -g mem # 内存
onstat -g sqc
top
iostat -x 1
vmstat 1
| 问题 | 可能原因 |
|---|---|
| CPU 高 | SQL 未走索引 |
| IO 高 | 缓冲区不足 |
| 锁等待 | 长事务 |
| 内存不足 | BUFFERS 过大 |
| 启动慢 | 日志/临时空间不足 |
如果你愿意,可以告诉我:
我可以给你一套针对性的 onconfig 示例配置。