我们已经成功地使用pm2在服务器上运行应用程序。我们目前正在迁移至docker,我们看到了http://pm2.keymetrics.io/docs/usage/docker-
pm2-nodejs/
但是,将两者一起使用的意义何在?码头工人不提供pm2所做的一切吗?
通常在docker内部使用pm2是没有意义的。
PM2和Docker都是流程管理器,它们都可以执行日志转发,重新启动崩溃的工作程序以及许多其他事情。如果在docker容器中运行pm2,则将隐藏服务的潜在问题,至少要注意以下几点:
1)如果您使用pm2在每个容器中运行一个进程,那么除了增加内存消耗之外,您不会获得太多收益。可以使用具有重新启动策略的纯docker
重新启动。其他基于docker的环境(例如ECS或Kubernetes)也可以做到这一点。
2)如果您运行多个进程,则将使监视更加困难。CPU /内存指标不再对您的封闭环境直接可用。
3)对于单个PM2流程的健康检查请求将在工人之间分配,这很可能隐藏不健康的目标
4)pm2隐藏了工伤事故。您几乎不会从监视系统(如CloudWatch)中了解它们。
5)负载平衡变得更加复杂,因为实际上您将具有多个级别的负载平衡。
在docker容器内运行多个进程也与docker的理念相反,即每个容器仅保留一个进程。
我能想到的一种情况是,您对Docker环境的控制非常有限。在这种情况下,运行pm2可能是控制工作人员调度的唯一选择。
有什么理由使用而不是吗?
问题内容: 并且似乎正在与同一个dockerFile进行交互,这两个工具之间有什么区别? 问题答案: 在一个码头工人的发动机管理单个容器时,CLI使用。这是访问docker daemon api的客户端命令行。 该CLI可以用于管理多容器应用程序。它还会将您在cli 上输入的许多选项移到文件中,以方便重用。它在与所使用的同一docker api上充当前端“脚本” ,因此您可以使用命令和许多shel
您可以在整个web上读到AWT是旧的和不推荐的,而Swing是旧的,但比AWT新,应该尽可能优先于AWT。但是我如何确定什么时候可以用它的摆动挂件替换AWT组件呢?web中的几个示例仍然使用AWT组件,其中可以使用Swing。那么有没有一个明确的建议,从AWT中使用什么,什么不使用?我知道,当我使用官方不推荐的组件时,java编译器会给出一个简短的说明,例如: 将产生如下警告: 换句话说:及其子包
问题内容: 使用“抽象方法”有什么意义?抽象类不能实例化,但是抽象方法呢?他们只是在这里说“您必须实现我”,如果我们忘记了它们,编译器会抛出错误? 这还意味着其他吗?我还阅读了有关“我们不必重写相同的代码”的内容,但是在抽象类中,我们仅“声明”了抽象方法,因此我们将不得不在子类中重写代码。 您能帮我多了解一点吗?我检查了有关“抽象类/方法”的其他主题,但没有找到答案。 问题答案: 除了提醒您必须实
我的问题与这个关于ForkJoinPool和面向IO的操作的问题有些相关,但它稍微更一般(我链接到的问题没有得到明确的答案)。简而言之 - 如果我想并行发送许多HTTP请求,并且已经使用异步HTTP客户端(例如AsyncHttpClient),那么使用ForkJoinPool并行提交请求是否有意义? 最初,我认为这样做违背了使用异步HTTP客户端的目的,该客户端已经可以并行发送请求。然而,阅读这个
问题内容: 我可以成功运行容器: 但是执行挂起: 直到我按任意键,例如: 为什么挂? 更新 : 阅读评论后,我想我会得到答案: 先决条件: “ docker attach”重用相同的tty,而不打开新的tty。 (1)执行无守护程序模式: 一切正常,然后运行命令: (2)在守护程序模式下运行: 实际上, 以下内容应该已经从正在运行的容器输出到stdout: 因此执行似乎挂起,但实际上它正在等待您的