我有一个与优势数据库配合使用的Windows服务,偶尔会进行一些http调用。在极少数情况下,这些电话可能会很长。调整我的数据库连接超时。我没有使用数据模块或任何东西。只需手动创建连接。
我的主要问题是,如果我暂时没有使用它,通常会阻止连接超时? TAdsComponents是否会以某种方式发送在后台调用的保持活动消息?这是依赖于vcl所以我在服务中没有这个吗?不知何故,我觉得创建一个线程来进行我的http调用,并且在主线程中检查它每隔几秒钟完成一次会阻止连接死亡。这是真的吗?
答案 0 :(得分:6)
是的,有一个预期的keepalive机制。客户端(对于所有通信类型,TCP,UDP,共享内存)每隔一段时间向服务器发送一次“ping”,以使服务器知道连接仍然存在。 keepalive ping的频率基于服务器配置参数CLIENT_TIMEOUT。使用默认设置,我相信keepalive ping每30秒发送一次。
keepalive逻辑在一个单独的线程中运行,该线程由处理通信的代码启动。换句话说,它不依赖于任何VCL组件;如果你有连接到服务器,那么该线程应该正在运行。
检查连接是否超时的一种方法是查看Advantage错误日志。对应于超时连接应该有7020个错误。
可能会导致超时连接的一些事情包括: