Linux 上 Informix 资源管理实践
一 操作系统层资源限制与内核参数
informix soft nofile 65536
informix hard nofile 65536
informix soft nproc 65536
informix hard nproc 65536
session required pam_limits.so
ulimit -n 65536
ulimit -u 65536
kernel.shmmax = 2147483648 # 单个共享内存段最大字节数(示例 2GB)
kernel.shmall = 536870912 # 共享内存总页数(示例按 4KB 页计算)
kernel.shmmni = 4096 # 共享内存段最大数量
kernel.sem = 250 32000 100 128
fs.file-max = 6491589
fs.aio-max-nr = 131072
vm.swappiness = 10
vm.dirty_ratio = 20
vm.dirty_background_ratio = 5
net.ipv4.ip_local_port_range = 1024 65000
sysctl -p。以上设置可避免共享内存分配失败、句柄不足与端口耗尽等问题,并降低不必要的换页对数据库的影响。二 内存与存储资源管理
free -h、top/htop、vmstat、sar -u,用于识别内存压力、换页与 I/O 等待。echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
三 CPU 与并发控制
四 监控与日常维护
五 快速检查清单
| 资源维度 | 关键动作 | 建议值或要点 |
|---|---|---|
| 文件句柄 | limits.conf 与 PAM | nofile ≥ 65536,确保登录会话继承 |
| 进程数 | limits.conf 与 PAM | nproc ≥ 65536 |
| 共享内存 | sysctl | shmmax(如 2GB)、shmall、shmmni=4096 |
| 信号量 | sysctl | sem = 250 32000 100 128 |
| 异步 I/O | sysctl | fs.aio-max-nr = 131072 |
| 内存回收 | sysctl | vm.swappiness=10,dirty_ratio=20,dirty_background_ratio=5 |
| 本地端口 | sysctl | ip_local_port_range=1024 65000 |
| 大页 | 运行时 | 禁用或 madvise THP,减少抖动 |
| 文件系统 | 选型与布局 | XFS/ext4,关键数据/日志与 chunk 分离 |
| 日志与检查点 | 配置与维护 | 合理增大逻辑日志,缩短检查点,定期归档清理 |
| VP 与并发 | 配置与 SQL | 合理规划 NUMCPUVPS/AIO/NET,优化 SQL 与索引,控制锁等待 |
以上步骤覆盖了 Linux 层限制与内核、内存与存储、CPU 与并发 以及 监控与维护 的关键环节,可作为生产环境的基础实践框架,并需结合实例规模与业务特征持续验证与微调。