CentOS系统下Informix资源限制调整指南
Informix作为关系型数据库,其性能表现与系统资源(文件描述符、进程数、内存、内核参数等)的限制密切相关。以下是针对CentOS系统的Informix资源限制调整步骤,涵盖关键配置项及操作方法:
文件描述符限制决定了Informix进程能同时打开的文件数量(如数据文件、日志文件、网络连接等)。若限制过低,会导致“Too many open files”等错误。
/etc/security/limits.conf文件编辑该文件(需root权限),为Informix用户(通常为informix)添加以下行,设置软/硬限制(软限制是警告阈值,硬限制是最大值):
informix soft nofile 65536
informix hard nofile 65536
soft:用户当前会话的有效限制,超过会触发警告;hard:用户无法突破的最大限制。编辑/etc/pam.d/system-auth或/etc/pam.d/password-auth文件,确认包含以下行(用于在用户登录时加载limits.conf设置):
session required pam_limits.so
编辑/etc/profile(全局)或~/.bashrc(用户级),添加以下命令,使默认会话继承限制:
ulimit -n 65536
切换至informix用户,执行以下命令查看当前限制:
ulimit -Sn # 查看软限制
ulimit -Hn # 查看硬限制
进程数限制决定了Informix能创建的最大进程/线程数量(如并行查询线程、后台任务)。若限制过低,会导致“Too many processes”错误。
/etc/security/limits.conf文件为informix用户添加进程数限制:
informix soft nproc 16384
informix hard nproc 16384
同样通过ulimit -Su(软限制)和ulimit -Hu(硬限制)查看当前设置。
内核参数直接影响Informix的内存管理、I/O性能及并发处理能力。
/etc/sysctl.conf文件添加或调整以下关键参数(需root权限):
# 共享内存最大大小(需大于Informix的SharedMemSize,单位:字节)
kernel.shmmax = 4294967296 # 示例:4GB
# 共享内存段最大数量
kernel.shmmni = 4096
# 共享内存页大小(通常无需修改)
kernel.shmall = 1048576
# 系统最大文件描述符数量(需大于Informix的nofile限制)
fs.file-max = 655360
# 内存交换倾向(值越低,越倾向于使用物理内存;建议10-30)
vm.swappiness = 10
# TCP keepalive时间(减少无效连接占用资源)
net.ipv4.tcp_keepalive_time = 300
执行以下命令使修改立即生效:
sudo sysctl -p
通过sysctl命令查看参数值,例如:
sysctl kernel.shmmax
Informix的内存配置是其性能核心,需根据系统内存大小合理分配共享内存、缓冲池等。
$INFORMIXDIR/etc/onconfig.<dbserver>)kernel.shmmax);编辑onconfig.<dbserver>文件,调整上述参数(示例):
SharedMemSize=2147483648 # 2GB
LockMemSize=2097152 # 2MB
TempMemSize=10485760 # 10MB
BUFFERS=524288 # 512MB(512*1024/4=131072页)
LRUS=300
修改后需重启实例使配置生效:
onmode -k shutdown # 正常关闭
onmode -k autorestart # 自动重启
使用onstat -m命令查看内存使用情况,确认参数已生效。
SELinux可能限制Informix的文件访问权限,若无需安全增强,可临时关闭:
sudo setenforce 0
永久关闭需编辑/etc/selinux/config,将SELINUX=enforcing改为disabled。
Swap会降低数据库性能(磁盘I/O速度远低于内存),若系统内存充足,可禁用Swap:
sudo swapoff -a # 临时关闭
永久关闭需编辑/etc/fstab,注释掉Swap行。
THP可能导致内存管理延迟,建议禁用:
# 临时禁用
echo never | sudo tee /sys/kernel/mm/transparent_hugepage/enabled
echo never | sudo tee /sys/kernel/mm/transparent_hugepage/defrag
# 永久禁用(编辑GRUB)
sudo vi /etc/default/grub
# 在GRUB_CMDLINE_LINUX中追加:transparent_hugepage=never
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
sudo reboot
limits.conf、onconfig.<dbserver>、sysctl.conf);top、vmstat、onstat),及时调整参数以适应业务变化。