如何防止 Advantage Database 连接超时?
Posted
技术标签:
【中文标题】如何防止 Advantage Database 连接超时?【英文标题】:How do I keep Advantage Database connections from timing out? 【发布时间】:2013-02-08 18:03:42 【问题描述】:我有一个 Windows 服务,它与优势数据库一起工作,偶尔会进行一些 http 调用。在极少数情况下,这些电话可能会很长。我的数据库连接超时。我没有使用数据模块或任何东西。只需手动创建连接。
我的主要问题是,如果我有一段时间没有使用它,通常会阻止连接超时的原因是什么? TAdsComponents 是否发送了一个在后台以某种方式调用的保持活动消息?这是否取决于 vcl,所以我的服务中没有它?不知何故,我想创建一个线程来进行我的 http 调用,并且在主线程中每隔几秒钟检查一次它是否完成会防止连接中断。这是真的吗?
【问题讨论】:
您是否在供应商论坛或他们的支持上询问过? 【参考方案1】:是的,正如您所期望的那样,有一个保活机制。客户端(对于所有通信类型,TCP、UDP、共享内存)每隔一段时间向服务器发送一个“ping”,让服务器知道连接仍然存在。该保活 ping 的频率基于服务器配置参数 CLIENT_TIMEOUT。使用默认设置,我相信每 30 秒发送一次 keepalive ping。
keepalive 逻辑在一个单独的线程中运行,该线程由处理通信的代码启动。换句话说,它不依赖于任何 VCL 组件;如果您有与服务器的连接,那么该线程应该正在运行。
检查连接是否超时的一种方法是查看 Advantage 错误日志。应该有7020错误对应超时连接。
想到的一些可能导致连接超时的事情包括:
客户端进程由于某种原因被挂起,导致保活线程无法运行。这似乎不太可能。 keepalive 线程由于某种原因被终止。这似乎也不太可能;你必须不遗余力地做到这一点。 如果一段时间内没有活动,防火墙可能会关闭连接。不过,我认为 30 秒的间隔足以防止这种情况发生。 防火墙可能不允许 UDP 保持活动数据包。防火墙本质上对 UDP 数据包是“可疑的”。您可以确保您使用的是 TCP/IP。【讨论】:
以上是关于如何防止 Advantage Database 连接超时?的主要内容,如果未能解决你的问题,请参考以下文章
JDBC Advantage Database 找不到表(驱动程序冲突?)
如何在 ASP.net MVC3 中获取 Advantage Database 数据?
PHP PDO 连接到 Advantage 数据库 SQL Server
如何生成与 Advantage Database Server 格式相同的 GUID 字符串?