写点什么

Lucid Imagination 发布了 Apache Lucene 性能监测工具

  • 2009-09-11
  • 本文字数:1409 字

    阅读完需:约 5 分钟

Lucid Imagination 是一家采用 Apache Lucene 和 Solr 搜索引擎类库从事相关开发的商业公司,其引入了一个新的名叫 LucidGaze 的监测工具。该产品给开发者提供了一个针对 Lucene 的完整版本的性能监测工具。性能数据可以打印在日志文件中、存储在轮询数据库中、或者通过 Java API 来使用。如果使用了轮询数据库,则可以采用 RRD4j 类库提供的一个标准 Swing 应用程序来读取或处理该数据库。

该软件是以.jar 文件提供的,用来替代 Lucene 的.jar 文件,因此安装非常简单。开发者只需在其应用的 classpath 中将 lucene-core.2.4.1.jar 替换成 lucene-core-gaze.2.4.1.jar 即可。这样,开发者无需对其源码做出任何改变。而对于那些无法获得应用程序源代码的情况,该产品也能派上用场。

LucidGaze 给开发者提供了一系列分析方法,以观察搜索转换为文档检索操作的状况,索引分析分解用户输入处理的效果,以及文本处理和索引构建的过程。该工具使用 5 个不同的监视器来搜集统计数据:

  1. 分析统计数据:Analyzer、TokenFilter、TokenStream 和 Tokenizer 的相关数据,以及哪一个 Analyzer 被用来为特定域产生 TokenStream。
  2. 文档统计数据:已建索引文档的总数、以及索引的各个域。
  3. 索引统计数据: IndexReader 和 IndexWriter 的活动和行为,比如查看每个实例、跟踪其每个相关方法的调用、查看缓存及内存使用情况、以及索引增加和提交的平均时间。
  4. 搜索统计数据:查询操作、搜索器性能和处理时间、方法调用统计、以及对大多常用执行的查询。
  5. 存储统计数据: Lucene 存储架构的目录实例(directory instance)。

运行所有监视器的开销相当大。在与 Lucid Imagination 技术团队成员之一 Grant Ingersoll 的交谈过程中,我们得知这一范围大概在 10-15%。但是通过配置需要收集哪些统计数据以及这些数据是否需要被持久化,可以减少这一开销。

InfoQ 还与 Ingersoll 谈到了 LucidGaze 的一些典型应用。他所强调的第一种应用就是用其发现普通开发者使用 Lucene 时的常犯错误:没有关闭 IndexReader 而导致的内存泄漏。LucidGaze 搜集当前打开的 Indexeader 数量,IndexReader#reopen() 的调用次数以及其中哪一次调用是在 IndexReader 的新实例里,除此之外还有 JVM 中正在用的所有 IndexReader 所消耗的 RAM 总数。在捕捉因没有关闭 reader 而引起的内存泄漏时这些统计数据很有用处——如果你认为使用了两个 IndexReader 而内存中却有 10 个,那基本上可以肯定有地方泄漏了。第二个常见情况是在海量数据(创建和删除大量文档)站点的大量数据测试期间查看重建索引策略。Lucene 的索引数据库是由几个独立的“段(segment)”组成,每个都存储在一个独立的文件中。当你给索引增加一个文档时,可能会产生新的段。你可以压缩数据库以减少段的数量,从而加速查询,但是这样做是有开销的,而且计算出最佳策略需要大量的反复运算。LucidGaze 所提供的新创建索引段的数量、段合并的数量以及其发生的平均时间,可以帮助开发者调优其实现。该工具还可以用来查看在大量数据测试期间遇到的特定问题——分理出长时间运行的消耗过量资源的查询,或者精确定位导致处理瓶颈的域或文档。

尽管没有开源,但该产品是免费提供的,可以从 Lucid Imagination 的 Web 站点上下载。目前该软件只支持Lucene 2.4.1,但Lucid Imagination 表示如果需求量大,他们可能会提供对其它版本的支持。

查看英文原文: Lucid Imagination Releases Performance Monitoring Utility for Apache Lucene

2009-09-11 08:592671
用户头像

发布了 150 篇内容, 共 46.6 次阅读, 收获喜欢 10 次。

关注

评论

发布
暂无评论
发现更多内容

Prompt learning 教学[技巧篇]:通过增加示例、引导词、特殊符号指令等方式让chatgpt输出更好的答案

汀丶人工智能

人工智能 自然语言处理 ChatGPT prompt learning

测试写代码的好处

FunTester

ElasticSearch中文分词和模糊查询

北桥苏

php elasticsearch

我通过 tensorflow 预测了博客的粉丝数

北桥苏

人工智能 深度学习 tensorflow

理解 K8s 多集群(下):解决方案对比与演进趋势

张旭海

k8s 多云 K8s 多集群管理

在Inteillj IDEA中使用Spark操作Hive

北桥苏

spark hive Big Data

SocketLog 的基本使用

北桥苏

php thinkphp SocketLog

京东内部疯传的Redis学习笔记,被阿里P7夸爆

小小怪下士

Java redis 程序员

我的网站中了马!

北桥苏

php thinkphp 网站开发

如何获得高并发经验?看这篇文章就够了

Java永远的神

程序员 系统设计 高并发 架构师 java面试

理解 K8s 多集群(上):构建成熟可扩展云平台的核心要素

张旭海

k8s 多云 K8s 多集群管理

Django笔记二十七之数据库函数之文本函数

Hunter熊

Python django 文本函数 concat substr

如何使用Go语言实现软件设计中的‘对扩展开放、修改关闭’原则

Jack

关于 PHP 启动 MongoDb 找不到指定模块问题

北桥苏

php mongodb

绝~ 阿里内部“Java进阶必备宝典”,理论到实战,一键通关

程序知音

Java java架构 Java进阶 后端技术

Python潮流周刊#1:如何系统地自学Python?

Python猫

Python

如何在业务代码中使用 ThinkPHP5.1 封装的容器内反射方法

北桥苏

thinkphp 反射调用

PS 2023中文一键安装版 Photoshop永久使用

Rose

Photoshop 2023中文版 photoshop下载 PS2023下载 PS 2023破解

C++中的可移植性和跨平台开发

小万哥

iOS MachineLearning 系列(16)—— 几个常用的图片分类CoreML模型

珲少

C语言编程-环境设置

芯动大师

C语言 环境搭建 三周年连更

超级独角兽 Databricks 的崛起之路

CnosDB

时序数据库 开源社区 CnosDB Databricks

CleanMyMac X专业的Mac清理工具,一次激活,永久使用

Rose

CleanMyMac下载 CleanMyMac v4.13.4 Mac清理优化工具 苹果电脑系统清理软件

工赋开发者社区 | 何谓智能工厂?国内外智能工厂建设的现状分析

工赋开发者社区

华为许超:伙伴成功,才有华为企业业务成功

脑极体

华为

用扩展的方式在 PHP 中使用 Kafka

北桥苏

php Kakfa

香港影视集团星光文化旗下 NFT 发售平台——StarNFT 上线

BlockChain先知

OPPO关停自研芯片公司哲库,这对行业将产生什么影响?

福大大架构师每日一题

芯片 福大大

Charles(HTTP代理服务器)注册安装教程

Rose

Charles注册码 Charles下载 HTTP代理服务器

n-Track Studio 9录音、音频编辑一站式完成!

真大的脸盆

Mac 音频制作 Mac 软件 音频处理 录音工具

Lucid Imagination发布了Apache Lucene性能监测工具_Java_Charles Humble_InfoQ精选文章