Qoder CN 桌面端性能问题反馈(3 条,附实测数据)
【环境】
Qoder CN 0.4.3(FileVersion 0.4.3 / ProductVersion 0.4.3.0),Electron 43.1.1,channel=stable,installType=user
Windows 10 专业版 build 19045,zh-CN
CPU Intel Xeon E3-1230 V2(4 核 8 线程);16 GB DDR3-1600;NVIDIA GTX 1060 6GB,驱动 582.66(32.0.15.8266,2026-06-09)
本次启动标识 startup_id = cd8ba7ac-f82b-4df6-bba3-6233bbb5011c(pid 27756,crash_collection=main_and_renderer)
【问题 1】界面走 CPU 软件渲染,长期占满一个核,且用户侧没有任何恢复入口
现象:聊天窗流式输出时点击明显延迟。
实测(按 TotalProcessorTime 差值,10 秒窗口):
- gpu-process 常驻 96.7% / 80.2% 单个核(折合全机 12.1% / 10.0%),有无任务在跑都一样
- 命令行含 --use-gl=angle --use-angle=d3d11-warp-webgl;渲染进程含 --disable-gpu-compositing
- \GPU Engine(engtype_)\Utilization Percentage 中没有任何 Qoder pid(同期 dwm、csrss 有);nvidia-smi 显示 GPU 利用率仅 8%、显存 369 MB → 完全没用上 GTX 1060
- 主窗口 SendMessageTimeout(WM_NULL) 探测:负载期最慢 566.9 毫秒,空载 24–31 毫秒
已排除的用户侧原因(都实测过):
1) Windows「设置-屏幕-图形设置」把 Qoder CN.exe 设为「高性能」并完全退出重启,三项指标全部无变化;
2) 全机不存在 argv.json(.qoder-cn\argv.json、%APPDATA%\com.qodercn.app.stable\argv.json、resources\app\argv.json 均缺失),不是用户设了 disable-hardware-acceleration;
3) resources\app.asar(141 MB)内搜索 "d3d11-warp-webgl" 与 "use-angle" 均无匹配 → 该参数不是产品代码写死的字面量,是内核自行选择;
4) 注册表 AppCompatFlags\Layers(HKCU / HKLM / WOW6432Node)全空,C:\Windows\AppCompat 无相关 shim → 不是系统兼容层强制。
怀疑点(每次启动日志都出现):
[App] Application starting {... "windowsStartupCompatibilityMode":"remembered","windowsStartupCompatibilityApplied":true}
对应 app.asar 内代码:
function T3r(t){return !t.enabled||t.platform!=="win32"?"disabled":t.argv.includes(jIe)?"automatic_relaunch":t.stateStore.readRememberedVersion()===t.applicationVersion?"remembered":"normal"}
即:只要状态库中记住的版本号等于当前版本,本次就沿用上次「兼容」启动方式。若该模式包含关闭硬件加速,则一旦被判定触发就会永久软件渲染,而用户在界面和文件两端都没有出口——与上面 1~4 的排除结果一致。
请求:① 该 startup compatibility 模式具体关闭了哪些 GPU 特性;② remembered 状态存储在哪里、如何复位;③ 是否计划提供显式的「使用硬件加速」开关。
【问题 2】Remote Control(手机远程查看会话)失败后无退避重试
统计近 4 份 main*.log:
- [QoderRemoteControl] 相关日志 11,191 条;当前 main.log 中占全部行数的 23.2%(164/707 行)
- 每小时约 200–224 条,持续多日
- 原因码:REMOTE_CONTROL_TIMELINE_ORDER_CONFLICT 2,953;RateLimit 427;REMOTE_CONTROL_ARTIFACT_TIMEOUT 150;REMOTE_CONTROL_IMAGE_BODY_UNAVAILABLE 74;ARTIFACT_READ_FAILED 15;ARTIFACT_STALE 13;HEARTBEAT_TIMEOUT 9;HISTORY_ATTEMPT_TIMEOUT 8;HTTP_502 8
- stage 字段:failed 3,556 次,complete 仅 3 次
两个问题:① TIMELINE_ORDER_CONFLICT 数千次说明时间线排序逻辑有缺陷,且失败后没有指数退避,形成重试风暴,全部压在 Browser 主进程;② IMAGE_BODY_UNAVAILABLE 对应实际用户现象——手机端远程查看时图片显示不出来。
【问题 3】长时间运行后内存吃满,触发系统「结束进程」提示
- 系统日志 Event ID 2004(Resource-Exhaustion-Detector)近 3 天 24 条,其中 10-05 一天 17 条,集中在 21:00–23:30 批量任务时段;被点名 Qoder CN.exe 峰值 2,719 MB / 均值 1,070 MB
- Qoder 自身 ProcessPerformance 快照:09-30 那次连续运行 85,800 秒(23.8 小时)后 systemMemory.freeBytes 仅 2.44–3.13 GB(总 16 GB),主进程 residentSetKb ≈ 780,000–790,000
- 空载即 12–14 个进程、工作集合计 3.6 GB;main.sqlite 已 205 MB(+ WAL 24.5 MB),主进程 isolateMemory.heapUsedKb ≈ 170,000
- 补充:页面文件在 D 盘 16,338 MB,历史峰值仅用 225 MB,可确认不是换页导致,而是物理内存吃满
请求:会话数量/历史长度是否直接进入主进程 JS 堆?是否有历史分片或回收机制?
【以下我已自查,确认不是产品问题,供定责参考】
CPU 为 2012 年 4 核 8 线程 Xeon;C 盘 60 GB 仅剩 9 GB;360 安全卫士全家常驻(ZhuDongFangYu 服务 + 360tray + MultiTip.exe 通知中心 392 MB)并逐文件实时扫描。