我最近开始使用 Apache Solr,目前正试图找出对 XML 文档语料库的索引进行基准测试的最佳方法。我基本上对磁盘上的吞吐量(索引的文档/秒)和索引大小感兴趣。
我在 Ubuntu 上做这一切。
基准技术
* 运行以下 5 次并获得平均总时间*
- 索引文件 [
curl http://localhost:8983/solr/core/dataimport?command=full-import
]- 当状态为“空闲”时,从 XML 响应中获取“所用时间”名称属性 [curl http://localhost:8983/solr/core/dataimport]
- 获取“数据/索引”目录的大小
- 删除索引 [
curl http://localhost:8983/solr/core/update --data '<delete><query>*:*</query></delete>' -H 'Content-type:text/xml; charset=utf-8'
] - 提交 [
curl http://localhost:8983/solr/w5/update --data '<commit/>' -H 'Content-type:text/xml; charset=utf-8'
] - 重新索引文档
问题
- 我打算通过将索引的文档数除以平均总时间来计算我的吞吐量;这样好吗?
- 是否有可用的工具(例如用于查询基准测试的 SolrMeter)或标准脚本可以用来实现我的目标?我不想重新发明轮子...
- 我的方法好吗?
- 与在 data/index/ 目录上执行“du”相比,是否有更简单的方法来获取索引大小?
- 在哪里可以找到有关如何解释 XML 响应属性的信息(请参阅下面的示例输出)。例如,我想知道
QTime
和Time taken
值之间的区别。
* 用于获取吞吐量的 XML 响应*
<?xml version="1.0" encoding="UTF-8"?>
<response>
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">0</int>
</lst>
<lst name="initArgs">
<lst name="defaults">
<str name="config">w5-data-config.xml</str>
</lst>
</lst>
<str name="status">idle</str>
<str name="importResponse"/>
<lst name="statusMessages">
<str name="Total Requests made to DataSource">0</str>
<str name="Total Rows Fetched">3200</str>
<str name="Total Documents Skipped">0</str>
<str name="Full Dump Started">2012-12-11 14:06:19</str>
<str name="">Indexing completed. Added/Updated: 1600 documents. Deleted 0 documents.</str>
<str name="Total Documents Processed">1600</str>
<str name="Time taken">0:0:10.233</str>
</lst>
<str name="WARNING">This response format is experimental. It is likely to change in the future.</str>
</response>