Solr JVM&运维

1.GC的选择
4core、8gmemory首选cms,cms的各参数的调节需要观察。

2.swap配置

性能优先,建议关掉。关掉的代价需要评估。关掉之后buffer/cache等变化需要观察!

3.newSizemaxnewsize尽量小并且值相同,PermSize与maxPermSize
值也相等,尽量小
4core、8g在1024m左右既可以

4.xmsxmx值相等,能小尽量小,节省内存给额外进程。单进程,不妨开大些
8gmemory分配jvm在6g左右既可以

5.solrcache的参数配置,务必谨慎
cache参数只针对一个cache对象而说,而searcherhanlder层的cache无法控制上限,往往导致oom

fieldvaluecache的配置和warm对内存消耗、性能影响比较明显
filtecachedocuementcache明显与查询请求特征相关
如果请求量足够大,建议不配置cache,系统自身在快的过程中省出内存

6.句柄追踪
/usr/sbin/lsof|grepdeleted
solr句柄发生点:索引同步、索引core切换

7.load追踪
死循环导致load高,topshift+h;heap导出
由前者发现load高线程id,由后者发现那个方法不对劲
但是top不一定准确,不妨一试,最好dump出内存分析。参考文章
http://religiose.iteye.com/blog/1488806

索引查询导致:与内存、cache配置有关、数据总量是硬关联
在线全量、在线索引合并load也会增高
句柄导致load增高
swap区大量使用
计算密集load增高,例如facet、group的内存计算
8.超时追踪
querylog解析,提前超时log,按时间分类。超时点:切换core、增量点两处,以及复杂查询。

9.所有参数都监控起来,包括disk、memory、solrcore、query超时等。

你可能感兴趣的:(jvm,GC,运维,Solr)