ted*_*uss 1 garbage-collection solr jvm amazon-ec2
我的Solr 4实例很慢,我不知道为什么.我试图修改JVM,Tomcat6和Solr 4的配置以优化性能,每秒查询作为关键指标.目前我正在small使用Debian squeeze 在EC2 层上运行,但是如果需要可以切换到Ubuntu.
我的用例没有什么特别之处.指数很小.查询确实包括中等数量的联合(例如10),加上刻面,但我认为这并不常见.
我的理解是这些领域可能需要调整:
有许多方法可以监控Solr的性能:
但是这些方法都没有指出需要调整哪些设置,并且没有指导我通过详尽的设置列表知道这些步骤可能会提高性能.我已经回顾了以下几页(一,二,三,四),到目前为止经历了几轮试验和错误而没有改进.
问题:
回答:

首先,您不应该专注于切换Linux发行版.不同的分布可能会带来一些变化,但考虑到您提供的信息,没有任何证据表明这些变化可能很重要.
你提到了很多可能的优化,这可能是压倒性的.只有在证明问题出现在堆栈的特定部分后,才应考虑调整区域.
JVM堆大小
您可以使用该参数-mx1700m为JVM提供最大1.7GB的RAM.Hotspot可能不需要它,所以如果你的堆容量没有达到那个数字,不要感到惊讶.
您应该将最小堆大小设置为较低的值,以便Hotspot可以优化其内存使用量.例如,要将最小堆大小设置为128MB,请使用-mx128m.
垃圾收集器
根据您的说法,您的硬件有限(1核,最大1.2GHz,请参阅此页)
M1小实例
- 1.7 GiB内存
- 1个EC2计算单元(1个虚拟核心,带1个EC2计算单元)
- ...
一个EC2计算单元提供1.0-1.2 GHz 2007 Opteron或2007 Xeon处理器的等效CPU容量
因此,使用低延迟GC(CMS)将无济于事.由于您只有一个核心,它将无法与您的应用程序同时运行.您应该使用切换到吞吐量GC -XX:+UseParallelGC -XX:+UseParallelOldGC.
GC真的有问题吗?
要回答该问题,您需要打开GC日志记录.这是查看GC暂停是否对您的应用程序响应时间负责的唯一方法.你应该打开它们-Xloggc:gc.log -XX:+PrintGCDetails.
但我不认为这里存在问题.
这是硬件问题吗?
要回答此问题,您需要监视资源利用率(磁盘I/O,网络I/O,内存使用情况,CPU使用率).你有很多的工具来做到这一点,包括top,free,vmstat,iostat,mpstat,ifstat,...
如果您发现其中一些资源是饱和的,那么您需要一个更大的EC2实例.
这是软件问题吗?
在您的统计信息中,文档缓存命中率和过滤器缓存命中率是健康的.但是,我认为查询结果缓存命中率非常低.这意味着很多查询操作.
您应该监视查询执行时间.根据该值,您可能希望增加缓存大小或调整查询,以便缩短查看时间.
更多链接
JVM选项参考:http://jvm-options.tech.xebia.fr/
我在某些应用程序性能审核中所做的反馈:http://www.pingtimeout.fr/2013/03/petclinic-performance-tuning-about.html
希望有所帮助!
| 归档时间: |
|
| 查看次数: |
1074 次 |
| 最近记录: |