mlops - 诊断 FiftyOne 应用程序的崩溃 – 日志或其他工具
问题描述
我们需要通过 Web 浏览器让多个用户可以使用 FiftyOne 实例。我们需要启动一个进程并让它运行,即使我们从启动应用程序进程的会话中注销也是如此。
我正在使用以下命令来启动该过程。我在 Docker 容器中执行此操作。该容器通过 AWS EC2 在 Ubuntu 主机上运行。
$ nohup fiftyone app launch --remote > fiftyone.log 2>&1 &
如果我从终端启动此命令,它会启动允许 Web 浏览器与 FiftyOne 应用程序连接的进程。这些在我注销后仍然存在。
但是,这些过程有时会变得不可用。例如,运行 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()
调用将阻塞,直到有东西连接到它,然后将继续阻塞,直到所有连接的选项卡都关闭。
刷新选项卡时内置了一个超时来处理这种情况,以便会话不会立即关闭。在某些情况下,我们注意到刷新时间比超时时间长,并且会话过早关闭。这正在调查中。
下一个版本提供了一个将导致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
推荐阅读
- python - Python - 如何将分类器的结果加入 DataFrame 以将其可视化为散点图?
- spring - Spring SFTP集成:我们可以基于单个触发器文件将多个文件从远程复制到本地吗
- ruby - 从 0 开始注入是否与总和相同
- apify - Apify.utils.puppeteer 对象中缺少方法
- python-3.x - TF2.0:翻译模型:恢复保存的模型时出错:检查点(根)中未解析的对象.optimizer.iter:属性
- vb.net - 以编程方式通过 STDIN 向 ffmpeg 发送字节以创建静止图像文件
- swiftui - SwiftUI 模态状态未使用 ObservableObject 重置
- javascript - 从我的 php/html 代码中执行提示命令
- python - 从 4326 到 3857 的 GeoPandas 重投影无法正常工作
- node.js - 安装电子失败“无法建立隧道插座”