RavenDB:从JsonReader读取RavenJArray时出错

时间:2012-01-12 16:44:21

标签: iis ravendb

我在IIS 7.5上运行最新的RavenDB(之前“稳定”,但现在尝试最新的“不稳定”版本)。我们有50万个文档,并且由于我们需要相当频繁地更新这些文档,因此需要大量写入文档。

我们经常在Raven Studio中看到以下错误(以及在循环中插入批处理时“对象引用未设置为对象的实例。”)。对大量文档执行补丁请求时也会发生同样的情况。我们以前有大的map / reduce索引导致了类似的问题。

我们可以做些什么(可能通过IIS来处理)这更好,并阻止数据库性能下降或变得无法使用?以下是错误吗?

我还注意到我们的ESENT“数据”文件变得很大(10 + Gb),可能(不明智),因为之前存储了大量相当大的文档。有没有办法“缩小”这个并缩小它?

(注意:稍后我可以用一个总结来编辑这个Q.)

Error reading RavenJArray from JsonReader.

System.Exception: Error reading RavenJArray from JsonReader.
   at Raven.Json.Linq.RavenJArray.Load(JsonReader reader)
   at Raven.Json.Linq.RavenJArray.Parse(String json)
   at Raven.Client.Silverlight.Connection.Async.AsyncServerClient.b__22(Task`1 task)
   at System.Threading.Tasks.Task`1.c__DisplayClass1a`1.b__19()
   at System.Threading.Tasks.Task`1.InvokeFuture(Object futureAsObj)
   at System.Threading.Tasks.Task.InnerInvoke()
   at System.Threading.Tasks.Task.Execute()

Inner StackTrace: 
   at Raven.Studio.Infrastructure.InvocationExtensions.Catch(Task parent, Action`1 action)
   at Raven.Studio.Infrastructure.InvocationExtensions.Catch(Task parent)
   at Raven.Studio.Infrastructure.Model.TimerTicked()
   at Raven.Studio.Infrastructure.View.b__7(Model model)
   at Raven.Studio.Infrastructure.View.InvokeOnModel(Object ctx, Action`1 action)
   at Raven.Studio.Infrastructure.View.InvokeTimerTicked(Object ctx)
   at Raven.Studio.Infrastructure.View.DispatcherTimerOnTick(Object sender, EventArgs eventArgs)
   at MS.Internal.CoreInvokeHandler.InvokeEventHandler(Int32 typeIndex, Delegate handlerDelegate, Object sender, Object args)
   at MS.Internal.JoltHelper.FireEvent(IntPtr unmanagedObj, IntPtr unmanagedObjArgs, Int32 argsTypeIndex, Int32 actualArgsTypeIndex, String eventName)
Could not parse json:


System.InvalidOperationException: Could not parse json:
 ---> System.Exception: Error reading RavenJObject from JsonReader.
   at Raven.Json.Linq.RavenJObject.Load(JsonReader reader)
   at Raven.Json.Linq.RavenJObject.Parse(String json)
   --- End of inner exception stack trace ---
   at Raven.Json.Linq.RavenJObject.Parse(String json)
   at Raven.Client.Silverlight.Connection.Async.AsyncServerClient.b__58(Task`1 task)
   at System.Threading.Tasks.Task`1.c__DisplayClass1a`1.b__19()
   at System.Threading.Tasks.Task`1.InvokeFuture(Object futureAsObj)
   at System.Threading.Tasks.Task.InnerInvoke()
   at System.Threading.Tasks.Task.Execute()

Inner StackTrace: 
   at Raven.Studio.Infrastructure.InvocationExtensions.Catch(Task parent, Action`1 action)
   at Raven.Studio.Infrastructure.InvocationExtensions.Catch(Task parent)
   at Raven.Studio.Infrastructure.Model.TimerTicked()
   at Raven.Studio.Infrastructure.View.b__7(Model model)
   at Raven.Studio.Infrastructure.View.InvokeOnModel(Object ctx, Action`1 action)
   at Raven.Studio.Infrastructure.View.InvokeTimerTicked(Object ctx)
   at Raven.Studio.Infrastructure.View.DispatcherTimerOnTick(Object sender, EventArgs eventArgs)
   at MS.Internal.CoreInvokeHandler.InvokeEventHandler(Int32 typeIndex, Delegate handlerDelegate, Object sender, Object args)
   at MS.Internal.JoltHelper.FireEvent(IntPtr unmanagedObj, IntPtr unmanagedObjArgs, Int32 argsTypeIndex, Int32 actualArgsTypeIndex, String eventName)

1 个答案:

答案 0 :(得分:1)

你能更新你的ravendb版本吗?我们添加了其他错误报告,可以帮助跟踪该问题。 db的大小可以是truncate,但只能脱机。 它的工作方式,我们永远不会给操作系统留空间,但保留它用于我们自己的用途。