1. GC的选择
4core、8g memory 首选cms,cms的各参数的调节需要观察。
2. swap配置
性能优先,建议关掉。关掉的代价需要评估。关掉之后buffer/cache等变化需要观察!
3. newSize maxnewsize 尽量小 并且值相同,PermSize 与maxPermSize 值也相等,尽量小
4core、8g 在1024m左右既可以
4.xms xmx 值相等,能小尽量小,节省内存给额外进程。单进程,不妨开大些
8g memory分配jvm在6g左右既可以
5.solr cache的参数配置,务必谨慎
cache参数只针对一个cache对象而说,而searcherhanlder层的cache无法控制上限,往往导致oom
fieldvaluecache 的配置和warm 对内存消耗、性能影响比较明显
filtecache docuementcache 明显与查询请求特征相关
如果请求量足够大,建议不配置cache,系统自身在 快的过程中 省出内存
6.句柄追踪
/usr/sbin/lsof | grep deleted
solr 句柄发生点:索引同步、索引core切换
7.load追踪
死循环导致load高,top shift+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超时等。