【问题标题】:Debugging With RavenDB Is Horrendously Slow使用 RavenDB 进行调试非常慢
【发布时间】:2014-11-27 17:01:35
【问题描述】:

我使用的是 RavenDB 2.0.3.0 版。附加调试器后,涉及 RavenDB 的所有内容都运行得非常缓慢。每个查询都需要几秒钟才能完成。

如果我在调试器刚刚坐在那里时按暂停,我总是会看到它挂起并显示以下调用跟踪:

Lucene.Net.dll!Lucene.Net.QueryParsers.FastCharStream.Refill() 第 91 行 C# Lucene.Net.dll!Lucene.Net.QueryParsers.FastCharStream.ReadChar() 第 53 行 C# Lucene.Net.dll!Lucene.Net.QueryParsers.QueryParserTokenManager.JjMoveNfa_3(int startState, int curPos) 第 604 行 + 0x1b 字节 C# Lucene.Net.dll!Lucene.Net.QueryParsers.QueryParserTokenManager.JjMoveStringLiteralDfa0_3() 第 94 行 + 0xd 字节 C# Lucene.Net.dll!Lucene.Net.QueryParsers.QueryParserTokenManager.GetNextToken() 第 1379 行 + 0x9 字节 C# Lucene.Net.dll!Lucene.Net.QueryParsers.QueryParser.Jj_ntk() 第 1929 行 + 0x1d 字节 C# Lucene.Net.dll!Lucene.Net.QueryParsers.QueryParser.Clause(string field) Line 1373 + 0x1d bytes C# Lucene.Net.dll!Lucene.Net.QueryParsers.QueryParser.Query(string field) Line 1301 + 0xc bytes C# Lucene.Net.dll!Lucene.Net.QueryParsers.QueryParser.TopLevelQuery(string field) Line 1287 + 0xc bytes C# Lucene.Net.dll!Lucene.Net.QueryParsers.QueryParser.Parse(string query) Line 223 + 0xf bytes C# Raven.Database.dll!Raven.Database.Indexing.QueryBuilder.BuildQuery(字符串查询,Raven.Abstractions.Data.IndexQuery indexQuery,Raven.Database.Indexing.RavenPerFieldAnalyzerWrapper 分析器)第 56 行 + 0xe 字节 C# Raven.Database.dll!Raven.Database.Indexing.Index.IndexQueryOperation.GetLuceneQuery(string query, Raven.Abstractions.Data.IndexQuery indexQuery) Line 1120 + 0x1d bytes C# Raven.Database.dll!Raven.Database.Indexing.Index.IndexQueryOperation.GetLuceneQuery() 第 1081 行 + 0x28 字节 C# Raven.Database.dll!Raven.Database.Indexing.Index.IndexQueryOperation.Query() 第 803 行 + 0x26 字节 C# [外部代码] Raven.Database.dll!Raven.Database.DocumentDatabase.Query.AnonymousMethod__8e(Raven.Database.Storage.IStorageActionsAccessor actions) Line 1220 + 0x145 bytes C# Raven.Database.dll!Raven.Database.DocumentDatabase.Query(字符串索引,Raven.Abstractions.Data.IndexQuery 查询)第 1237 行 C# Raven.Database.dll!Raven.Database.Queries.DynamicQueryRunner.ExecuteActualQuery(Raven.Abstractions.Data.IndexQuery query, Raven.Database.Data.DynamicQueryMapping map, System.Tuple touchTemporaryIndexResult, string realQuery) Line 82 + 0x32b bytes C# Raven.Database.dll!Raven.Database.Queries.DynamicQueryRunner.ExecuteDynamicQuery(string entityName, Raven.Abstractions.Data.IndexQuery query) Line 49 + 0x15 bytes C# Raven.Database.dll!Raven.Database.Queries.DynamicQueryExtensions.ExecuteDynamicQuery(Raven.Database.DocumentDatabase self, string entityName, Raven.Abstractions.Data.IndexQuery indexQuery) 第 19 行 + 0x11 字节 C# Raven.Client.Embedded.dll!Raven.Client.Embedded.EmbeddedDatabaseCommands.Query(string index, Raven.Abstractions.Data.IndexQuery query, string[] includes, bool metadataOnly, bool indexEntriesOnly) Line 389 + 0x47 bytes C# Raven.Client.Lightweight.dll!Raven.Client.Document.AbstractDocumentQuery>.ExecuteActualQuery() 第 535 行 + 0x50 字节 C# Raven.Client.Lightweight.dll!Raven.Client.Document.AbstractDocumentQuery>.InitSync() 第 518 行 C# Raven.Client.Lightweight.dll!Raven.Client.Document.AbstractDocumentQuery>.QueryResult.get() 第 505 行 C# Raven.Client.Lightweight.dll!Raven.Client.Linq.RavenQueryProviderProcessor.ExecuteQuery() 第 1425 行 + 0x1b 字节 C# Raven.Client.Lightweight.dll!Raven.Client.Linq.RavenQueryProviderProcessor.Execute(System.Linq.Expressions.Expression 表达式) 第 1398 行 + 0x3d 字节 C#

如果我在没有附加调试器的情况下运行,一切都运行良好且快速......我在昨天之前从未遇到过这个问题。

我正在使用带有 DataDir=~\App_Data\RavenDB 的 EmbeddableDocumentStore。

我尝试删除 RavenDB 目录,但即使使用全新的数据库,Raven 仍然很慢。

知道出了什么问题或如何排除故障吗?

【问题讨论】:

    标签: ravendb


    【解决方案1】:

    如果您使用的是 IntelliTrace,请将其关闭。 在异常设置中,标记 Just My Code 并且不要停止处理异常。

    【讨论】:

    • 没有变化。在没有附加调试器的情况下运行时,它实际上是即时的。我没有设置断点,没有手表,没有 Intellitrace,并且只打开了我的代码……尽管有趣的是,当我点击暂停时,我确实在 Call Stack 窗口中看到了完整的 Raven/Lucene 调用堆栈……不仅仅是“外部代码”...不确定是否正常
    【解决方案2】:

    我们有一段时间遇到同样的问题,直到我们发现我们正在为每个请求创建索引(由于 DocumentStore 的错误 IoC 注册)。

    我们确保每个应用程序初始化时都会调用此行一次,并且速度会消失:

    IndexCreation.CreateIndexes(typeof(MyIndex).Assembly, store);
    

    【讨论】:

      猜你喜欢
      • 2016-04-22
      • 2018-06-25
      • 2018-06-13
      • 1970-01-01
      • 2015-04-21
      • 2019-10-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多