诊断 FiftyOne 应用程序的崩溃——日志或其他工具

Diagnose crashes of FiftyOne app – logs or other tools

我们需要通过 Web 浏览器使 FiftyOne 实例可供多个用户使用。我们需要启动一个进程并拥有它 运行,即使在我们从启动应用程序进程的会话中注销后也是如此。

我正在使用以下命令启动进程。我在 Docker 容器中执行此操作。容器通过 AWS EC2 在 Ubuntu 主机上 运行ning。

$ nohup fiftyone app launch --remote > fiftyone.log 2>&1 &

如果我从终端启动此命令,它会启动允许网络浏览器连接 FiftyOne 应用程序的进程。这些在我注销后仍然存在。

但是,这些进程有时会变得不可用。例如,在 运行ning 超过 20 小时后,FiftyOne 崩溃并在日志文件 ~/.fiftyone/var/lib/mongo/log/mongo.log.

中显示以下内容

(由 cat ~/.fiftyone/var/lib/mongo/log/mongo.log | jq '{msg,t}' 制作)

{
  "msg": "CMD fsync",
  "t": {
    "$date": "2021-09-01T15:04:24.152+00:00"
  }
}
{
  "msg": "Received signal",
  "t": {
    "$date": "2021-09-01T15:04:24.181+00:00"
  }
}
{
  "msg": "Signal was sent by kill(2)",
  "t": {
    "$date": "2021-09-01T15:04:24.181+00:00"
  }

我如何获得有关崩溃原因的更多信息?

FiftyOne 的开源版本主要是为个人用户设计的。多用户协作的最佳体验是 FiftyOne Teams。您可以在这里注册:https://voxel51.com/#teams-form

具体关于这个错误:

在后端,调用 fiftyone app launch --remote 实际上会运行以下 Python 命令:

session = fo.launch_app(remote=True)
session.wait()

对于远程会话,session.wait() 调用将阻塞直到有东西连接到它,然后将继续阻塞直到所有连接的选项卡都关闭。

有一个内置的超时来处理刷新选项卡的情况,这样会话就不会立即关闭。在某些情况下,我们注意到刷新时间比超时时间长,并且会话会过早关闭。正在对此进行调查。

The next release 提供了一个参数,将导致 wait 无限期阻塞。您将可以致电 fiftyone app launch --remote --wait 0.

同时,我建议编写并调用一个小脚本(launch_app.py)来永久阻塞直到退出。

import fiftyone as fo

session = fo.launch_app(remote=True)

# Indefinite blocking
while True:
    pass
python launch_app.py