使用Bitnami Helm Chart部署Solr无法上传超1MB文件至ZooKeeper
解决Solr通过ZooKeeper上传大文件失败的问题
问题根源
ZooKeeper的jute.maxbuffer参数默认限制单条数据最大为1MB,这个参数必须在ZooKeeper服务器端和所有客户端(包括执行上传命令的Solr实例)配置相同的值,否则会因缓冲区不匹配导致连接断开。你仅配置了ZK服务器端参数,遗漏了Solr客户端的配置,因此问题未解决。
解决方案
1. 确保ZooKeeper集群所有节点配置jute.maxbuffer
如果是通过Solr Helm Chart自带的ZooKeeper,在Solr的values.yml中找到ZooKeeper子配置块添加环境变量:
zookeeper: enabled: true extraEnvVars: - name: ZK_SERVER_OPTS value: "-Djute.maxbuffer=31457280" extraEnvVarsForServer: - name: ZK_SERVER_OPTS value: "-Djute.maxbuffer=31457280"
修改后重新部署ZK集群:
helm upgrade solr bitnami/solr -f values.yml
2. 配置Solr客户端的jute.maxbuffer参数
执行上传命令的Solr实例需要加载该参数,避免客户端缓冲区小于ZK服务器端。在Solr的values.yml中添加:
extraEnvVars: - name: SOLR_OPTS value: "-Djute.maxbuffer=31457280"
重新部署Solr:
helm upgrade solr bitnami/solr -f values.yml
如果是在容器内手动执行上传命令,先临时设置环境变量再执行:
export SOLR_OPTS="-Djute.maxbuffer=31457280" ./bin/solr zk upconfig -d /opt/bitnami/ -n test_config -z solr-zookeeper
3. 验证配置是否生效
- 进入ZooKeeper容器检查环境变量:
输出需包含echo $ZK_SERVER_OPTS-Djute.maxbuffer=31457280。 - 进入Solr容器检查环境变量:
输出需包含echo $SOLR_OPTS-Djute.maxbuffer=31457280。 - 使用ZK四字命令确认服务器端缓冲区大小:
在输出中查找echo stat | nc solr-zookeeper 2181max buffer size,值应为31457280。
4. 注意事项
jute.maxbuffer的值为字节数,服务器端和客户端数值必须完全一致,不能存在差异。- 修改配置后必须重启所有ZK节点和Solr实例,确保参数生效。
- 若使用外部ZK集群,需确保集群所有节点都配置该参数,不能仅修改Solr关联的配置。
内容的提问来源于stack exchange,提问作者shubhranshu
相关产品推荐
相关产品推荐

