thingsboard 服務器在2核CPU、2G內存資源配置下如何調優提速,適合開發/演示

物聯網設備管理平臺致力于為客戶提供高效、可靠的物聯網解決方案。基于開源物聯網平臺進行深度二次開發,我們打造了功能強大、靈活易用的物聯網平臺,廣泛應用于智能家居、智能工廠、智能城市等多個領域

一、標準資源要求

  • 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# 自…