惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

TaoSecurity Blog
TaoSecurity Blog
小众软件
小众软件
Webroot Blog
Webroot Blog
T
Tor Project blog
Martin Fowler
Martin Fowler
T
The Blog of Author Tim Ferriss
The Register - Security
The Register - Security
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
H
Hackread – Cybersecurity News, Data Breaches, AI and More
IT之家
IT之家
Project Zero
Project Zero
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
C
CXSECURITY Database RSS Feed - CXSecurity.com
罗磊的独立博客
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Blog — PlanetScale
Blog — PlanetScale
博客园 - 聂微东
D
DataBreaches.Net
N
News | PayPal Newsroom
S
Security @ Cisco Blogs
S
SegmentFault 最新的问题
G
Google Developers Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
MongoDB | Blog
MongoDB | Blog
博客园 - 【当耐特】
MyScale Blog
MyScale Blog
有赞技术团队
有赞技术团队
L
LangChain Blog
P
Proofpoint News Feed
博客园_首页
AWS News Blog
AWS News Blog
W
WeLiveSecurity
T
Tenable Blog
T
Threat Research - Cisco Blogs
N
News and Events Feed by Topic
月光博客
月光博客
B
Blog RSS Feed
C
Cyber Attacks, Cyber Crime and Cyber Security
GbyAI
GbyAI
Know Your Adversary
Know Your Adversary
宝玉的分享
宝玉的分享
爱范儿
爱范儿
L
Lohrmann on Cybersecurity
AI
AI
Latest news
Latest news
Vercel News
Vercel News
P
Proofpoint News Feed
大猫的无限游戏
大猫的无限游戏
S
Secure Thoughts

BlogFinder

