java - 如何加快频繁写作的速度

标签 java lotus-notes lotus-domino

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

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

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

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

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

最佳答案

Its a scheduled agent which runs every night to check for inconsistencies.

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

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

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

    ServerTasksAt1=Catalog,Design
    ServerTasksAt2=Updall
    ServerTasksAt5=Statlog
    

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

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

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

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

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

关于java - 如何加快频繁写作的速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14498052/

相关文章:

java - 如何使用 JarEntries 填充 JavaFX TreeView(包 - 文件)

Java StackOverFlowError - 错误的递归调用?

lotus-notes - 为什么预定的 Notes Agent 不运行

lotus-notes - FTSearch 寻找 '-'

lotus-notes - Lotus 脚本 通过 GetAllDocumentsByKey 在每个文档中设置值(唯一编号)

css - 使用 SSL 将 CSS 资源插入经典 Domino Web 开发页面

java - 在不同文件中的类之间发送数据

java - 如何编辑此方法以使用 javacv 绘制多边形?

datetime - 我的 xpages 上仅在午夜为用户调整日期

java - 如何从文档上下文获取附加文件(处理上传文件的请求)多米诺骨牌