V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
dafengchui
V2EX  ›  程序员

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

  •  
  •   dafengchui · 2019-07-14 09:07:46 +08:00 · 6472 次点击
    这是一个创建于 1959 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    18 条回复    2019-07-15 16:26:01 +08:00
    lddsb
        1
    lddsb  
       2019-07-14 09:38:15 +08:00 via iPhone
    同问
    dcoder
        2
    dcoder  
       2019-07-14 10:00:31 +08:00
    都应该被 Systemd 换掉
    banxi1988
        3
    banxi1988  
       2019-07-14 10:11:59 +08:00
    不用问,问就 systemd

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

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