日常漫步 Vol.24 之漫步前山河 - 雅余 周报 #1-聊聊本周的收获 - Edwin's Blog 我的OpenCode必装插件与Skill Write Something 掌中之物未必在掌握之中 · CRIVU PiliNara,一个更顺手的 PiliPlus 分支 「NekoEcho」:做一个必有回响的猫娘主题博客 2026-05 书影音总结 简化博客主题 - 安迪 你要加油呐 我第一次发布 npm 包 拾花小记#45:中考前的二三事 – 小改学习志 黛西花园5月游 #18 枇杷又熟了的五月月报 一些奇奇怪怪的需求?word仿方正书版的几个小操作 - Xiobb's Blog 0419 御温泉之旅 修复了一些bug,网站基本上趋于稳定了 - 新锐博客 又回到四十年前 如何定义成功 迷鹿屋2026已重新上线 科技冰火两重天+一周回顾 ${title} 热度退了,我反而用得更深了-咕咚同学 我到底该不该换个域名? 随身WIFI折腾记 - 安迪 博客撰写体验提升——hexo pro插件 为什么不用相机把屏幕上的接关密码拍下来? 国清寺与天台山 – Ouroboros ★★★★☆《挽救计划》——久违的经济上行感 - Davidの3号基地 删除右键“打开方式”里多余选项 第三周刊_No.53|一切都会被支付两次 安卓APP通话记录与录音上传踩坑记录 - 子舒的博客 天量下跌 inBox 笔记 2.3.8,把工具栏交给了你-咕咚同学 我把小龙虾搬到了微信-咕咚同学 安好 - 响石潭 Compound Engineering Plugin:让每个工程单元都比上一个更容易 MOSS-TTS Family:开源高质量语音与声音生成模型家族深度解析 Crawl4AI:专为 LLM 设计的开源 Web 爬虫与数据抓取工具 Build Your Own X:从零实现你最喜欢的技术——程序员进阶的终极资源清单 Anthropic Skills:用文件夹教 Claude 专业技能的开源框架 1年的去月球(下) - 梅之夏 欢迎回来。 简单讲讲 ASN.1 与 OID DTV - 直播聚合客户端 5.22-5.27 – 不兴江 还没去过鸭川 – 不兴江 张晶晶同学三刷林志颖 关于我 – 不兴江 爱与嫉妒 – 不兴江 港股被持续做空 备案码花了四百块-咕咚同学 一句话生成封面:我给公众号做了4种风格的AI封面生成技能 「官」方認證 再谈费曼学习法 2026-05-28T00:34:11+08:00 2026-05-28T00:28:45+08:00 离谱的英语学习指南:基于AI的英语进阶系统方法论 iii:零集成架构的后端统一运行时 Claude Code Harness:让 Claude Code 工作有迹可循的工程化框架 Heretic:全自动移除大语言模型审查机制的开源工具 MarkItDown:微软开源的万能文档转 Markdown 利器 Harness:让 Claude Code 秒变多智能体协作工厂 这段时间尽折腾AI Agent了,确实极大地提高了效率 近期动态:两个新站点正式上线啦 误判解除!zhouayuan.com 腾讯安全申诉成功 - 周阿源|玩具设计・插画日常・生活随笔 Ralph:让 AI 编码工具自主循环跑完所有 PRD 任务的量产神器 全都违法 – 个人工作记录 关于zhouayuan.com被误判 “含违规信息” 的说明与申诉记录 - 周阿源|玩具设计・插画日常・生活随笔 小米 MiMo v2.5 Pro 白嫖 最大的人间清醒,兜里有钱,但是不花。 夜晚靓歌(12):于文文现场solo - 王志勇的Blog 今日插画:风扬起的倔强 - 周阿源|玩具设计・插画日常・生活随笔 回门习俗 独立网卡 - 忘记了回忆 500亿入股人工智能企业 从命令行到桌面智能体-咕咚同学 第一性原理读书笔记 行者微评论223-加班の守株待兔-博客|政治与时事-风雨行者 ZOZO开源物理接触求解器:GPU加速的可扩展仿真引擎 OpenStock:开源股票市场交易平台技术深度解析 MoneyPrinterTurbo:基于AI的全自动短视频生成工具深度解析 Claude-Mem:为 Claude Code 构建的持久化记忆压缩系统 Twenty:可代码化定制的企业级开源 CRM 平台技术深度解析 2026-05-26T22:59:17+08:00 企业级开源大模型部署平台 GPUStack 实战教程 1年的去月球(上) - 梅之夏 Sevalla - 静态网站托管服务 不用翻墙、不用注册、不用月费,普通人也能用上 Claude Code 装修灯具要注意⚠️ 黄梅天先锋 - 游子微博 公安备案顺利办结,站点备案全部完成 - 周阿源|玩具设计・插画日常・生活随笔 第三次兑换天猫超市卡了宗宗酱-三维狐少儿编程 Don't think, feel. - Rolen's Blog 人这一辈子,到底图个什么 博客迁移 - Edwin's Blog 情感赛道写作模板 再现本轮行情的典型特征 裁员与平常心-咕咚同学 别让“偷懒”,成为隐私泄露的破绽
哪吒面板数据库瘦身-从1.2G到6M - 倾城于你
博主: 青柠 · 2026-06-14 · via BlogFinder

哪吒面板数据库优化指南:解决 SQLite 数据库膨胀问题

本文由NanoBot-小青撰写润色,并经站长审阅通过后发布

前言

哪吒面板(Nezha Panel)作为一个服务器和网站监控工具,其数据库体积随着使用时间不断增大是非常正常的现象。这主要是由它的核心工作机制——高频、持续地收集状态数据——所导致的。本文将深入分析数据库膨胀的原因,并提供三种切实可行的优化方案。

数据库膨胀的核心原因

1. 海量监控数据的自然积累

为了能让你在面板上看到历史的网络状态、CPU、内存和流量趋势图,Agent(客户端)会持续不断地向 Dashboard(服务端)上报数据。如果你监控的服务器数量较多,这些每隔几秒或几分钟上报一次的数据会在数据库中迅速堆积。

2. 服务监控频率过高

