【发布时间】:2014-05-13 23:55:27
【问题描述】:
我正在对一个 domino java 代理进行压力测试,该代理可能会修改许多数据库中的许多文档。我正在使用庞大的数据库对代理进行负载测试,代理管理器正在关闭我的代理,因为它们的持续时间比服务器文档“Max LotusScript/Java 执行时间:”中指定的输入长。
我知道我可以编写一个程序文档让代理在没有任何时间的情况下运行,但我不想这样做,因为你失去了代理的句柄。
我知道我需要对代理进行编程,以便我可以将“任务”文档(其中包含代理的所有指令)保存为“未完成”状态,以便我可以从我停止的地方开始。
编写 LotusScript 代理时,有可能在代理的“终止”事件中编写清理代码,而我的 java 代理缺少此选项。
目前我最好的想法是在我的配置中设置一个“超时”字段,该字段将填充一个小于服务器截止时间的值。然而,这意味着我会定期问一个问题“我还有时间开始下一个行动吗?”我认为这会影响性能。
您对此案例的最佳实践有何经验?
【问题讨论】:
-
这个项目的管理员很保守,我希望代理成为 nsf 的一部分。但作为最后的手段,我可以考虑。也想过做一个 Domino 服务器任务,但出于同样的原因拒绝了。无论如何都干杯。
-
尝试将
protected void finalize()方法添加到您的代理类。不确定它是否会起作用,但值得一试。从理论上讲,当对象超出范围(即可用于垃圾收集)时,JVM 会调用 finalize(),但此时它是否真的能够做任何事情是个大问题。 -
嗯,Richard,实际上并不能保证 finalize 会运行(在任何 java 环境中都是如此),所以我不太热衷于使用它。
-
这是真的,这是有风险的,这就是为什么我从来没有尝试过 ;-) 当然,也不能保证计时器会命中,因为服务器挂起或崩溃可能防止这种情况发生。
标签: java lotus-domino