Supervisor 进程子进程管理
发表于|更新于|操作系统
之前使用 Supervisord 守护 swoole 服务 问题restart 服务后 master 进程重启了 并拉起新的worker 进程, 但是老的worker 进程并没有kill
我都是通过 shell 脚本实现子进程kill 的工作
就在刚才我同事的服务跪了, 我俩总结了原因 并告诉如下配置, 可以控制子进程
只需要在每个任务配置, 就可以对子进程进程管理.
stopasgroup=true; |
Jenkins 配合 Supervisor 上线 swoole 服务 一定要保证所有swoole进程kill 否则由于 Jenkins 版本控制分配不同目录 导致worker 重启后 include 文件 加载失败
学费很贵 2小时 300美刀 记录下
文章作者: Leon
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Leon!
相关推荐
2023-12-25
Swoole WARNING Worker_discard_data (ERRNO 1007): [2] ignore data
Swoole WARNING Worker_discard_data (ERRNO 1007): [2] ignore data 常见于: 浏览器疯狂刷新页面 (还没加载完就刷掉了)ab 压测到一半取消wrk 基于时间的压测 (时间到了未完成的请求会被取消)以上几种情况均属于正常现象,可以忽略,所以该错误的级别是 NOTICE 如由于其它情况无缘无故出现大量连接断开时,才需要注意 WARNING swWorker_discard_data (ERRNO 1007): [2] received the wrong data[21 bytes] from socket#75WARNING Worker_discard_data (ERRNO 1007): [2] ignore data[5 bytes] received from session#2Copy to clipboardErrorCopied 同样的,这个错误也表示连接已经关闭了,收到的数据会被丢弃。参考 discard_timeout_request discard_timeout_request丢弃已关闭链接的...
2018-12-23
Swoole 报错 NOTICE swFactoryProcess_finish (ERROR 1004): send 76 byte failed,
记录下swoole 抛错 NOTICE swFactoryProcess_finish (ERROR 1004): send 76 byte failed, because connection[fd=40] 表示连接已经被关闭了,所以send会失败, 客户端的问题跟服务端没关系 , 当然 如果你fd 用错了 就呵呵了 https://group.swoole.com/question/106029
2018-08-10
报错 unix:///tmp/supervisor.sock no such file
在使用supervisor进行进程管理时,启动 supervisorctl,启动时候报错 unix:///tmp/supervisor.sock no such file 然后网上搜了一堆也没解决问题,后来去看supervisor.log,发现supervisord一启动,过了几秒就自动to die了。 后来在stackOverFlow看到了这个问题尝试去修改了下/etc/supervisord.conf中的 [unix_http_server]file=/tmp/supervisor.sock ; (the path to the socket file)chmod=0700 ; socket file mode (default 0700)chown=nobody:nogroup ; socket file uid:gid ownerusername=root ; (default is no username (open server))password=root ;...

2024-11-16
Swoole 进程模型
收藏一下 总是忘记这张图 . Swoole 进程模型从上图中可以看出,Swoole 在启动后会创建 Master 进程和 Manager 进程。Master 进程会创建 Master 线程、Reactor 线程、心跳检测线程等,Manager 进程会创建 Worker 进程和 Task 进程。 Swoole 的线程和进程之间分别有什么作用呢? Master 进程这个进程是 swoole 的核心进程,也是一个多线程的进程,一个 Master 线程和多个 Reactor 进程,Reactor 线程的数量可以配置。 Master 线程 Master 线程用于 accept 新的连接,然后会评估每个 Reactor 线程维护的连接数,最后将这个新的连接分配给连接数量最少的那个 Reactor 线程,从而保证每个 Reactor 线程的负载量是均衡的。Master 线程还负责对所有信号的接管(包括请求处理、重启进程、重载配置等),避免 Reactor 线程收到信号的打扰中断。 Reactor 线程当一个 socket 可读或可写的时候,就由 Reactor 线程将事件转发给 work...
2023-09-03
Supervisor Event Listener 任务监控与告警
场景描述Supervisor 脚本定时重启脚本任务, 任务中存在多个子进程, 重启服务基本都是能一波带走所有子进程.但这次发现有个服务重启失败, 查看原因是存在子进程未kill掉, 子进程占用服务端口, 重启服务端口被占用最后服务BACKOFF了, 原因就是子进程没杀掉, 莫得办法. 下面配置也都是有的,因为之前踩过坑.没想到还是有问题. ;使用supervisorctl停止时,子进程也会一起停止stopasgroup=true;向进程组发送kill信号,包括子进程killasgroup=true 为了监控这种服务异常拉起失败的场景, 百度一下 Supervisor 是有一个 事件监听的 Event Listener. Event Types 由 Supervisor 官方定义,覆盖了进程运行生命周期的各种状态。下面翻译一些常用的类型 : |Event |解释||-|-||PROCESS_STATE| 进程状态发生改变|PROCESS_STATE_STARTING| 进程状态从其他状态转换为正在启动(Supervisord的配置项中有startsecs配置项,是指...

2023-04-20
开发 Swoole 服务 使用端口问题
最近开发新项目 服务端口5w 起 , 但是总是出现端口被占用… 我一直都用 netstat -tunple |grep -i 56904 检索 但并没有搜索到. 找了运维同学看了下 使用 netstat -an |grep 56904 如上图 netstat -an |grep 56904 , 返回 ESTABLISHED, 破案了 在Linux上,有一个sysctl参数ip_local_port_range,可用于定义网络连接可用作其源(本地)端口的最小和最大端口的限制,同时适用于TCP和UDP连接。 我新增服务的端口,在ip_local_port_range区间端口内, 本机其他服务进程与其他网络服务构成建立网络连接. 端口我就用不了了. 自定义服务端口 不要在ip_local_port_range 范围内. 诶 问题比较低级, 收录下
评论
公告
记录技术实践,分享学习与思考。



