我们创建了一个 java 代理,它对我们的应用程序套件进行检查,以查看父/子结构是否仍然正确。因此,它需要检查多个应用程序中的 8000 多个文档。
支票本身进行得非常快。我们使用导航器从视图中检索数据,并且仅从这些条目中读取数据。问题出在我们的日志记录机制中。每当我们报告级别为 SEVERE(又名:真正的大问题)的日志条目时,后端文档都会直接更新。这是因为我们不想丢失有关这些问题的任何信息。
在我们的测试运行中,我们看到一切都运行顺利,但是一旦我们“创建”了许多严重的问题,性能就会因为所有写入而大幅下降。我想看看是否有笔记开发者面临同样的挑战。如何才能在不丢失任何数据的情况下加快写入速度?
-- 在西蒙发表评论后添加了更多信息 --
它是一个预定的代理,每晚运行以检查不一致情况。目标当然是找到不一致之处并解决原因,并最终完全不报告不一致情况。
它是一个预定的代理,每晚运行以检查 不一致。
好的。因此,有很多因素需要考虑。
有嵌入式Jars吗?当代理嵌入了 jar 时,服务器必须将它们从代理分离到磁盘,然后才能运行代码。每次代理执行时都会执行此操作。这可能会影响性能。如果您的代理多次生成,请删除嵌入的 jar 并将它们放入服务器上的 lib xt 文件夹中(需要重新启动服务器)。
你提到它在晚上运行。默认情况下,一般内务处理流程在夜间运行。检查 ini 中安排的服务器任务的注释,并评估它们在运行时对服务器/代理的影响。例如:
ServerTasksAt1=Catalog,Design
ServerTasksAt2=Updall
ServerTasksAt5=Statlog
在这种情况下,如果运行在 2-5 之间,则 UPDALL 可能会对其产生影响。还要检查计划执行的程序文档。
你用什么方式写作?如果您为每个事件创建一个文档并且文档内容不多,那么写入时间应该是合理的。以下情况之一可能会影响性能。
最后要考虑的一件事。如果您收到 3000 个错误,那么一定有一个点,其中 X 数量的错误意味着没有必要继续,而是通过 SNMP/电子邮件/等提醒管理员?也许也值得对其进行编码。
除此之外,您可能应该发布一些与写入相关的示例代码。
嗯,困难或一般性问题。 据我了解,您可以在正在浏览的视图中更新文档。我会将
view.AutoUpdate
设置为 false。这可确保在运行代码时不会重新加载视图。这应该会加快你的代码速度。
这是设计器帮助的摘录:
通过显式设置避免自动更新父视图 自动更新为 False。自动更新会降低性能并可能 使导航器中的条目无效(“索引中未找到条目”)。你 可以根据需要使用“刷新”更新视图。
希望有帮助。
如果这没有帮助,您可能需要发布代码片段或更多详细信息。
或