Linux 下 Informix 连接超时,通常不是单一原因,而是网络、数据库参数、操作系统、客户端配置共同作用的结果。下面按常见原因 → 排查思路 → 解决办法来系统说明。
排查
ping <db_server_ip>
telnet <db_server_ip> 9088 # 或实际端口
解决
firewall-cmd --add-port=9088/tcp --permanent
firewall-cmd --reload
onstat -g sql
onstat -u
查看是否:
解决
onmode -u # 清理异常连接(谨慎)
或修改:
onmode -wf "NETTYPE=xxx"
$INFORMIXDIR/etc/sqlhosts
错误示例:
demo_on onsoctcp 127.0.0.1 9088
远程连接时 127.0.0.1 会导致超时
✅ 正确:
demo_on onsoctcp 0.0.0.0 9088
# 或具体 IP
onstat -
netstat -tunlp | grep 9088
echo $INFORMIXSERVER
客户端 sqlhosts 必须与服务器一致。
export INFORMIXCONTIME=30
export INFORMIXCONRETRY=3
| 参数 | 含义 |
|---|---|
| INFORMIXCONTIME | 每次连接等待秒数 |
| INFORMIXCONRETRY | 重试次数 |
ulimit -n
Informix 推荐:
ulimit -n 65535
sysctl net.ipv4.tcp_keepalive_time
建议:
net.ipv4.tcp_keepalive_time = 300
jdbc:informix-sqli://host:port/db:INFORMIXSERVER=xxx;
可加:
CLIENT_LOCALE=en_US.8859-1;
DB_LOCALE=en_US.8859-1;
1. ping 主机
2. telnet 端口
3. onstat - 看数据库状态
4. netstat -tunlp | grep 端口
5. 检查 sqlhosts
6. netstat -an | grep CLOSE_WAIT
SQLSTATE=HY000, Error -908
✅ 网络不通 / 端口未监听
Error -25507
✅ 连接数满 / 达到最大用户数
Connection timeout
✅ 客户端超时参数太小
你可以直接贴出:
sqlhosts 内容我可以一步一步帮你定位到具体是哪一层的问题。