当前位置: 首页 > news >正文

Jupyter Lab 无法启动 Kernel 问题排查与解决总结

📄 Jupyter Lab 无法启动 Kernel 问题排查与解决总结
一、问题概述
🚨 现象描述:
用户通过浏览器访问远程服务器的 Jupyter Lab 页面(http://xx.xx.xx.xx:8891/lab)后,.ipynb 文件可以打开,但无法正常启动内核 (Kernel),并持续报错:
在这里插入图片描述

“Error Starting Kernel”
“Failed to fetch”
浏览器开发者工具 (F12) 中观察到多个错误:
WebSocket connection to ‘ws://xx.xx.xx.xx:8891/api/kernels/…/channels?..’ failed:
W
WebSocket connection to ‘ws://xx.xx.xx.xx:8891/api/events/subscribe’ failed:

在这里插入图片描述

二、原因分析
🧠 核心问题:
WebSocket 协议连接失败,导致内核无法启动或通信中断。
🔍 根本原因:
用户启动了 HTTP(非加密)版本的 Jupyter Lab。
但在远程访问时,浏览器出于安全策略,默认拒绝 ws:// 协议。
同时没有使用反向代理或 HTTPS 证书保护,导致浏览器无法建立 WebSocket 通道。
⚠️ 后续进一步排查发现:
使用 curl 可以正常访问 HTTP 接口,说明端口已开放,HTTP 通信无问题。
WebSocket 协议握手失败,浏览器未能收到 101 Switching Protocols 响应。
后台日志提示 [SSL: HTTP_REQUEST]、wrong version number,说明客户端发起了 HTTP 请求,但服务端运行的是 HTTPS 模式。

三、调查过程
时间点
调查内容
结论
🕵️ 初始
验证 Jupyter 服务是否正常运行
✅ 正常,端口 8891 已开放
🕵️ 继续
使用 curl 测试 API 通信
✅ HTTP 接口 /api/kernelspecs 可访问
🕵️ 核心
检查 WebSocket 握手失败原因
❌ 浏览器使用 ws://,服务器未响应升级接口
🕵️ 关键
检查服务器 SSL 状态
✅ 实际已使用 HTTPS 证书启动 Jupyter
🕵️ 修正
切换访问方式为 https://
✅ 一切恢复正常,内核可启动,WebSocket 正常通信

四、解决方案
✅ 最终解决步骤如下:
生成自签名 HTTPS 证书:
mkdir -p ~/certs
o
openssl req -x509 -nodes -days 365 -newkey rsa:2048 \

-keyout ~/certs/jupyter.key \

-out ~/certs/jupyter.pem \

-subj “/CN=xx.xx.xx.xx”

以 HTTPS 模式启动 Jupyter Lab:
jupyter lab \

–ip=0.0.0.0 \

–port=8891 \

–no-browser \

–ServerApp.allow_remote_access=True \

–ServerApp.allow_origin=“*” \

–ServerApp.disable_check_xsrf=True \

–ServerApp.token=‘’ \

–certfile=~/certs/jupyter.pem \

–keyfile=~/certs/jupyter.key

浏览器访问地址更新为:
https://xx.xx.xx.xx:8891/lab

确认 WebSocket 已升级为 wss://,内核可正常启动。

五、经验教训与建议
✅ 技术建议:
避免使用 http:// + ws:// 组合方式部署 Jupyter Lab,特别是在远程或跨域访问场景。
建议统一采用 https:// + wss:// 方式部署,确保浏览器信任并兼容。
如果为局域网使用,可生成自签名证书临时使用;如部署到公网,建议使用 Let’s Encrypt 免费证书或正式 CA 证书。
📁 工具建议:
借助浏览器 F12 工具中的 Network + Console 是定位 Jupyter Kernel 问题的关键。
使用 curl,telnet,或 Python websocket-client 库可以本地模拟 WebSocket 握手行为,帮助分析服务端响应状态。

六、附录(常用命令)
🔹 查看端口是否开放:
curl http://:/api/kernelspecs
t
telnet

🔹 检查防火墙(iptables):
sudo iptables -L -n

http://www.dtcms.com/a/122495.html

相关文章:

  • 山东大学软件学院项目创新实训开发日志(8)之数据库建表
  • 从响应式编程到未来架构革命:解锁高并发时代的底层思维范式
  • MySQL日期时间类型详解:DATE、TIME和DATETIME的用法与区别
  • 【Ansible自动化运维】二、Playbook 深入探究:构建复杂自动化流程
  • idea插件:AICommit,智能生成Git提交信息
  • 停车场管理系统带万字文档基于Springboot+Vue的前后端分离停车场管理系统Springboot项目java项目java课程设计java毕业设计
  • Open Scene Graph 3D到2D坐标转换
  • 【数据库原理及安全实验】实验二 数据库的语句操作
  • 【软件测试】自动化测试框架Pytest + Selenium的使用
  • Ubuntu 24.04启用root账户
  • Hi168云平台部署Ansible学习环境
  • Mysql(继续更新)
  • linux入门三:Linux 编辑器
  • 查看手机在线状态,保障设备安全运行
  • js chrome 插件,下载微博视频
  • 树和图论【详细整理,简单易懂!】(C++实现 蓝桥杯速查)
  • Python | 第十三章 | 多态 | 魔术方法 | 静态方法 | 抽象类
  • c++day7
  • 基于 SpringBoot 的民宿管理平台系统
  • 用PHPExcel 封装的导出方法,支持导出无限列
  • DNS常见问题:什么是主机记录和记录值?(国科云)
  • 【Android】Android 获取当前前台应用包名与自动化控制全流程实践笔记(适配 Android 10+)
  • 网络安全防护技术
  • Python与DeepSeek应用:解锁AI开发新姿势
  • C# 设置Excel中文本的对齐方式、换行、和旋转
  • 【深度学习】Downstream Model:预训练模型的下游应用与微调技术
  • 网络空间安全(54)CSRF
  • 边缘计算盒子是什么?
  • Dify教程01-Dify是什么、应用场景、如何安装
  • 解决python manage.py shell ModuleNotFoundError: No module named xxx