我的Delphi 7与Firebird 1.5.6应用程序在Windows 7上一段时间不活动后自行冻结

时间:2011-06-30 12:19:18

标签: delphi windows-7 delphi-7 firebird firebird1.5

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

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

一切都运行良好5年,但现在在Windows 7上应用程序完全不稳定。

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

我不知道在哪里搜索或尝试找到解决方案的内容。 我尝试制作一个10秒分辨率的计时器,使其不断激活 但没有成功。

BTW我在管理员模式下运行,XP兼容模式处于活动状态。 我还没有尝试过虚拟XP模式,但我认为它无法解决问题。

3 个答案:

答案 0 :(得分:0)

可能是数据库文件的扩展名是.gdb而Windows是XP正在按照此处的描述http://www.firebirdfaq.org/faq353/备份文件吗?

答案 1 :(得分:0)

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

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

我把它设置得很低,冻结似乎已经消失了 当然,您的连接存在问题仍未解决 控制firebird.log并尝试自己测试。

祝你好运。有关详细信息,请参阅this help page

答案 2 :(得分:0)

如果你从未解决过,我认为它与交易有关。你说连接一直都很活跃。我猜你正在使用自动/自动提交事务。执行此操作时,感兴趣的事务永远不会移动,因为事务始终保留(提交并保留)。

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

  1. 由于firebird必须浏览越来越多的数据版本,因此查询会继续减速。

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

  3. 解决方案是不使用自动提交事务。如果您的每日交易数量很高,那么将火鸟数设置为更高的值,并在更合适的时间自行进行垃圾收集。