5

我开发了一个 Delphi 7 应用程序,它在客户端服务器环境中使用 Firebird 1.5.6 数据库。

该应用程序在笔记本电脑上的 Windows 7 32 位计算机上运行,​​数据库在用作服务器的 Windows XP 32 位计算机上运行。问题是应用程序在闲置一段时间后会自行冻结。仅当我们将其安装在 Windows 7 上时,此问题才在 Windows XP 上从未发生过。

5 年来一切正常,但现在在 Windows 7 上,该应用程序完全不稳定。

有时唤醒时间是 10-30 秒成功但有时从来没有消息“应用程序没有响应”或“应用程序崩溃”。

我不知道在哪里搜索或尝试找到什么解决方案。我试图制作一个分辨率为 10 秒的计时器,以使其始终处于活动状态,但没有成功。

顺便说一句,我在管理员模式下运行 XP 兼容模式处于活动状态。我还没有尝试过虚拟 XP 模式,但我认为它不会解决问题。

4

3 回答 3

1

我遇到了类似的问题:在一些装有 Windows 7 32 位的独立机器(同一台 PC 上的 firebird 服务器和客户端)上,有时会冻结应用程序(Delphi 7)。

所有冻结的时间相同(60 秒)。我试图改变firebird.conf,经过一些测试,我找到了参数DUMMY_PACKET_INTERVAL

我将其设置为非常低的值,并且冻结似乎已经消失。
当然,您的连接仍然存在问题。
控制 firebird.log 并尝试测试自己。

祝你好运。有关更多信息,请参阅此帮助页面

于 2011-08-03T12:00:14.590 回答
0

可能是数据库文件的扩展名是 .gdb 并且 windows 是 XP 正在备份文件,如此处所述http://www.firebirdfaq.org/faq353/

于 2011-07-11T08:04:09.167 回答
0

如果您从未解决它,我认为它与交易有关。您说连接一直处于活动状态。我猜您正在使用自动/自动提交事务。当你这样做时,感兴趣的事务永远不会移动,因为事务总是被保留(提交和保留)。

发生这种情况时,firebird 无法在不运行垃圾收集过程的情况下清理垃圾。这会导致两个问题。

  1. 由于 firebird 必须搜索越来越多的数据版本,查询速度不断减慢。

  2. 然后 firebird 达到事务计数的差异达到默认值 20000,它执行垃圾收集大大减慢了一切。

解决方案是不使用自动提交事务。如果您的每日事务计数很高,则将 firebird 计数设置为更高的值,并在更合适的时间自己进行垃圾收集。

于 2015-07-31T05:00:23.913 回答