本文内容来自YashanDB官网,原文内容请见 https://www.yashandb.com/newsinfo/7802968.html?templateId=171...

问题现象

某客户在通过yasql查询Oracle数据时,报如下异常:

SQL> select 1 from dual@link\_oracle;

YAS-07301 external module timeout, reason: yex\_server heatbeat timeout

问题的风险及影响

dblink功能无法正常使用

问题影响的版本

所有的YashanDB版本

问题发生原因

查看YashanDB的run.log,有如下异常:

90e5b359-40e2-4be1-a302-0423b98f82ee

问题原因可能为操作系统资源紧张,无法fork出新的子进程。

解决方法及规避方式

操作系统资源紧张可能为进程数量过多或者内存不足,根据实际情况,停掉不需要的进程/增大进程数上限或者停止耗时内存的进程,释放内存资源。

问题分析和处理过程

在日志中打[YEX] failed to run yex\_server, error no:-1时,YashanDB实际上执行了linux的函数system(const char * command),

正常这个函数执行成功返回0。

返回-1是不正常的情况,什么时候返回-1呢?

从glibc的源码system.c中可以看到,大概率是fork()失败返回-1。

814a0e49-a109-4e3a-b71e-f80fe733884d

经验总结

通过分析操作系统源码推断问题的可能原因。

YashanDB会在这里做优化,在出异常时在日志中提供更多的信息。


YashanDB
1 声望0 粉丝

崖山数据库系统YashanDB是深圳计算科学研究院自主设计研发的新型数据库管理系统,融入原创的有界计算、近似计算、并行可扩展和跨模融合计算理论,可满足金融、政企、能源等关键行业对高性能、高并发及高安全性的...