如何加快频繁写作

时间:2013-01-24 09:36:29

标签: java lotus-notes lotus-domino

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

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

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

- 在simon评论后添加了更多信息 -

它是一个预定的代理,每晚运行以检查是否存在不一致。目标是找到不一致并找出原因,并且最终没有报告任何不一致。

3 个答案:

答案 0 :(得分:2)

  

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

行。因此,有许多因素需要考虑。

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

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

    ServerTasksAt1=Catalog,Design
    ServerTasksAt2=Updall
    ServerTasksAt5=Statlog
    

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

  3. 你以什么方式写作?如果要为每个事件创建文档,并且文档内容不多,则写入时间应该合理。什么可能是性能的打击是以下之一。

    • 如果您是多线程的那些写入。
    • 拉取日志文档,附加一行,保存然后重复。
  4. 最后要考虑的事情。如果你得到3000个错误,那么必须有一个点X错误意味着没有任何意义继续,而是通过SNMP / email / etc警告管理员?也可能值得编码。

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

答案 1 :(得分:1)

嗯,困难或一般性问题。 据我所知,您更新了您正在浏览的视图中的文档。我会将view.AutoUpdate设为false。这可确保在运行代码时不会重新加载视图。这应该可以加快您的代码速度。

这是Designer帮助的摘录:

  

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

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

答案 2 :(得分:0)

  1. 为每个错误创建单独的文档,而不是一个巨大的文档。
    1. 直接写入文本文件而不是数据库,然后在必要时将其拉入文档。这应该会大大加快速度。