我写这个问题是为了分享我们公司找到的解决方案。我们将Solr从仅docker解决方案迁移到kubernetes解决方案。
在kubernetes上,环境以缓慢结束。至少对我来说,这个解决方案是非典型的。
环境:
- solr(8.2.0)只有一个节点
- solr数据库,250GB磁盘
- kubernetes over Rancher
- 节点具有24vcpu和32GB Ram
- 节点主机Solr和nginx ingress
- 为kubernetes中的Solr pod保留30GB
- 为Solr预留25GB
预期负载:
- 350更新/分钟(pdf文档和html文档)
- 50选择/min
结果是,随着时间的推移,Solr在主机上的负载越来越高。罪魁祸首是磁盘访问过多。
经过一周的调整,我们找到了一个简单的解决方案:
Solr JVM有25 GB。我们将值降低为10GB。
用新值启动solr的命令:
/opt/solr/bin/solr start -f -force -a '-Xms10g -Xmx10g' -p 8983
如果有人能解释一下发生了什么事,那就太好了。我的猜测是solr试图赚钱,而kubernetes正在获取这个缓存。因此,Solr最终会持续读取磁盘,试图构建它的缓存。