温馨提示×

Ubuntu中Informix如何优化

小樊
45
2026-08-28 02:47:15
栏目: 智能运维

Ubuntu 上运行 IBM Informix 时,优化通常从 系统层、数据库参数、SQL 与应用、存储与 I/O 四个方面入手。Informix 在 Linux 上的优化思路与 AIX/HP-UX 相似,但 Ubuntu 更偏向通用服务器环境,需要额外注意内核参数和资源限制。

下面给你一套 实用型优化清单(偏生产环境)。


一、操作系统层优化(Ubuntu)

1. 内核参数(非常重要)

编辑 /etc/sysctl.conf

# 共享内存
kernel.shmmax = 68719476736
kernel.shmall = 16777216

# 信号量(Informix 多进程)
kernel.sem = 250 32000 100 128

# 文件句柄
fs.file-max = 6815744

# 网络
net.core.somaxconn = 4096
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.ip_local_port_range = 1024 65000

生效:

sysctl -p

2. 用户资源限制

编辑 /etc/security/limits.conf

informix soft nofile 65536
informix hard nofile 65536
informix soft nproc 16384
informix hard nproc 16384

否则可能出现 too many open files 或连接数不足。


3. 关闭不必要的服务

systemctl disable snapd
systemctl disable bluetooth

Ubuntu 上 不要启用 swap 过度使用,避免 Informix 性能抖动。


二、Informix 参数优化(ONCONFIG)

核心配置文件:$INFORMIXDIR/etc/$ONCONFIG

1. 内存相关(最关键)

# 共享内存缓冲区
BUFFERS        100000     # 根据内存调整(单位:页)
# 每页 2KB,100000 ≈ 200MB

# 虚拟内存
SHMVIRTSIZE    256000
SHMADD         32768

经验值:

  • 物理内存 ≤ 8GB:BUFFERS 占 30%
  • 物理内存 ≥ 16GB:BUFFERS 占 40–50%

2. 日志与检查点

LOGFILES       6
LOGSIZE        50000

CKPTINTVL      300
LRUS           8
LUR_MAX_DIRTY 60
LUR_MIN_DIRTY 50

减少频繁 checkpoint,提高写入性能。


3. CPU 与线程

NUMCPUVPS      4
VPCLASS        cpu,num=4
VPCLASS        aio,num=4

建议:

  • NUMCPUVPS ≈ CPU 核数
  • AIO VP 不要太多(I/O 压力决定)

三、存储与 I/O 优化

1. 数据空间(dbspace)规划

  • 系统表、业务数据、索引 分开 dbspace
  • 临时表空间单独:
CREATE TEMP TABLE ... IN tempdbs

2. 磁盘与文件系统

✅ 推荐:

  • XFS 文件系统
  • 使用 裸设备 / LVM 优于 ext4
  • 数据盘与日志盘分离

❌ 避免:

  • 放在 /home
  • 和 OS 同盘

3. 异步 I/O

确保启用:

USE_AIO 1

四、SQL 与应用优化

1. 索引优化

  • 高并发查询字段必须建索引
  • 避免重复索引
  • 定期重建碎片索引
UPDATE STATISTICS HIGH FOR TABLE tab_name;

2. SQL 优化

  • 避免 SELECT *
  • 使用绑定变量
  • 避免函数在索引列上

3. 临时表与排序

DBSPACETEMP tempdbs1,tempdbs2

避免临时表写根 dbspace。


五、监控与诊断(Ubuntu 常用)

1. Informix 自带工具

onstat -g seg     # 内存
onstat -g sql     # SQL
onstat -g ses     # 会话
onstat -g io      # I/O

2. 系统工具

top
htop
iostat -x 1
vmstat 1

重点看:

  • CPU wait
  • IO util
  • 内存 swap

六、常见性能问题速查表

问题 原因 解决
CPU 高 SQL 全表扫描 加索引
IO 高 checkpoint 频繁 增大 LOGSIZE
内存不足 BUFFERS 太小 增加
连接慢 网络 / 参数 调整 nettype
锁等待 事务过长 缩短事务

七、Ubuntu 特有建议

  • 使用 Ubuntu LTS(20.04 / 22.04)
  • glibc 版本与 Informix 版本匹配
  • 不建议用 WSL 跑生产 Informix
  • 防火墙只开放 Informix 端口(1526 等)

八、如果你愿意,我可以进一步帮你

你可以直接发我:

  1. Informix 版本(onstat -V
  2. Ubuntu 版本
  3. 内存 / CPU 配置
  4. 当前 ONCONFIG 文件

我可以 直接帮你给出一份“可落地的优化参数模板”

0