通过dblink查询Oracle数据时报YAS-07301异常

首页    知识库    常见问题    通过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,有如下异常:

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会在这里做优化,在出异常时在日志中提供更多的信息。

浏览量:0