zoukankan      html  css  js  c++  java
  • 应用驻守进程管理

    Supervisor

    是一个CS架构的软件系统, 支持用户监控和控制大量的进程, 具有跨系统性, 在所有的类UNIX系统上。

    不是对系统驻守进程管理器的代替, 它的目的是用用控制一个项目或者用户相关的进程。

    此进程在系统初始化时候启动。

    http://supervisord.org/index.html

    Supervisor is a client/server system that allows its users to monitor and control a number of processes on UNIX-like operating systems.

    It shares some of the same goals of programs like launchd, daemontools, and runit. Unlike some of these programs, it is not meant to be run as a substitute for init as “process id 1”. Instead it is meant to be used to control processes related to a project or a customer, and is meant to start like any other program at boot time.

    四大组件:

    supervisord -- 服务器端进程, 启动所有待管理的子进程。

    supervisorctl -- 客户端工具, 用户通过此工具与 supervisord进行通信, 对进程进行管理。

    web server -- 提供web界面,对初级用户友好。

    XML-RPC -- 通过web server开放接口, 用户可以在自己的程序中实现对进程的管理。

    http://supervisord.org/introduction.html

    Supervisor Components

    supervisord

    The server piece of supervisor is named supervisord. It is responsible for starting child programs at its own invocation, responding to commands from clients, restarting crashed or exited subprocesseses, logging its subprocess stdout and stderr output, and generating and handling “events” corresponding to points in subprocess lifetimes.

    The server process uses a configuration file. This is typically located in /etc/supervisord.conf. This configuration file is a “Windows-INI” style config file. It is important to keep this file secure via proper filesystem permissions because it may contain unencrypted usernames and passwords.

    supervisorctl

    The command-line client piece of the supervisor is named supervisorctl. It provides a shell-like interface to the features provided by supervisord. From supervisorctl, a user can connect to different supervisord processes (one at a time), get status on the subprocesses controlled by, stop and start subprocesses of, and get lists of running processes of a supervisord.

    The command-line client talks to the server across a UNIX domain socket or an internet (TCP) socket. The server can assert that the user of a client should present authentication credentials before it allows him to perform commands. The client process typically uses the same configuration file as the server but any configuration file with a [supervisorctl] section in it will work.

    Web Server

    A (sparse) web user interface with functionality comparable to supervisorctl may be accessed via a browser if you start supervisord against an internet socket. Visit the server URL (e.g. http://localhost:9001/) to view and control process status through the web interface after activating the configuration file’s [inet_http_server] section.

    XML-RPC Interface

    The same HTTP server which serves the web UI serves up an XML-RPC interface that can be used to interrogate and control supervisor and the programs it runs. See XML-RPC API Documentation.

    PM2 (NodeJS)

    https://github.com/Unitech/pm2

    PM2 is a production process manager for Node.js applications with a built-in load balancer. It allows you to keep applications alive forever, to reload them without downtime and to facilitate common system admin tasks.

    Starting an application in production mode is as easy as:

    $ pm2 start app.js

    Managing Applications

    Once applications are started you can manage them easily:

    Process listing

    跨平台

    https://github.com/Unitech/pm2

    Works on Linux (stable) & macOS (stable) & Windows (stable). All Node.js versions are supported starting Node.js 12.X.

    负载均衡 和 零断线重载

    Cluster Mode: Node.js Load Balancing & Zero Downtime Reload

    The Cluster mode is a special mode when starting a Node.js application, it starts multiple processes and load-balance HTTP/TCP/UDP queries between them. This increase overall performance (by a factor of x10 on 16 cores machines) and reliability (faster socket re-balancing in case of unhandled errors).

    Starting a Node.js application in cluster mode that will leverage all CPUs available:

    $ pm2 start api.js -i <processes>

    <processes> can be 'max', -1 (all cpu minus 1) or a specified number of instances to start.

    Zero Downtime Reload

    Hot Reload allows to update an application without any downtime:

    $ pm2 reload all

    进程条目持久化管理

    https://pm2.keymetrics.io/docs/usage/startup/

    Saving the app list to be restored at reboot

    Once you have started all desired apps, save the app list so it will respawn after reboot:

    pm2 save
    
    出处:http://www.cnblogs.com/lightsong/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。
  • 相关阅读:
    pt-online-schema-change使用
    MySQL8.0哪些新特性你最期待
    第11章:使用Python打造MySQL专家系统
    第10章:深入浅出Ansible
    第9章:Python自动化管理
    第8章:网络
    自己在Java学习中遇到的一些遗漏小知识点
    Java语言程序设计与数据结构(梁勇版) 基础版 课后习题 第三章
    Java多态小知识
    Java继承与抽象类小知识以及super,this关键字用法
  • 原文地址:https://www.cnblogs.com/lightsong/p/15320440.html
Copyright © 2011-2022 走看看