Ditto创建Thing报ThingTooLargeException如何修改大小上限配置
Ditto
ThingTooLargeException 大小限制修改方案 你在ditto/things/model/pom.xml中找到的<ditto.limits.things.max-size>102400</ditto.limits.things.max-size>是源码构建阶段注入的默认配置值,单位为字节,默认限制单个Thing(含属性、特性、关联策略等全部内容)的序列化体积不超过100KB。直接修改该pom文件需要重新全量编译整个Ditto项目,非本地调试场景不推荐使用,根据你的部署方式选择以下覆写方案即可:
容器化部署(Docker/Docker Compose/K8s,绝大多数部署场景)
Ditto所有官方镜像都支持通过环境变量覆写配置,转换规则为:原配置项的.替换为_,全大写,增加DITTO_前缀。
本配置对应的环境变量为DITTO_LIMITS_THINGS_MAX_SIZE,仅需要给things-service服务注入该变量,赋值为你需要的阈值(单位字节,例如200KB填204800,1MB填1048576),重启things服务即可生效。
Docker Compose配置示例:
services: things: image: eclipse/ditto-things:对应你使用的版本号 environment: - DITTO_LIMITS_THINGS_MAX_SIZE=204800 # 其余原有环境变量保持不变
K8s部署时直接在things服务对应的Deployment容器env段添加该环境变量即可。
裸机JAR直接启动
如果是直接运行编译好的服务JAR,启动things-service时添加JVM系统参数指定配置值即可:
java -Dditto.limits.things.max-size=204800 -jar things-service.jar
本地源码调试场景
这种场景可以直接修改根目录pom.xml中同名的<ditto.limits.things.max-size>配置值(子模块pom里的配置是继承根pom的占位值,改根pom即可),重新构建things模块后生效,仅推荐本地调试使用,不要用该方式构建生产部署包。
注意事项
- 阈值不要盲目调大:单Thing体积过大会显著拉高Ditto的内存占用、降低读写性能,集群模式下还会增加节点间数据同步开销,建议根据实际业务需求最小化调整,非必要不要超过1MB。
- 配置仅需在
things-service服务上设置,其余服务无需额外修改,会自动同步该校验规则。 - 修改配置重启后,存量已存在的超过新阈值的Thing不会被自动清理,但后续对这些Thing执行更新操作时会触发大小校验。
内容的提问来源于stack exchange,提问作者Mex
相关产品推荐
相关产品推荐

