我试图找出导致我的Solr应用程序中Qtime与实际响应时间之间差异的原因。 SolrServer与生成查询的程序在同一台机器上运行。 我的Qtimes平均在19ms左右,但实际得到我的回复需要30ms。 这可能听起来不是很多,但我使用Solr来处理每毫秒都很重要的一些模糊的东西。
我认为时间差异不是由磁盘I / O引起的,因为使用RAMDirectoryFactory并没有加快速度。
使用SolrEmbeddedServer而不是SolrHttpServer并不会导致加速(因此不是Jetty会导致差异吗?)
查询程序和Solr实例之间的数据传输是否导致时差?更重要的是,我怎样才能最大限度地减少这段时间?
问候
答案 0 :(得分:0)
这是众所周知的FAQ:
为什么QTime Solr的返回时间低于我的时间 在我的客户中测量?
“QTime”仅反映Solr处理的时间 请求。它没有反映从中读取请求的任何时间 通过网络的客户端,或将响应写回 客户。 (由于QTime实际上应该是显而易见的 包含在回复正文中。)
在此网络I / O上花费的时间可能是一项非常重要的贡献 到客户观察到的总时间,特别是因为 Solr可以在很多情况下为“存储的字段”流式传输 响应(即:由“fl”参数请求)直接来自索引 部分响应写入,在这种情况下磁盘I / O读取那些 存储的字段值可能有助于观察到的总时间 在QTime中测量的时间以外的客户。
如何最大限度地缩短这段时间?
不确定它是否会产生任何影响,但请确保您使用的是javabin格式,而不是json或xml(wt = javabin)