1 总结
通过这些问题告诉我们对问题的分析不能只看表象,同时也不能想到过于复杂。如果一开始就能对用户资源限制、中间件连接池排查,就能及时解决问题不至于导致问题验证。
2 故障现象
网络通讯异常通常有以下几个原因导致问题
Ø达梦数据库的服务没有启动
Ø远程访问被防火墙拦截
Ø端口号不对
Ø达到最大会话数限制,无法建立新的连接
Ø数据库服务端对连接资源进行限制终止
Ø应用端连接配置限制资源使用将连接终止
3 处理方法
通常网络通信异常排查主要点有:
1、 ping ip是否通,telnet 端口是否通
ping不通不表示不可用
echo “1” > proc/sys/net/ipv4/icmp_echo_ignore_all
注意:Ping命令基于ICMP协议,ICMP为网络层协议,是一种面向无连接的协议,没有建立真正的传输链路,只能作为网络是否可达的参考,以上配置情况就可能ping不通,实际是可用的
2、 开启jdbc日志,打印完整日志,排查配置是否正确
jdbc:dm://127.0.0.1:5236?logLevel=all&logdir=D:\jdbclog
注意:如果配置是在xml文件中配置,需要对&转义
jdbc:dm://127.0.0.1:5236?logLevel=all&logDir=d:\jdbclog
3、 连接数超限排查,新版本disql SYSDBA登录查询会话占用最多的ip;老版本,通信系统命令排查应用ip
数据库层:
select clnp_ip,count(0) from v$sessions group by clnp_ip
用户空闲连接限制:
SELECT a.username,b.CONN_IDLE_TIME,b.SESS_PER_USER,b.FAILED_NUM,b.LIFE_TIME,b.REUSE_TIME,b.REUSE_MAX,b.LOCK_TIME,b.GRACE_TIME,
b.LOCKED_STATUS,b.ALLOW_ADDR,b.PWD_POLICY FROM DBA_USERS a,SYSUSERS b WHERE A.USER_ID=B.id;
注意如配置空闲断开连接时间需排查中间件连接池空闲时间检查时间,如中间配置时间大于数据库空闲断开时间,检测线程延迟导致应用使用到无效的线程。
操作系统层:
Ps -ef|grep dm.ini
netstat -anp|grep dmserver|grep ESTABLISHED|awk '{print $5}'|awk -F ":" '{print $1}'|sort -nr|uniq -c|sort -nr
4、 句柄资源限制导致的连接无法创建,linux下一切皆文件
Ulimit -n 65535 临时修改 会话级别的
全局修改:
echo “ dmdba soft nofile 65535” > /etc/security/limits.conf
echo “ dmdba hard nofile 65535” > /etc/security/limits.conf
5、 内存资源限制导致的连接无法创建
cat /proc/sys/vm/overcommit_memory
cat /proc/sys/vm/overcommit_ratio
建议是 overcommit_memory=0
overcommit_ratio=10 当overcommit_memory=2时表示当内存使用剩余达到overcommit_ratio这个比例,将使用swap区
6、 dm.ini配置中LISTEN_IP有配置,则只能使用此IP进行数据库连接访问
7、 检查中间件连接池配置
8、 检查数据库用户资源限制,例如空闲时间、持续时间




