如何加快频繁书写的速度

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

我们创建了一个 java 代理,它对我们的应用程序套件进行检查,以查看父/子结构是否仍然正确。因此,它需要检查多个应用程序中的 8000 多个文档。

支票本身进行得非常快。我们使用导航器从视图中检索数据,并且仅从这些条目中读取数据。问题出在我们的日志记录机制中。每当我们报告级别为 SEVERE(又名:真正的大问题)的日志条目时,后端文档都会直接更新。这是因为我们不想丢失有关这些问题的任何信息。

在我们的测试运行中,我们看到一切都运行顺利,但是一旦我们“创建”了许多严重的问题,性能就会因为所有写入而大幅下降。我想看看是否有笔记开发者面临同样的挑战。如何才能在不丢失任何数据的情况下加快写入速度?

-- 在西蒙发表评论后添加了更多信息 --

它是一个预定的代理,每晚运行以检查不一致情况。目标当然是找到不一致之处并解决原因,并最终完全不报告不一致情况。

java lotus-notes lotus-domino
3个回答
2
投票

它是一个预定的代理,每晚运行以检查 不一致。

好的。因此,有很多因素需要考虑。

  1. 有嵌入式Jars吗?当代理嵌入了 jar 时,服务器必须将它们从代理分离到磁盘,然后才能运行代码。每次代理执行时都会执行此操作。这可能会影响性能。如果您的代理多次生成,请删除嵌入的 jar 并将它们放入服务器上的 lib xt 文件夹中(需要重新启动服务器)。

  2. 你提到它在晚上运行。默认情况下,一般内务处理流程在夜间运行。检查 ini 中安排的服务器任务的注释,并评估它们在运行时对服务器/代理的影响。例如:

    ServerTasksAt1=Catalog,Design
    ServerTasksAt2=Updall
    ServerTasksAt5=Statlog
    

    在这种情况下,如果运行在 2-5 之间,则 UPDALL 可能会对其产生影响。还要检查计划执行的程序文档。

  3. 你用什么方式写作?如果您为每个事件创建一个文档并且文档内容不多,那么写入时间应该是合理的。以下情况之一可能会影响性能。

    • 如果您是多线程处理这些写入。
    • 拉出日志文档,追加一行,保存,然后重复。

最后要考虑的一件事。如果您收到 3000 个错误,那么一定有一个点,其中 X 数量的错误意味着没有必要继续,而是通过 SNMP/电子邮件/等提醒管理员?也许也值得对其进行编码。

除此之外,您可能应该发布一些与写入相关的示例代码。


1
投票

嗯,困难或一般性问题。 据我了解,您可以在正在浏览的视图中更新文档。我会将

view.AutoUpdate
设置为 false。这可确保在运行代码时不会重新加载视图。这应该会加快你的代码速度。

这是设计器帮助的摘录:

通过显式设置避免自动更新父视图 自动更新为 False。自动更新会降低性能并可能 使导航器中的条目无效(“索引中未找到条目”)。你 可以根据需要使用“刷新”更新视图。

希望有帮助。
如果这没有帮助,您可能需要发布代码片段或更多详细信息。


0
投票
  1. 为每个错误创建单独的文档,而不是一个庞大的文档。

  1. 直接写入文本文件而不是数据库,然后根据需要提取到文档中。这应该会大大加快速度。
© www.soinside.com 2019 - 2024. All rights reserved.