Linux内测版

好的,感谢建议

最新docker版,GUI版,跑着跑着 webui 挂了连不上,vnc连接正常,看了下日志,里面有这么两段,不知道有没有用。


127.0.0.1 - - [2025-04-27 00:52:08] "GET /api/health HTTP/1.1" 200 122 0.114112
127.0.0.1 - - [2025-04-27 00:52:38] "GET /api/health HTTP/1.1" 200 122 0.109189
127.0.0.1 - - [2025-04-27 00:53:08] "GET /api/health HTTP/1.1" 200 122 0.107420
127.0.0.1 - - [2025-04-27 00:53:38] "GET /api/health HTTP/1.1" 200 122 0.112070
127.0.0.1 - - [2025-04-27 00:54:08] "GET /api/health HTTP/1.1" 200 122 0.106928
127.0.0.1 - - [2025-04-27 00:54:38] "GET /api/health HTTP/1.1" 200 122 0.111740
127.0.0.1 - - [2025-04-27 00:55:09] "GET /api/health HTTP/1.1" 200 122 0.110547
127.0.0.1 - - [2025-04-27 00:55:39] "GET /api/health HTTP/1.1" 200 122 0.110660
127.0.0.1 - - [2025-04-27 00:56:09] "GET /api/health HTTP/1.1" 200 122 0.107666
127.0.0.1 - - [2025-04-27 00:56:39] "GET /api/health HTTP/1.1" 200 122 0.119252
127.0.0.1 - - [2025-04-27 00:57:09] "GET /api/health HTTP/1.1" 200 122 0.113419
127.0.0.1 - - [2025-04-27 00:57:40] "GET /api/health HTTP/1.1" 200 122 0.148287
127.0.0.1 - - [2025-04-27 00:58:10] "GET /api/health HTTP/1.1" 200 122 0.110619
127.0.0.1 - - [2025-04-27 00:58:40] "GET /api/health HTTP/1.1" 200 122 0.112419
127.0.0.1 - - [2025-04-27 00:59:10] "GET /api/health HTTP/1.1" 200 122 0.108476
127.0.0.1 - - [2025-04-27 00:59:40] "GET /api/health HTTP/1.1" 200 122 0.106531
127.0.0.1 - - [2025-04-27 01:00:10] "GET /api/health HTTP/1.1" 200 122 0.130097
127.0.0.1 - - [2025-04-27 01:00:41] "GET /api/health HTTP/1.1" 200 122 0.111336
127.0.0.1 - - [2025-04-27 01:01:11] "GET /api/health HTTP/1.1" 200 122 0.107080
127.0.0.1 - - [2025-04-27 01:01:41] "GET /api/health HTTP/1.1" 200 122 0.108402
127.0.0.1 - - [2025-04-27 01:02:11] "GET /api/health HTTP/1.1" 200 122 0.109701
127.0.0.1 - - [2025-04-27 01:02:41] "GET /api/health HTTP/1.1" 200 122 0.107490
127.0.0.1 - - [2025-04-27 01:03:12] "GET /api/health HTTP/1.1" 200 122 0.108177
127.0.0.1 - - [2025-04-27 01:03:42] "GET /api/health HTTP/1.1" 200 122 0.107676
>>> sending remote command: "cmd=fb" via X11VNC_REMOTE X property.
>>> sending remote command: "qry=dpy_x,dpy_y" via X11VNC_REMOTE X property.
2025-04-27 01:15:45,252 INFO waiting for xvfb to stop
2025-04-27 01:15:45,253 INFO waiting for lxpanel to stop
2025-04-27 01:15:45,253 INFO waiting for x11vnc to stop
2025-04-27 01:15:45,253 INFO waiting for novnc to stop
2025-04-27 01:15:45,256 INFO stopped: xvfb (terminated by SIGKILL)
2025-04-27 01:15:45,264 INFO stopped: novnc (exit status 143)
2025-04-27 01:15:45,268 INFO stopped: x11vnc (exit status 2)
2025-04-27 01:15:46,696 ERROR Exception on /api/health [GET] (app.py:838)
Traceback (most recent call last):
  File "/usr/local/lib/python3.8/dist-packages/flask/app.py", line 1473, in wsgi_app
    response = self.full_dispatch_request()
  File "/usr/local/lib/python3.8/dist-packages/flask/app.py", line 882, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/usr/local/lib/python3.8/dist-packages/flask/app.py", line 880, in full_dispatch_request
    rv = self.dispatch_request()
  File "/usr/local/lib/python3.8/dist-packages/flask/app.py", line 865, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
  File "/usr/local/lib/web/backend/vnc/app.py", line 41, in apihealth
    if state.health:
  File "/usr/local/lib/web/backend/vnc/state.py", line 129, in health
    self._update_health()
  File "/usr/local/lib/web/backend/vnc/state.py", line 31, in _update_health
    output = gsp.check_output([
  File "/usr/local/lib/python3.8/dist-packages/gevent/subprocess.py", line 419, in check_output
    raise CalledProcessError(retcode, process.args, output=output)
subprocess.CalledProcessError: Command '['supervisorctl', '-c', '/etc/supervisor/supervisord.conf', 'status']' returned non-zero exit status 3.
2025-04-27 01:15:47,359 INFO waiting for lxpanel to stop
2025-04-27 01:15:47,474 INFO stopped: lxpanel (exit status 0)
2025-04-27 01:15:47,477 INFO spawned: 'xvfb' with pid 19592
2025-04-27 01:15:47,478 INFO spawned: 'lxpanel' with pid 19593
2025-04-27 01:15:47,481 INFO spawned: 'x11vnc' with pid 19594
2025-04-27 01:15:47,484 INFO spawned: 'novnc' with pid 19596
2025-04-27 01:15:47,489 INFO exited: x11vnc (exit status 1; not expected)
2025-04-27 01:15:48,515 INFO success: xvfb entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2025-04-27 01:15:48,515 INFO success: lxpanel entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2025-04-27 01:15:48,520 INFO spawned: 'x11vnc' with pid 19726
2025-04-27 01:15:48,522 INFO success: novnc entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
x:xvfb: stopped
x:x11vnc: stopped
x:novnc: stopped
x:lxpanel: stopped
x:x11vnc: ERROR (spawn error)
x:xvfb: started
x:lxpanel: started
x:novnc: started
2025-04-27 01:15:48,553 ERROR Exception on /api/reset [GET] (app.py:838)
Traceback (most recent call last):
  File "/usr/local/lib/python3.8/dist-packages/flask/app.py", line 1473, in wsgi_app
    response = self.full_dispatch_request()
  File "/usr/local/lib/python3.8/dist-packages/flask/app.py", line 882, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/usr/local/lib/python3.8/dist-packages/flask/app.py", line 880, in full_dispatch_request
    rv = self.dispatch_request()
  File "/usr/local/lib/python3.8/dist-packages/flask/app.py", line 865, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
  File "/usr/local/lib/web/backend/vnc/app.py", line 55, in reset
    state.apply_and_restart()
  File "/usr/local/lib/web/backend/vnc/state.py", line 74, in apply_and_restart
    gsp.check_call([
  File "/usr/local/lib/python3.8/dist-packages/gevent/subprocess.py", line 340, in check_call
    raise CalledProcessError(retcode, cmd) # pylint:disable=undefined-variable
subprocess.CalledProcessError: Command '['supervisorctl', '-c', '/etc/supervisor/supervisord.conf', 'restart', 'x:']' returned non-zero exit status 7.
2025-04-27 01:15:49,589 INFO success: x11vnc entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
>>> sending remote command: "cmd=fb" via X11VNC_REMOTE X property.
>>> sending remote command: "cmd=fb" via X11VNC_REMOTE X property.
>>> sending remote command: "cmd=fb" via X11VNC_REMOTE X property.
>>> sending remote command: "cmd=fb" via X11VNC_REMOTE X property.
>>> sending remote command: "cmd=fb" via X11VNC_REMOTE X property.
>>> sending remote command: "cmd=fb" via X11VNC_REMOTE X property.
>>> sending remote command: "cmd=fb" via X11VNC_REMOTE X property.
>>> sending remote command: "cmd=fb" via X11VNC_REMOTE X property.
>>> sending remote command: "cmd=fb" via X11VNC_REMOTE X property.
>>> sending remote command: "cmd=fb" via X11VNC_REMOTE X property.
>>> sending remote command: "cmd=fb" via X11VNC_REMOTE X property.

实测最新的 gui docker 版,bitcomet 进程会不断的吞噬内存,直到把所有内存占尽然后进程崩溃,但 docker 进程没有问题,此时还可以用 vnc 进入容器界面启动 bitcomet,,,然后重复上述过程,,,
这貌似是很多个版本之前的内存泄漏bug了,不知道最新版本怎么又出现了,希望尽早修复,这个影响软件的正常使用了。

++++++++

好吧,也许不是内存泄露?我连着vnc看着,专门等着它崩溃,结果它内存涨着涨着停了,等了半天也不崩了,无语,,,

++++++++

一段时间后vnc进去看,bitcomet进程它还是崩了,,,,但不知道它是为什么崩的,,,:joy::joy::joy::joy:

v2.13.3 已发布deb包和docker版,欢迎试用

分析了一下,有可能是默认的内存分配器性能不佳,v2.13.3换成了jemalloc,可以试试效果

已添加

早几年我就叫换jemalloc了,总算换上了,现在是仅Linux版用吗

也可以做个高级设置开关,考虑把内存管理交给系统,Linux用sendfile,Windows用TransmitFile,当然这两者和jemalloc并不会冲突

内存流量图显示正常了

是的,仅Linux版用了jemalloc,导致可执行文件体积增大了9MB :sweat_smile:
另外AppImage打包后无法启动了,可能与此有关

Windows可能也不太好编译jemalloc,仅在Linux用也差不多,没有带gui的Linux服务器,,,AppImage版至今还没用过一次
Windows可以用之前提到的 boost.org 出的iocp fcontext来提升性能,这个fcontext也可以用在Linux里
2.6及以上内核epoll fcontext,内核大于等于5.10就是iouring fcontext,官方社区推荐6.1及以上内核使用iouring
可以在二进制文件上加个-v参数传递,获取下当前启用了哪些编译,比如说jemalloc version: [5.1.0-0-g61efbda7098de6fe64c362d309824864308c36d4]

希望能早日修复 docker 版,从四月底到现在,一直崩,,,在线时间可以看出,没几天正常的,,,

我这是 Docker-webui版本,,暂时没发现崩溃现象

你先回退上一个版本试试?

谢谢小樱,我看看,要不我也换成 webui 版吧,,,

v2.14.0 已发布,欢迎试用

docker run -d \
  --name=bitcomet-webui\
  -e BITCOMET_WEBUI_PORT=8080 \
  -e BITCOMET_BT_PORT=6082 \
  -e WEBUI_USERNAME=test \
  -e WEBUI_PASSWORD=test \
  -p 6080:8080 \
  -p 6882:6082 \
  -p 6882:6082/udp \
  -v /docker/appdata/BitComet:/root/.config/BitComet:rw \
  -v ~/Downloads:/root/Downloads:rw \
  --restart unless-stopped \
  wxhere/bitcomet-webui:latest

指定 latest 下载为2.13.4.29,指定 2.14.0 正常。

升级的时候勾选强制拉取镜像就行了,你截图看到也没问题的。上面看digest就知道了,都是一样的,只是你没重新拉取导致的

感谢更新,这几天没有再崩溃了。
不过2.14版貌似有个小问题,就是这个远程访问端口,无论怎么设置,只要在webui里打开选项,这里默认永远是 808 ,导致如果点开选项的这个页面而又没有再次手动改成自己用的端口时,一点确定webui就会失联,要去vnc里改回正确值,才能连回webui。我因为是从老版本一直用过来的,所以一直用的是以前的8080,莫名其妙webui失联了几次,才发现这个奇怪的问题。

复现,点击确定后直接失联了。。。

感谢验证。
不过你这里怎么是608?
如果默认不一样的话,那这里是不是在读取配置中的数据时出了什么差错,导致最终显示出来的端口号丢失了一位数?

抓包看到是正常的6080,可能是网页界面上处理的问题,导致错误变成了608,随便点个确定按钮就把608提交上去然后就失联了

哈哈哈,看来是UI的问题,,, :joy: :joy: :joy: