• 请不要在回答技术问题时复制粘贴 AI 生成的内容
dafengchui
V2EX  ›  程序员

pm2 supervisor 进程监控优劣分别是什么? 以及分别的应用场合选择?

  •  
  •   dafengchui · Jul 14, 2019 · 7865 views
    This topic created in 2671 days ago, the information mentioned may be changed or developed.

    一直在用这 2 个,除了 supervisor 有 web 可以直观看到监控进程外,其它没撒区别,但是作为强迫症,所以还是想请教下各位,它们的应用场合和优劣分别是什么?

    18 replies  •  2019-07-15 16:26:01 +08:00
    lddsb
    lddsb
    Jul 14, 2019 via iPhone
    1
    同问
    dcoder
    dcoder
    Jul 14, 2019
    2
    都应该被 Systemd 换掉
    banxi1988
    banxi1988
    Jul 14, 2019
    3
    不用问,问就 systemd

    pm2 是基于 NodeJs 的.,一些日志及实用性方面都比 supervisor 强.
    supervisor 基于 Python 实现的我个人觉得略简陋.
    如果要在这两者之中选择你会爱上 pm2.

    但是现在一般直接用 systemd. 熟悉了之后会发现 systemd 跟 pm2 之类的不是一个级别的.
    当然简单来说 systemd 更灵活更强大, 说起来使用上也不复杂. 而且你总会用得上的.
    dafengchui
    dafengchui
    OP
    Jul 14, 2019
    4
    systemd 太杂乱了,要分别为每个服务建立, pm2 和 supervisor 可以一个界面看完.
    dafengchui
    dafengchui
    OP
    Jul 14, 2019
    5
    我意思是: pm2 list 或者 supervisorctl 可以一次性看到监控的进程清单, 但是 systemd 就无法看到,或者 systemd 也有对应的命令,我不知道? 如果是请指点.
    ispinfx
    ispinfx
    Jul 14, 2019
    6
    pm2 感觉不是稳定,经常性丢失!
    GGGG430
    GGGG430
    Jul 14, 2019 via iPhone
    7
    战略性插旗
    edsion996
    edsion996
    Jul 14, 2019
    8
    sudo systemctl status
    dafengchui
    dafengchui
    OP
    Jul 14, 2019
    9
    @zjb861107 你这个就是我说的杂乱.
    simple2025
    simple2025
    Jul 14, 2019
    10
    systemctl 我一般用来运行不是自己写的服务,因为不是我写的服务,所以服务足够稳定
    systemctl 在我看来缺点就是 systemctl start service 需要 systemctl status service 来检查状态,supervisor 直接启动就知道服务有没有启动成功了,但是 supervisorctl tail -f 好像也有问题
    dafengchui
    dafengchui
    OP
    Jul 14, 2019
    11
    @chenqh supervisorctl tail -f 这个我特意去抄了 supervisor 的 github 得 issue 一个遍,记得里面有人给了方案,我试了下,504 是没了,也能看到些 log 了,但是没鸟用,好过没有..
    sighforever
    sighforever
    Jul 14, 2019
    12
    用了 docker 就没这方面的烦恼了
    version
    version
    Jul 14, 2019 via iPhone
    13
    两个感觉不一样的场景吧,pm2 的负载很厉害呢,多进程部署对 nodejs 很重要呢
    jaskle
    jaskle
    Jul 14, 2019 via Android
    14
    一直用 pm2,简单。连日志都不用自己写文件。不要说我日志影响性能,经过大量实验证明日志对性能影响与管道缓存和另一头的读取速度有关。不过 pm2 不行,日志读取速度慢,受限于 node 的单逻辑线程。我在 Windows 用 iocp 采集控制台日志,单程序能达到 20MB/s 的日志采集速度。对性能一点影响都没有。反而自己写到文件速度还慢。
    dcoder
    dcoder
    Jul 15, 2019
    15
    @dafengchui
    我以前跟你一样的想法, 也是倾向于用 supervisor, 觉得干净整洁,只有我自己的 sevice 信息.
    后来发觉用熟 systemd 是必须的, 因为现在它是 Linux 事实性的标准, 比 supervisor 稳定多了.
    你后来会发现, 为了让 supervisor 稳定可靠, 最好是用 systemd 监控它...
    dcoder
    dcoder
    Jul 15, 2019
    16
    @dafengchui
    其他的 service, 比如 nginx, 甚至是 docker, 其实也得用 systemd 监控.
    systemd 里面那些 "杂乱" 的信息,你迟早得慢慢去理解...
    如果想用编程的方法控制 systemd, 最好的 lib 在 golang community
    coreos go-systemd
    love
    love
    Jul 15, 2019 via Android
    17
    之前用的 pm2,不是太满意,但没切换 systemd 因为有 node 多进程支持,后来发现 node 本身多进程就已经很完善了,就用了一个很轻量的 node 多进城库自己程序加几行代码就实现了
    julyclyde
    julyclyde
    Jul 15, 2019
    18
    @dafengchui 只要其中一个配置写错,supervisord 就起不来
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2479 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 41ms · UTC 15:00 · PVG 23:00 · LAX 07:00 · JFK 10:00
    ♥ Do have faith in what you're doing.