如果你在面板中添加了大量的"服务监控"(比如监控某个网站是否能打开、某个端口的 Ping 延迟),这些探测操作会产生惊人的时间序列数据量。默认情况下,这些探测结果会被非常频繁地写入数据库中。

3. 数据保留周期较长

为了保证历史图表的完整性,面板默认会将监控数据保留较长的一段时间(例如默认 30 天)。几十台机器 30 天的分钟级数据,足以让数据库文件变得异常庞大。

4. 任务日志与报警记录

如果你在面板里设置了"计划任务"(Cron)来批量执行脚本,或者服务器频繁离线/上线触发了大量报警通知,这些任务的执行日志和报警历史也会占据一部分数据库空间。

5. SQLite 数据库的"假性占用"(关键原因)

哪吒面板默认使用的是轻量级的 SQLite 数据库(通常是 sqlite.db 文件)。SQLite 有一个特性:即使系统自动清理了过期的旧数据,或者你手动删除了部分服务器,数据库文件的物理体积也不会自动缩小。那些被删除数据腾出来的空间会变成"碎片空间"留给未来使用,导致文件体积看起来只增不减。

优化方案

方案一:备份并压缩 SQLite 数据库(立竿见影)

这个方法能清除数据库里的"碎片空间",立刻把 sqlite.db 的物理文件变小。

第 1 步:登录面板所在的服务器

使用 SSH 连接到你的哪吒面板服务端(Dashboard)所在的机器。

第 2 步:停止哪吒面板服务

在操作数据库前,必须先停止面板,否则正在写入的数据可能会导致文件损坏。

./nezha.sh stop

如果你是通过 systemd 守护进程运行的,可以使用:

systemctl stop nezha-dashboard

第 3 步:备份当前的数据库文件(非常重要!)

把当前的数据库文件复制一份作为备份。如果后续操作出错,直接把这个文件覆盖回去即可。默认路径通常在 /opt/nezha/dashboard/data/

cp /opt/nezha/dashboard/data/sqlite.db /opt/nezha/dashboard/data/sqlite.db.bak

第 4 步:安装 sqlite3 工具

你需要用到 sqlite3 命令来执行压缩整理。如果系统提示找不到该命令,请先安装:

  • Debian / Ubuntu: apt update && apt install sqlite3 -y
  • CentOS / RHEL: yum install sqlite -y

第 5 步:执行 VACUUM 命令压缩数据库

这个命令会重新整理整个数据库表,清除已经被删除数据留下的空洞,并重新写入一个紧凑的文件。

sqlite3 /opt/nezha/dashboard/data/sqlite.db 'VACUUM;'
注意:这个命令没有任何进度条显示。如果你的数据库有几百 MB 甚至更大,可能需要几秒到十几秒的时间,期间不要强行中断。

第 6 步:重新启动哪吒面板

./nezha.sh start

或者

systemctl start nezha-dashboard

此时你可以运行 ls -lh /opt/nezha/dashboard/data/ 看一下 sqlite.db 的文件大小,应该会看到它明显"瘦身"了。


方案二:优化设置减缓未来的数据增长(防微杜渐)

除了手动清理,我们还要从源头降低写入频率。根据你使用的哪吒版本,可以分为"改配置文件"和"改后台设置"两种途径。

途径 A:修改 config.yaml 配置文件

nano /opt/nezha/dashboard/data/config.yaml

寻找相关参数:如果在配置文件中看到了 avg_ping_count(不同版本格式可能略有差异),可以将其数值从默认的 2 提高到 10 或更大。这表示面板会多积攒几次 Ping 的探测结果后,再统一取平均值写入数据库,大大减少写入次数。

修改完成后,按 Ctrl+O 保存,Ctrl+X 退出,然后执行 ./nezha.sh restart 重启面板。

途径 B:修改 Web 后台设置(更常用)

  1. 登录你的哪吒面板 Web 界面
  2. 进入右上角的 管理后台 -> 设置任务/服务监控 页面
  3. 降低服务监控频率:如果你添加了很多 TCPing 或 HTTP 监控任务,把它们的检测间隔时间拉长(比如从 5 秒改成 30 秒或 60 秒一次)
  4. 清理无用的报警/任务日志:面板如果经常触发上下线报警,日志会非常多,可以定期在后台点击"清空日志"之类的选项

