通过dblink查询Oracle数据时报YAS-07301异常
问题现象
某客户在通过yasql查询Oracle数据时,报如下异常:
SQL> select 1 from dual@link_oracle;
YAS-07301 external module timeout, reason: yex_server heatbeat timeout
问题的风险及影响
dblink功能无法正常使用
问题影响的版本
所有的YashanDB版本
问题发生原因
查看YashanDB的run.log,有如下异常:
问题原因可能为操作系统资源紧张,无法fork出新的子进程。
解决方法及规避方式
操作系统资源紧张可能为进程数量过多或者内存不足,根据实际情况,停掉不需要的进程/增大进程数上限或者停止耗时内存的进程,释放内存资源。
问题分析和处理过程
在日志中打[YEX] failed to run yex_server, error no:-1时,YashanDB实际上执行了linux的函数system(const char * command),
正常这个函数执行成功返回0。
返回-1是不正常的情况,什么时候返回-1呢?
从glibc的源码system.c中可以看到,大概率是fork()失败返回-1。
经验总结
通过分析操作系统源码推断问题的可能原因。
YashanDB会在这里做优化,在出异常时在日志中提供更多的信息。
友情链接:深圳计算科学研究院 深圳崖山科技有限公司
版权所有© 深圳崖山科技有限公司 粤ICP备2022018810号
公众号
加入技术交流群
YashanDB
崖山数据库系统YashanDB是深圳计算科学研究院自主设计研发的新型数据库管理系统,融入原创的有界计算、近似计算、并行可扩展和跨模融合计算理论,可满足金融、政企、能源等关键行业对高性能、高并发及高安全性的要求。
邮箱:info@yashandb.com
地址:广东省深圳市龙华区民宝路红山6979园区25座5-10层