物联网设备管理平台致力于为客户提供高效、可靠的物联网解决方案。基于开源物联网平台进行深度二次开发,我们打造了功能强大、灵活易用的物联网平台,广泛应用于智能家居、智能工厂、智能城市等多个领域

一、标准资源要求

  • CPU:建议至少 8 vCPU 起步,测试表明从 4 核升级到 8 核可显著降低响应时间(从 200ms 降至 50ms)。

  • 内存:推荐 16GB 以上,Cassandra 默认占用较高,可通过 JVM 参数限制其内存使用(如 -Xms4G -Xmx4G)。

  • 磁盘:使用 SSD,避免 I/O 阻塞;Cassandra 对磁盘吞吐非常敏感。

二、2核CPU + 2GB内存配置

2核CPU + 2GB内存 的极低资源限制下运行 ThingsBoard,必须“削骨瘦身”式调优,否则极易 OOM 或卡死。下面给出一份 “极限生存”版配置清单(生产环境仍建议升级硬件):

1. 安装方式:选轻量组合

  • 数据库PostgreSQL(比 Cassandra 省内存)

  • 版本:ThingsBoard CE(非 PE),关闭所有微服务扩展。


✅ 2. JVM 内存压到极限

编辑 /etc/thingsboard/conf/thingsboard.conf

# 总内存2G,给JVM 1.2G,留800M给OS和PostgreSQL
JAVA_OPTS="$JAVA_OPTS -Xms768m -Xmx1024m"
# 选用 SerialGC(比 G1 省内存)
JAVA_OPTS="$JAVA_OPTS -XX:+UseSerialGC"
# 强制尽快回收,减少堆碎片
JAVA_OPTS="$JAVA_OPTS -XX:MaxGCPauseMillis=200"

实测 Xmx1024m 是 ThingsBoard 启动不 OOM 的上限;再低就会启动失败 。


✅ 3. PostgreSQL 降到“玩具”级