方案三:升级到 V2 并启用 TSDB(终极解决方案)

如果你的探针(服务器)数量超过了 30 台,SQLite 的确会比较吃力。升级到哪吒 V2 并开启内置的时序数据库(TSDB)是一个非常明智的选择!V2 版本引入了基于 VictoriaMetrics 引擎的 TSDB,专门用来存储高频的监控数据,能彻底解决 SQLite 越用越臃肿、查询卡顿的问题。

⚠️ 重要提示:开启 TSDB 后,旧的监控历史数据(Ping/HTTP 延迟图表等)会自动被丢弃且不会迁移(这正好能帮你清出庞大的空间),但你的服务器节点、报警规则和面板设置等核心数据会完好保留。

第 1 步:备份核心数据(防患未然)

在进行大版本跨越前,先备份旧的数据库和配置文件,避免意外:

cp /opt/nezha/dashboard/data/sqlite.db /opt/nezha/dashboard/data/sqlite.db.bak
cp /opt/nezha/dashboard/data/config.yaml /opt/nezha/dashboard/data/config.yaml.bak

第 2 步:运行脚本升级面板到 V2

连接到你的服务器,运行哪吒的官方管理脚本:

./nezha.sh

在弹出的菜单选项中,选择 "更新面板"(或"重启并更新面板")。脚本会自动拉取最新的 V2 镜像并完成升级。

第 3 步:修改配置开启 TSDB

V2 版本升级后,默认情况下 TSDB 可能是不启用的(继续使用旧数据库)。我们需要手动在配置文件中把它打开。

打开配置文件:

nano /opt/nezha/dashboard/data/config.yaml

滚动到文件最末尾,添加以下 tsdb 配置块(注意保持 YAML 格式的空格缩进):

tsdb:
  data_path: "data/tsdb"
  retention_days: 14
  min_free_disk_space_gb: 1
  max_memory_mb: 256
  write_buffer_size: 512
  write_buffer_flush_interval: 5
参数说明retention_days 是数据保留天数,默认是 30 天,这里设置为 14 天以进一步节省空间,你可以自行调整。

Ctrl + O 保存,回车确认,然后按 Ctrl + X 退出。

第 4 步:重启面板使配置生效

./nezha.sh restart

重启后,哪吒面板就会开始将新的监控数据写入到 /opt/nezha/dashboard/data/tsdb 文件夹中,不再向 SQLite 写入高频数据。

第 5 步:彻底释放硬盘空间(非常关键!)

虽然开启 TSDB 后,面板会自动把 SQLite 里旧的监控数据表(service_histories)清空,但正如之前提到的,SQLite 不会自动缩小物理文件体积。

为了把那几个 GB 的硬盘空间真正拿回来,你需要执行一次碎片整理:

# 停止面板
./nezha.sh stop

# 执行压缩整理
sqlite3 /opt/nezha/dashboard/data/sqlite.db 'VACUUM;'

# 重新启动面板
./nezha.sh start

执行完毕后,你可以用 ls -lh /opt/nezha/dashboard/data/ 查看,你会发现 sqlite.db 瞬间变回了几 MB 大小!

总结

针对哪吒面板数据库膨胀问题,本文提供了三种解决方案:

  1. 立即见效:通过 VACUUM 命令压缩 SQLite 数据库,清除碎片空间
  2. 长期优化:调整配置文件和监控频率,从源头减少数据写入
  3. 终极方案:升级到 V2 并启用 TSDB,彻底告别 SQLite 性能瓶颈

如果你的服务器数量在 10 台以内,方案一和方案二的组合已经足够;如果超过 30 台服务器,强烈建议直接采用方案三升级到 V2 版本。

希望这篇文章能帮助你优化哪吒面板的运行效率,让监控系统更加轻快流畅!