You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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 2181
    
    在输出中查找max buffer size,值应为31457280。

4. 注意事项

  • jute.maxbuffer的值为字节数,服务器端和客户端数值必须完全一致,不能存在差异。
  • 修改配置后必须重启所有ZK节点和Solr实例,确保参数生效。
  • 若使用外部ZK集群,需确保集群所有节点都配置该参数,不能仅修改Solr关联的配置。

内容的提问来源于stack exchange,提问作者shubhranshu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 15:57:49