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