首页
关于
Search
1
[折腾日记3] VPS搭建 + WARP 代理解锁Netflix, Disney+, Prime Video 和 ChatGPT
14 阅读
2
Node.js 配置
14 阅读
3
[折腾日记4] 用RustDesk远程桌面走自建服务器,配合Zerotier内网IP访问,实现低延迟流畅操控远程桌面——RustDesk篇
12 阅读
4
[Nas折腾] 群晖 Synology NAS 的Docker的注册表无法打开的解决方法
11 阅读
5
观看4K电影到底要用多大的宽带才够?
11 阅读
默认分类
VPS笔记
Nas折腾
技术研究
登录
Search
蜗牛看世界
累计撰写
23
篇文章
累计收到
1
条评论
首页
栏目
默认分类
VPS笔记
Nas折腾
技术研究
页面
关于
搜索到
23
篇与
的结果
2025-08-14
PTC 加热器温控与风扇控制优化实录
ESP32 智能温控系统调试记:一次温度 & 风扇策略的优化分析前言最近在调试基于 ESP32-S3 的智能温控系统(项目:PetBoxX),系统需要根据 温度传感器(SHT30) 的实时数据动态控制 PTC 加热器 与 风扇转速,以确保设定温度(SP)稳定,同时避免风扇频繁抖动和噪音问题。上图是一次运行的温度 & 风扇速度记录曲线,通过新增的 状态位日志(STATE: …) 以及自定义绘图脚本,我们得以精准分析系统在不同阶段的工作模式。⸻曲线解读温度变化(上图) • 橙色虚线:目标温度 SP(ramp),采用缓升方式避免初期冲击过大。 • 蓝色实线:实际温度(SHT30 采集)。 • 背景色: • 浅橙色:HEAT 模式 • 浅蓝色:HOLD 模式(接近目标温度,主要靠微调维持) • 顶部细条带: • BOOST(黄色):短时间内强力加热 • SILENT(绿色):风扇降速,噪音优先 • FREEZE(蓝色):到点即静音/快速积分泄放 • STALL(红色):检测到风扇转速异常或低于安全阈值可以看到,在初期 HEAT 模式下,温度快速爬升,接近目标值后系统进入 HOLD,并且伴随 FREEZE 状态,完全关闭加热并快速泄掉 PID 积分,防止过冲。⸻风扇转速变化(下图) • 蓝线:风扇占空比(%) • 彩色圆点:量化档位切换(Q=0、25、35) • 量化 + 停留(Dwell)机制: • 避免风扇在 18%/25%/35% 档位频繁抖动 • 最小停留时间 FAN_DWELL_MIN_S = 2.0s,跨档才重置 • 低于 20% 自动归零(静音)可以看到,风扇在低档和中档之间切换非常平稳,没有了之前的“针尖”跳动问题。⸻核心技术点到点即静音 & 积分快速泄放bool in_freeze = (fabsf(err) <= FREEZE_ERR_C) && (fabsf(dtemp_f) <= FREEZE_DTD_C); if (in_freeze) { u_target = 0.0f; // 彻底停火 g_int *= 0.80f; // 快速释放积分,防止回弹 }这样一旦温度误差和变化率都很小,就立即关闭加热并降低风扇噪音。⸻风扇量化 & 停留时间(Dwell)static float g_fan_dwell_s = 0.f; static float g_fan_last_quant = 0.f; static const float FAN_DWELL_MIN_S = 2.0f; static inline float fan_quantize_local(float fan_pct){ if (fan_pct < 20.f) return 0.f; if (fan_pct < 30.f) return 25.f; return 35.f; } float quant = fan_quantize_local(fan_target); if (quant != g_fan_last_quant) { if (g_fan_dwell_s > 0.f) { fan_target = g_fan_last_quant; } else { g_fan_last_quant = quant; g_fan_dwell_s = FAN_DWELL_MIN_S; } } g_fan_dwell_s = fmaxf(0.f, g_fan_dwell_s - dt_s);保证风扇在同一档位至少维持 2s,避免频繁切换。⸻状态位日志 & 可视化分析运行时打印状态:STATE: t=692.6s MODE=HEAT BOOST=0 SILENT=0 FREEZE=0 STALL=1 | SP=40.00 T=39.39 dTdt=0.005 | Fan=18.0% (Q=0) Heat=28.0%绘图脚本(plot_log_state.py)可解析这些状态,并在曲线上上色,快速定位问题阶段。⸻总结通过这次调试:• 温度控制 从传统 PID 调整为带 FREEZE 的抗过冲策略 • 风扇控制 从线性映射改为 量化 + 停留时间,显著降低噪音 • 可视化 结合状态位日志,分析效率提升数倍 接下来还可以尝试:• 按室温与目标温差自适应调整风扇基础档位 • 在 HOLD 模式下进一步优化风扇功耗 • 引入环境湿度对加热功率的补偿 ⸻
2025年08月14日
8 阅读
0 评论
0 点赞
2025-07-18
Mosquitto MQTT TLS 并发压测报告(二):关闭持久化优化效果评估
⸻【MQTT TLS 性能测试报告】基于 Mosquitto + emqtt-bench 在轻量服务器环境下压测结果一、测试目的验证 Mosquitto 2.0.21 在启用 TLS(双向认证)场景下的并发处理能力,观察连接数、消息速率、Payload 大小对性能的影响。同时关注系统稳定性及是否出现 TLS 异常。⸻二、测试环境服务器配置(阿里云轻量):• 2 vCPU / 1 GiB 内存 • 30 GiB ESSD 云盘 • Ubuntu 20.04 LTS • Mosquitto 2.0.21 + TLS 双向认证配置 • persistence false(已关闭持久化) 客户端工具:• mqttx bench(来自 emqx/emqtt-bench) • MacBook Pro M1 上运行 • 脚本通过循环自动完成不同 clients + payload 组合测试 ⸻三、Mosquitto TLS 配置概要listener 8883protocol mqttcafile /etc/mosquitto/ca_certificates/ca.crtcertfile /etc/mosquitto/ca_certificates/server.crtkeyfile /etc/mosquitto/ca_certificates/server.keyrequire_certificate trueallow_anonymous trueuse_identity_as_username truetls_version tlsv1.2persistence false⸻四、测试组合与结果每轮测试均发送 10,000 条消息,QoS 1,间隔 5ms,统计耗时、最大速率与最小速率。Clients Payload Max Rate (msg/s) Min Rate (msg/s) Duration (s)100 100B 10000 0 7100 512B 9502 498 6100 1KB 10000 10000 6100 2KB 5443 12 7200 100B 10000 10000 9200 512B 7027 2973 8200 1KB 10000 10000 7200 2KB 6005 3995 7400 100B 10000 10000 10400 512B 9510 490 10400 1KB 8418 1582 11400 2KB 4998 36 11800 100B 10000 10000 16800 512B 8793 1207 18800 1KB 10000 10000 18800 2KB 5634 114 18⸻五、分析与结论• 吞吐表现:即便在 800 并发客户端、1KB payload 情况下,也能稳定达到 1 万条每秒,表现优异。 • 瓶颈初现:在 payload 达 2KB 时部分组合(如 800 clients)最小速率明显下降,表明 TLS 数据包体积增大后服务端处理能力接近上限。 • 资源限制影响:由于服务器为 1GiB 内存、2核 CPU,配置偏低,已能支撑 800 并发连接高负载传输,说明 Mosquitto TLS 性能调优良好。 • persistence 关闭效果:测试过程中未观察到严重阻塞或数据库写入延迟问题,适用于只需传输实时消息、不需重启后恢复场景。 ⸻六、TLS 报错说明测试中仍可见如下服务端日志:OpenSSL Error[0]: error:0A000126:SSL routines::unexpected eof while readingClient mqttx_xxxxx closed its connection.这些报错说明:• 客户端主动断开连接但未发送 TLS close_notify 消息,属于 非优雅关闭; • 多见于压测工具、网络中断、连接池强制释放; • 并不会影响 MQTT 功能或数据传输; • 关闭 persistence 后该错误频次无明显减少,因此并非由持久化操作导致。 ⸻七、总结Mosquitto 作为轻量级 MQTT Broker,即使在 TLS 双向认证场景下,在资源有限的轻量服务器上依然具备较强并发处理能力,适用于中小规模物联网平台部署。建议优化方向:• 如需更高 payload 支撑能力,可增加 max_packet_size 配置; • 考虑禁用 connection_messages 减少日志压力; • 如需持久化支持可启用 persistence true 并调优 autosave_interval。 ⸻
2025年07月18日
5 阅读
0 评论
0 点赞
2025-07-18
Mosquitto MQTT TLS 并发压测报告(2025年7月)
Mosquitto MQTT TLS 并发压测报告(2025年7月)一、测试背景为了验证 Mosquitto 在启用 TLS(双向认证)时的稳定性和并发能力,本次使用 emqtt-bench 工具进行了系统性的性能测试。压测覆盖不同客户端连接数与 Payload 大小组合,记录每轮消息发送速率与系统响应能力。二、服务器配置环境• 服务器:阿里云轻量应用服务器 • CPU:2 vCPU • 内存:1 GiB • 存储:30 GiB ESSD 云盘 • 系统:Ubuntu 20.04 LTS • Mosquitto 版本:2.0.21 • TLS 模式:开启双向认证(客户端需提供证书) • 持久化:启用 persistence = true 三、Mosquitto TLS 配置概要listener 8883protocol mqttcafile /etc/mosquitto/ca_certificates/ca.crtcertfile /etc/mosquitto/ca_certificates/server.crtkeyfile /etc/mosquitto/ca_certificates/server.keyrequire_certificate trueallow_anonymous trueuse_identity_as_username truetls_version tlsv1.2persistence true说明:• 启用 TLS 双向验证,并允许匿名连接(用于压测模拟多客户端); • use_identity_as_username:将客户端证书的 Common Name (CN) 用作身份; • 开启 persistence 可在异常或重启后保留 MQTT 状态。 四、压测方法• 使用 emqtt-bench 中的 mqttx bench 模块进行压测; • 发送总量:10,000 条消息 / 每轮; • 消息频率:QoS 1,每 5ms 一条; • 客户端数目:100、200、400、800; • Payload 大小:100B、512B、1KB、2KB; • 每轮测试完成后记录最大速率、最小速率、耗时。 五、性能测试结果(开启持久化)Clients Payload Max Rate (msg/s) Min Rate (msg/s) Duration (s)100 100B 10000 0 7100 512B 9502 498 6100 1KB 10000 10000 6100 2KB 5443 12 7200 100B 10000 10000 9200 512B 7027 2973 8200 1KB 10000 10000 7200 2KB 6005 3995 7400 100B 10000 10000 10400 512B 9510 490 10400 1KB 8418 1582 11400 2KB 4998 36 11800 100B 10000 10000 16800 512B 8793 1207 18800 1KB 10000 10000 18800 2KB 5634 114 18六、TLS 错误日志观察在高并发测试期间,Mosquitto 日志中持续出现:OpenSSL Error[0]: error:0A000126:SSL routines::unexpected eof while readingClient mqttx_xxxxx closed its connection.分析说明:• 此为客户端断开连接时未正确发送 close_notify TLS 结束信号; • 多数由压测工具模拟断开、连接池中断、网络波动等非优雅断链引起; • 不影响消息传输,属于日志级提示; • 开启或关闭 persistence 不显著改变错误频次。 七、结论与建议• 并发能力强:即使在最低配置 VPS(1GiB/2核)下,Mosquitto 仍支撑 800 并发客户端稳定传输,性能出色; • 吞吐表现好:1KB Payload 下仍可达 10,000 msg/s; • TLS 成本影响明显:随着 Payload 增大,TLS 加解密成本显现,最小速率下滑; • persistence 建议视业务使用场景决定,可用于需要保留会话状态的场合。 优化建议:• 设置更高 max_packet_size 以支持大 Payload; • 使用 QoS 0 进一步提升性能(适用于容忍丢包的场景); • 若日志过多,可降低 log_type 或关闭 connection_messages 减轻 I/O 压力。 如需脚本源码或完整配置模板,可留言联系获取。测试时间:2025年7月
2025年07月18日
9 阅读
0 评论
0 点赞
2025-07-15
Node.js 配置
1.Ubuntu 官方源里的 Node.js 版本往往很旧,不推荐用它来装新版 Node.js。⸻✅ 正确安装最新 Node.js(推荐 LTS v18 或 v20)我们使用 NodeSource 官方源来安装新版 Node.js。下面是适用于 Ubuntu 的升级步骤:⸻📌 步骤 1:添加 NodeSource 仓库(以 Node.js 20 为例)curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -📌 步骤 2:安装最新 Node.js 和 npmsudo apt-get install -y nodejs📌 步骤 3:检查版本node -vnpm -v你应该看到:v20.x.x⸻🔁 最后:重新安装依赖并运行项目npm install node server.js 修改server.js配置文件,包括域名或者ip地址,还有np路径。设置node-server.servicecat /etc/systemd/system/node-server.service [Unit] Description=Node.js Server (server.js) After=network.target [Service] WorkingDirectory=/home/admin/your path folder ExecStart=/usr/bin/node /your path folder/server.js Restart=always User=admin Group=admin Environment=NODE_ENV=production Environment=PATH=/usr/bin:/usr/local/bin [Install] WantedBy=multi-user.target拷贝node-server.service 到 /etc/systemd/system/sudo systemctl enable node-server.service sudo systemctl start node-server.service
2025年07月15日
14 阅读
0 评论
0 点赞
2025-07-15
安装 phpMyAdmin 完整教程(适用于 Ubuntu)
本文总结了在 Ubuntu 上安装和配置 phpMyAdmin 的完整步骤,适用于搭建个人服务器或 VPS 环境。一、安装所需软件包首先,使用以下命令安装 phpMyAdmin 及其相关依赖:sudo apt install phpmyadmin php-mbstring php-zip php-gd php-json php-curl apache2 mysql-server• 安装过程中会提示你选择 Web 服务器,选择 apache2。 • 接着会要求你设置 phpMyAdmin 的 独立数据库账号和密码,请务必记住。 二、配置 Apache 使其识别 phpMyAdmin 路由编辑 phpMyAdmin 的 Apache 配置文件:sudo vim /etc/apache2/conf-available/phpmyadmin.conf如果文件不存在,请创建该文件,并写入以下内容:Alias /phpmyadmin /usr/share/phpmyadmin <Directory /usr/share/phpmyadmin> Options FollowSymLinks DirectoryIndex index.php AllowOverride All Require all granted </Directory>保存并退出。启用配置并重启 Apache:sudo a2enconf phpmyadmin sudo systemctl reload apache2三、安装 PHP 和模块支持如果你还没有安装 PHP,可以通过以下命令安装:sudo apt install php libapache2-mod-php可以额外安装常见扩展以支持更多功能:sudo apt install php-mysql php-mbstring php-xml php-cli四、访问 phpMyAdmin 面板打开浏览器,访问以下地址:http://<你的服务器IP或域名>/phpmyadmin使用你在安装过程中创建的 phpMyAdmin 用户名密码登录。五、常见问题排查• 403 Forbidden 或找不到页面? • 确认 /etc/apache2/conf-available/phpmyadmin.conf 是否正确配置。 • 确保你已执行 sudo a2enconf phpmyadmin 并重新加载了 Apache。 • 检查是否启用了 Apache 的 rewrite 模块:sudo a2enmod rewrite。 • 登录失败? • 可能是 MySQL 用户未授权,尝试通过以下命令手动设置权限: sudo mysql -u root -p GRANT ALL PRIVILEGES ON *.* TO 'phpmyadmin'@'localhost' IDENTIFIED BY '你的密码' WITH GRANT OPTION; FLUSH PRIVILEGES;总结通过以上步骤,你就可以在自己的 Ubuntu 服务器上成功部署 phpMyAdmin 管理面板,方便直观地管理 MySQL 数据库。如果你是在 VPS 上部署网站,推荐将 /phpmyadmin 修改为更安全的路径,防止暴露管理入口。如需进一步加强安全性,可搭配 SSL 证书与 Fail2Ban 等防护措施。欢迎留言交流更多配置经验!
2025年07月15日
6 阅读
0 评论
0 点赞
1
2
...
5