编辑 /etc/postgresql/*/main/postgresql.conf

max_connections = 20
shared_buffers = 128MB
effective_cache_size = 512MB
work_mem = 2MB
maintenance_work_mem = 64MB
wal_buffers = 1MB
checkpoint_segments = 3
random_page_cost = 2.0

重启 PostgreSQL,并立即执行:

sudo -u postgres psql thingsboard -c "SELECT pg_reload_conf();"

✅ 4. ThingsBoard 功能“阉割”

  • 彻底关闭规则引擎(如非必需)
    thingsboard.yml 中:

    yaml

    复制

    actors:rule:enabled: false
  • 关闭遥测持久化(仅保留最新值)
    在租户配置里把 “存储遥测数据” 设为 “不存储”

  • 关闭审计日志

    audit-log:enabled: false
  • 缩短会话 TTL

    security:jwt:refreshTokenExpTime: 900   # 15分钟

✅ 5. 系统级压榨

  • swap 文件:务必添加 2GB swap,防止 OOM-killer:

    sudo fallocate -l 2G /swapfile && sudo chmod 600 /swapfile
    sudo mkswap /swapfile && sudo swapon /swapfile
    echo '/swapfile none swap defaults 0 0' | sudo tee -a /etc/fstab
  • 文件句柄

    echo "* soft nofile 65536" | sudo tee -a /etc/security/limits.conf
    echo "* hard nofile 65536" | sudo tee -a /etc/security/limits.conf
  • 日志级别调到 WARN: 修改 /usr/share/thingsboard/conf/logback.xml

    <logger name="org.thingsboard" level="WARN"/>

✅ 6. 运行后监控

  • 必装 htop + iostat,实时盯紧内存、swap、I/O。

  • 定时重启:每日低峰期重启一次 ThingsBoard,清内存碎片:

    sudo crontab -e
    0 3 * * * systemctl restart thingsboard

✅ 7. 终极方案:换“更轻”的发行版

如果仍频繁 OOM,可考虑换 ThingsBoard Edge(专为边缘节点裁剪),或 ThingsBoard Gateway + 外部 ThingsBoard Cloud,把计算压力转移出去。


✅ 小结:极限调优清单(2C2G)

项目极限值备注
JVM Xmx768m–1024m再低就起不来
PostgreSQLshared_buffers 128M不能再高,否则和JVM抢
规则引擎关闭省 200–300 MB
遥测存储关闭省磁盘和内存
swap2 GB防止 OOM
日志级别WARN省 I/O

再次提醒:物联网设备管理平台配置仅适合开发/演示或**<50 设备**的极小场景。生产环境请至少升级到 4C4G,否则用户体验和稳定性无法保证。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/96237.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/96237.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/96237.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#多线程学习—主子线程,Invoke与begininvoke

一、为什么需要多线程操作&#xff1f;在 WinForms 应用程序中&#xff0c;主线程&#xff08;UI 线程&#xff09;负责处理用户交互和界面更新。当执行耗时操作&#xff08;如网络请求、文件读写、复杂计算&#xff09;时&#xff0c;如果直接在 UI 线程执行&#xff0c;会导致…

Vue 核心知识点总结

Vue 作为国内最普及的前端框架,是面试中考察概率最高的技术之一。本文将系统梳理 Vue 的核心知识点,包括 Vue3 与 Vue2 的区别、组件通信、生命周期、性能优化等关键内容。 🔥 Vue3 和 Vue2 的主要区别 Vue 3 提供了更现代化、更高性能的架构,通过 Composition API 和 P…

Python脚本每天爬取微博热搜-升级版

主要优化内容&#xff1a; 定时任务调整&#xff1a; 将定时任务从每小时改为每10分钟执行一次 调整了请求延迟时间&#xff0c;从1-3秒减少到0.5-1.5秒 缩短了请求超时时间&#xff0c;从10秒减少到8秒 性能优化&#xff1a; 移除了广告数据的处理&#xff0c;减少不必要的处理…

win11兼容运行远古游戏

游戏<远古战争>属于win7时代的游戏&#xff0c;在win11系统中运行&#xff0c;当鼠标移动立马卡住 解决方案&#xff1a; 最优&#xff1a;采用wmware虚拟机安装win7系统 最简单&#xff1a;使用 DxWnd 模拟老游戏运行环境 DxWnd官网下载 附录&#xff1a;游戏下载网址…

Docker小游戏 | 使用Docker部署人生重开模拟器

Docker小游戏 | 使用Docker部署人生重开模拟器 前言 项目介绍 项目简介 项目预览 二、系统要求 环境要求 环境检查 Docker版本检查 检查操作系统版本 三、部署人生重开模拟器小游戏 下载镜像 创建容器 检查容器状态 检查服务端口 安全设置 四、访问人生重开模拟器 五、总结 前言…

从依赖到自研:一个客服系统NLP能力的跃迁之路

前言&#xff1a;七年磨一剑的技术突围2015年在某平台上线初期&#xff0c;智能客服系统即采用行业通用的第三方NLP解决方案。在随后的八年发展历程中&#xff0c;系统虽历经三次重大版本迭代&#xff0c;但始终未能突破核心语义识别能力的外部依赖。这种依赖带来了三重困境&am…

50.Seata-AT模式

AT模式同样是分阶段提交的事务模型。优势是弥补了XA模型中资源锁定周期过长的缺陷。 没有代码入侵,框架自动完成快照生成、回滚和提交。实现非常简单。 两阶段之间属于软状态,属于最终一致。 AT模式 阶段一RM的工作: 1.注册分支事务 2.记录undo-log (数据快照),记录更…

Android13车机系统自定义系统栏显示策略之状态栏下拉异常

1、引言 文章《Android13车机系统实现系统栏自定义显示策略》介绍了车机系统上自定义系统栏(状态栏、底部栏)显示策略,文中末尾提到了一个遗留问题: 由于状态栏区域支持点击或下拉显示出快捷设置&消息通知栏,三方应用显示时,从状态栏中间区域而不从顶部边缘下拉,底…

【Langchain系列五】DbGPT——Langchain+PG构建结构化数据库智能问答系统

Langchain二次开发专栏 【Langchain系列一】常用大模型的key获取与连接方式 【Langchain系列二】LangChain+Prompt +LLM智能问答入门 【Langchain系列三】GraphGPT——LangChain+NebulaGraph+llm构建智能图数据库问答系统 【Langchain系列四】RAG——基于非结构化数据库的智能问…

生信分析自学攻略 | R语言数据类型和数据结构

在前面两篇文章中&#xff0c;我们已经成功搭建了R和RStudio这一强大的生信分析平台。然而&#xff0c;工具再好&#xff0c;若不懂得如何“放置”和“理解”你的数据&#xff0c;一切都将寸步难行。今天&#xff0c;我们将学习R语言最重要的部分——数据类型&#xff08;Data …

Python工程与模块命名规范:构建可维护的大型项目架构

目录 Python工程与模块命名规范&#xff1a;构建可维护的大型项目架构 引言&#xff1a;命名的重要性 在软件开发中&#xff0c;命名可能是最容易被忽视但却是最重要的实践之一。根据2023年对Python开源项目的分析&#xff0c;超过35%的维护问题与糟糕的命名约定直接相关。一个…

Props 与 State 类型定义

下面&#xff0c;我们来系统的梳理关于 TypeScript 集成&#xff1a;Props 与 State 类型定义 的基本知识点&#xff1a;一、TypeScript 在 React 中的核心价值 TypeScript 为 React 开发提供了强大的类型安全保证&#xff0c;特别是在定义组件 Props 和 State 时&#xff1a; …

[1Prompt1Story] 注意力机制增强 IPCA | 去噪神经网络 UNet | U型架构分步去噪

第五章&#xff1a;注意力机制增强&#xff08;IPCA&#xff09; 欢迎回到1Prompt1Story&#x1f43b;‍❄️ 在第四章中&#xff0c;我们掌握了**语义向量重加权&#xff08;SVR&#xff09;**技术&#xff0c;通过语义向量调节实现核心要素强化。 但当场景从"雪地嬉戏…

【P7071 [CSP-J2020] 优秀的拆分 - 洛谷 https://www.luogu.com.cn/problem/P7071】

题目 P7071 [CSP-J2020] 优秀的拆分 - 洛谷 https://www.luogu.com.cn/problem/P7071 代码 #include <bits/stdc.h> using namespace std; const int N1e71; int d; vector<int> v; bool k[N]; bool fen(int x){if(x0)return 1;//能拆分完 for(int ix;i>x/…

从ioutil到os:Golang在线客服聊天系统文件读取的迁移实践

了解更多&#xff0c;搜索"程序员老狼"作为一名Golang开发者&#xff0c;我最近在维护一个客服系统时遇到了一个看似简单却值得深思的问题&#xff1a;如何将项目中遗留的ioutil.ReadFile调用迁移到现代的os.ReadFile。这看似只是一个简单的函数替换&#xff0c;但背…

Python UI自动化测试Web frame及多窗口切换

这篇文章主要为大家介绍了Python UI自动化测试Web frame及多窗口切换&#xff0c;有需要的朋友可以借鉴参考下&#xff0c;希望能够有所帮助&#xff0c;祝大家多多进步&#xff0c;早日升职加薪 一、什么是frame&frame切换&#xff1f; frame&#xff1a;HTML页面中的一…

工业相机基本知识解读:像元、帧率、数据接口等

工业相机&#xff08;Industrial Camera&#xff09;是一种专门为工业自动化和机器视觉应用而设计的成像设备&#xff0c;它不同于消费类相机&#xff08;如手机、单反&#xff09;&#xff0c;主要追求的是成像稳定性、长时间可靠性、实时性和精确性。它通常与镜头、光源、图像…

RTC之神奇小闹钟

&#x1f3aa; RTC 是什么&#xff1f;—— 电子设备的“迷你生物钟”想象一下&#xff1a;你晚上睡觉时&#xff0c;手机关机了。但当你第二天开机&#xff0c;它居然知道现在几点&#xff01;这就是 RTC&#xff08;Real-Time Clock&#xff0c;实时时钟&#xff09; 的功劳&…

判断IP是否属于某个网段

判断IP是否属于某个网段判断一个IP是否是否属于某个CIDR网段&#xff0c;核心是比较IP与网段的网络位是否一致&#xff0c;步骤如下&#xff1a; 一、明确CIDR网段的两个关键信息 假设要判断的IP是 IPx&#xff0c;目标网段是 CIDR 网段地址/n&#xff08;例如 192.168.1.0/24…

Python day50

浙大疏锦行 python day50. 在预训练模型&#xff08;resnet18&#xff09;中添加cbam注意力机制&#xff0c;需要修改模型的架构&#xff0c;同时应该考虑插入的cbam注意力机制模块的位置&#xff1b; import torch import torch.nn as nn from torchvision import models# 自…