我的 Delphi 7 with Firebird 1.5.6 应用程序在 Windows 7 上闲置一段时间后自行冻结

问题描述 投票:0回答:3

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

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

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

有时唤醒时间为 10-30 秒即可成功,但有时却不会出现“应用程序未响应”或“应用程序崩溃”消息。

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

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

delphi windows-7 delphi-7 firebird firebird1.5
3个回答
1
投票

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

所有冻结的时间相同(60 秒)。我尝试更改

firebird.conf
,经过一些测试后我发现了参数
DUMMY_PACKET_INTERVAL

我将其设置为非常低的值,冻结似乎消失了。
当然,您保持开放的连接存在问题。
控制 firebird.log 并尝试测试一下自己。


0
投票

是否数据库文件的扩展名为 .gdb,而 Windows XP 正在按照此处所述备份该文件http://www.firebirdfaq.org/faq353/


0
投票

如果你从未解决过这个问题,我认为这与交易有关。你说连接一直处于活动状态。我猜您正在使用自动/自动提交事务。当您执行此操作时,感兴趣的事务永远不会移动,因为事务始终保留(提交和保留)。

发生这种情况时,如果不运行“垃圾收集”进程,Firebird 就无法清理垃圾。这会导致两个问题。

    由于 firebird 必须搜索越来越多版本的数据,查询速度不断减慢。
  1. 然后 firebird 的事务计数差异达到默认值 20000,它执行垃圾收集,从而大大减慢了一切。
  2. 解决方案是不使用自动提交事务。如果您的每日交易量很高,请将 firebird 计数设置为更高的值,并在更合适的时间自行进行垃圾收集。

© www.soinside.com 2019 - 2024. All rights reserved.