我的 Solr 4 实例很慢,我不知道为什么。我正在尝试修改 JVM、Tomcat6 和 Solr 4 的配置以优化性能,以每秒查询次数作为关键指标。目前我正在small
使用 Debian 挤压的 EC2 层上运行,但如果需要,我准备切换到 Ubuntu。
我的用例没有什么特别之处。指数很小。查询确实包括适度数量的联合(例如 10 个)以及分面,但我认为这并不罕见。
我的理解是这些领域可能需要调整:
- 配置 JVM 垃圾收集计划和内存分配(“GC 调优是一种精确的艺术形式”,参考)
- 其他 JVM 设置
- Solr 的查询结果缓存、过滤器缓存、文档缓存设置
- Solr 的自动加热设置
有多种方法可以监控 Solr 的性能:
但是这些方法都没有表明需要调整哪些设置,并且没有任何指南可以指导我通过详尽的设置列表了解这些步骤,这些设置可能会提高性能。我已经查看了以下页面(一、二、三、四),到目前为止,我经历了几轮试验和错误,没有任何改进。
问题:
- 如何告诉 JVM 使用小型 EC2 实例上的所有 2 GB 内存?
- 如何调试和优化 JVM 垃圾回收?
- 我如何知道 I/O 限制(例如新的 EBS IOPS 定价)何时出现问题?
- 使用像下面的 NewRelic 示例这样的数字,如何检测有问题的行为,以及如何处理解决方案。
答案:
- 我正在寻找从 DevOps 或服务器管理员的角度(而不是索引或应用程序设计)设置和优化 Solr 4 的良好文档的链接。
- 我正在 catalina.sh、solrconfig.xml、solr.xml(其他?)中寻找最有可能导致问题的问题。
- 或者您认为可以解决问题的任何提示。