You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Chromium浏览器Kiosk模式周期性死机冻结问题排查与自动修复咨询

问题原因分析
  • 浏览器内存泄漏:Kiosk模式使用的Chromium长期运行Web应用时,若页面存在未清理的DOM元素、定时器或事件监听器,内存会持续堆积,最终导致浏览器进程冻结,但系统底层未崩溃,因此硬件通信仍正常。
  • NodeJs应用内存泄漏:Web应用自身若存在内存泄漏(如未释放的缓存、数据库连接、全局变量堆积),长期运行会耗尽系统内存,引发前端渲染进程异常。
  • 硬件性能瓶颈:树莓派3B+的CPU和内存资源有限,搭配bullseye桌面环境与Kiosk进程长期运行后,资源占用持续累积,易造成进程无响应。
  • 电源供电不稳:即便使用小米5V3A充电器,若线材老化、接口氧化接触不良,会出现间歇性供电不足,优先导致GPU显示模块异常,但硬件通信模块(如GPIO、串口)仍可正常工作。
  • Chromium Kiosk模式bug:bullseye自带的Chromium版本可能存在特定的Kiosk模式进程挂起bug,长时间固定显示单一页面时容易触发。
自动修复方案

1. 定时检测并重启Kiosk进程

  • 编写Shell脚本check_kiosk.sh:
#!/bin/bash
# 检查Chromium进程状态及应用可用性
CHROME_PID=$(pgrep -x "chromium-browser")
APP_PORT=你的应用端口号

if [ -z "$CHROME_PID" ] || ! timeout 5s wget --spider http://localhost:$APP_PORT > /dev/null 2>&1; then
    # 强制终止所有Chromium进程
    pkill -f "chromium-browser"
    # 重新启动Kiosk模式
    startx /usr/bin/chromium-browser --noerrdialogs --disable-infobars --kiosk http://localhost:$APP_PORT &
fi
  • 赋予脚本执行权限:chmod +x check_kiosk.sh
  • 通过crontab定时执行(每5分钟检查一次):
    执行crontab -e,添加以下内容:
    */5 * * * * /home/pi/check_kiosk.sh >> /home/pi/kiosk_monitor.log 2>&1
    

2. 用PM2管理NodeJs进程实现自动重启

  • 安装PM2:npm install pm2 -g
  • 启动应用并配置开机自启:
pm2 start /path/to/your/app.js --name hardware-status-app
pm2 startup systemd
pm2 save
  • PM2会自动监控进程状态,一旦应用崩溃就重启,可通过pm2 logs hardware-status-app查看异常日志。

3. 优化系统资源占用

  • 关闭不必要的系统服务:
    sudo systemctl disable bluetooth
    sudo systemctl disable vncserver-x11-serviced
    
  • 调整Chromium启动参数以降低内存消耗,在启动命令中添加:--disable-extensions --disable-plugins --disable-background-networking --disable-sync
  • 通过raspi-config设置开机进入命令行自动登录,再手动启动Kiosk,减少桌面环境资源占用。

4. 排查电源稳定性

  • 更换高质量Micro USB线材(树莓派3B+使用Micro USB供电),确保线材电阻低、传输稳定。
  • 清理树莓派电源接口触点,避免氧化导致的接触不良。

内容的提问来源于stack exchange,提问作者Shijin norris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 03:55:55