首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏Laoqi's Linux运维专列

    Nginx 启动、停止、平滑重启平滑升级

    有了pid文件,我们就不用先查询Nginx的主进程号,而直接向Nginx发送信号了,命令如下: # kill-信号类型'/usr/local/nginx/logs/nginx.pid' 平滑重启 如果更改了配置就要重启 不是的,可以向Nginx发送信号,平滑重启平滑重启命令: # kill -HUP 住进称号或进程号文件路径 或 # /usr/local/nginx/sbin/nginx -s reload 注意,修改了配置文件后最好先检查一下修改过的配置文件是否正确 补充内容:nginx的几种信号 TERM,INT 快速关闭 QUIT 从容关闭 HUP 平滑重启,重新加载配置文件 USR1 重新打开日志文件,在切割日志时用途较大 USR2 平滑升级可执行程序 www --group=www --with-http_stub_status_module --with-http_v2_module --with-http_ssl_module --with-ipv6

    6.8K41发布于 2018-05-31
  • 来自专栏开源部署

    Nginx平滑重启平滑升级的方法

    如何实现nginx平滑重启平滑升级? 平滑重启 kill -HUP `cat /usr/local/www/nginx/logs/nginx.pid`  平滑升级nginx:  cd /yujialin  wget http://nginx.org

    1K10编辑于 2022-06-29
  • 来自专栏腾讯云TVP

    golang 服务平滑重启小结

    标签: graceful endless supervisor defunct --- 背景 golang 程序平滑重启框架 supervisor 出现 defunct 原因 使用 master/worker 要想实现平滑重启大致有三种方案,一种是在流量调度的入口处理,一般的做法是 ApiGateway + CD ,发布的时候自动摘除机器,等待程序处理完现有请求再做发布处理,这样的好处就是程序不需要关心如何做平滑重启 第二种就是程序自己完成平滑重启,保证在重启的时候 listen socket FD(文件描述符) 依然可以接受请求进来,只不过切换新老进程,但是这个方案需要程序自己去完成,有些技术栈可能实现起来不是很简单 golang 程序平滑重启框架 与 java、net 等基于虚拟机的语言不同,golang 天然支持系统级别的调用,平滑重启处理起来很容易。 但是如果我们用了平滑重启框架,原来被 supervisor 启动的进程发布重启 fork子进程之后正常退出,当再次发布重启 fork 子进程后就会变成无主进程就会出现 defunct(僵尸进程) 的问题

    3.9K21发布于 2019-10-19
  • 来自专栏数字化之路

    golang 服务平滑重启小结

    要想实现平滑重启大致有三种方案: 第一种是在流量调度的入口处理,一般的做法是ApiGateway + CD,即在发布的过程中,当新服务部署完成后,就将新进来的流量路由到新服务,并下线掉没有流量的老服务, 这样的好处就是程序不需要关心如何做平滑重启。 第二种就是程序自己完成平滑重启,保证在重启的时候 listen socket FD(文件描述符) 依然可以接受请求进来,只不过切换新老进程,但是这个方案需要程序自己去完成,有些技术栈可能实现起来不是很简单 golang 程序平滑重启框架 与 java、net 等基于虚拟机的语言不同,golang 天然支持系统级别的调用,平滑重启处理起来很容易。 但是如果我们用了平滑重启框架,原来被 supervisor 启动的进程发布重启 fork子进程之后正常退出,当再次发布重启 fork 的子进程就会变成没有主进程,那么,此子进程就无法完成正常退出。

    1.8K20编辑于 2023-03-07
  • 来自专栏王清培的专栏

    golang 服务平滑重启小结

    要想实现平滑重启大致有三种方案,一种是在流量调度的入口处理,一般的做法是 ApiGateway + CD ,发布的时候自动摘除机器,等待程序处理完现有请求再做发布处理,这样的好处就是程序不需要关心如何做平滑重启 第二种就是程序自己完成平滑重启,保证在重启的时候 listen socket FD(文件描述符) 依然可以接受请求进来,只不过切换新老进程,但是这个方案需要程序自己去完成,有些技术栈可能实现起来不是很简单 golang 程序平滑重启框架 与 java、net 等基于虚拟机的语言不同,golang 天然支持系统级别的调用,平滑重启处理起来很容易。 github.com/tylerb/graceful endless https://github.com/fvbock/endless 上面两个是 github 排名靠前的 web host 框架,都是支持平滑重启的 但是如果我们用了平滑重启框架,原来被 supervisor 启动的进程发布重启 __fork__子进程之后正常退出,当再次发布重启 fork 子进程后就会变成无主进程就会出现 defunct(僵尸进程)

    1.1K20发布于 2019-10-21
  • 来自专栏码农编程进阶笔记

    守护进程、信号和平滑重启

    平滑重启 swoole是常驻内存的,若想让修改后的代码生效,就必须Ctrl+C,然后再重启server。对于守护进程化的server呢?则需kill掉后,再重启。 swoole为我们提供了平滑重启机制,我们只需要向swoole_server的主进程发送特定的信号,即可完成对server的重启平滑重启包含的信号 SIGTERM,一种优雅的终止信号,会待进程执行完当前程序之后中断,而不是直接干掉进程 SIGUSR1,将平稳的重启所有的Worker进程 SIGUSR2,将平稳的重启所有的Task 回调之后加载的文件,重启才有意义 kill -USR2 55559 #热重启task进程,onTask回调之后加载的文件,重启才有意义 要加载的文件 (Person.php) ~~~ class Person $serv->on('WorkerStart', function ($serv, $workerId) { //onWorkerStart之后加载的文件,如果该文件有改动,则可以热重启

    1.3K10发布于 2021-07-20
  • 来自专栏全栈程序员必看

    守护进程、信号和平滑重启

    平滑重启 swoole是常驻内存的,若想让修改后的代码生效,就必须Ctrl+C,然后再重启server。对于守护进程化的server呢?则需kill掉后,再重启。 swoole为我们提供了平滑重启机制,我们只需要向swoole_server的主进程发送特定的信号,即可完成对server的重启平滑重启包含的信号 SIGTERM,一种优雅的终止信号,会待进程执行完当前程序之后中断,而不是直接干掉进程 SIGUSR1,将平稳的重启所有的Worker进程 SIGUSR2,将平稳的重启所有的 Task进程 pstree | grep server_process #找出主进程 kill -TERM 55559 #优雅终止主进程 kill -USR1 55559 #热重启worker进程, onWorkerStart回调之后加载的文件,重启才有意义 kill -USR2 55559 #热重启task进程,onTask回调之后加载的文件,重启才有意义 要加载的文件 (Person.php)

    1.2K10编辑于 2022-07-11
  • 来自专栏网络加速

    平滑重启你的后台TCP服务

    何为平滑重启以及为何平滑重启重要? 后台业务一般都是通过TCP协议提供服务。服务难免需要版本升级,需要经历旧进程的退出和新进程的启动。 因此,优雅退出只是实现平滑重启的一个必要部分,平滑重启还要求更多。可见平滑重启是后台服务的一个十分重要的基础能力。 2. 如何实现平滑重启平滑重启能力这么重要,要如何实现呢? 初步看起来,这样做应该能实现平滑重启。让我们具体来分析下,这种方案能否实现我们的平滑重启的需求。 详情参考: https://copyconstruct.medium.com/file-descriptor-transfer-over-unix-domain-sockets-dcbbf5b3b6ec 本文简析了平滑重启的原理及相关实现要点,澄清了reuseport实现平滑重启的误区,并结合工程上的考量实现一个通用的平滑重启库,以期为读者了解、实现健壮的平滑重启做一点点微薄的贡献。

    2.9K10编辑于 2022-02-11
  • 来自专栏CSDN搜“看,未来”

    【Nginx 源码学习】平滑重启,源码追踪

    文章目录 平滑重启难点 平滑重启流程 源码探秘 平滑重启难点 重启意味着新旧接替,在交接任务的过程中势必会存在新旧server并存的情形,因此,最主要的问题在于如何保证新旧server可以并存,如果重启前后的 平滑重启流程 nginx reload流程 (1)向 master 进程发送 HUP 信号(reload命令) (2)master 进程校验配置文件语法是否正确 (3)master 进程打开新的监听端口 (4)master 进程用新配置启动新的 worker 子进程 (5)master 进程向老 worker 子进程发送 QUIT 信号 (6)老 worker 进程关闭监听句柄,处理完当前连接后结束进程 reload 可以实现平滑重启、 原先我也不得其法,翻来翻去,后来想明白了一点: 拿重启和正常启动做比较不就好了吗? ... } } next: continue; } return NGX_OK; } 这里有正常启动的和重启

    1K20编辑于 2022-05-06
  • 来自专栏网络技术联盟站

    OSPF GR(Graceful Restart,平滑重启)技术

    概述 GR(Graceful Restart,平滑重启)是一种在主备切换或协议重启时保证转发业务不中断的机制。 在协议重启完毕后,周边设备协助其进行信息(包括支持GR的相关协议所维护的 各种拓扑、路由和会话信息)同步,在尽量短的时间内恢复到重启前的状态。 同时,如果在重启期间周边设备能维持邻居关系不变并保持路由稳定,并且在设备重启后能协助设 备进行路由信息同步,在尽量短的时间内使得本设备的路由信息恢复到重启前的状态,那么就可以 保持网络拓扑稳定,不引起网络路由振荡 下面我们讲一下 EO TLV 里两个重要字段: LR字段:用以实现 OOB能力的协商,LR在 EO TLV 中的位置如图 6所示。 图6 EO TLV LR位说明图 RS字段:用以通知邻居当前路由器进入 GR流程,RS在 EO TLV 中的位置如图 7所示。

    3.9K21发布于 2020-06-17
  • 来自专栏呆呆熊的技术路

    php-fpm平滑重启为什么不平滑(process_control_timeout)

    万事不求人, 看下php-fpm的日志就知道啥时候上过线了(我们构建项目会重启fpm). 先下个结论,顺着这个想想 发布服务重启php-fpm, 导致的代码流程执行中断. 4. 等等, 应该是平滑重启,怎么会中断? 平滑重启为什么不平滑? 借助着搜索引擎的力量, 找问题就变得傻瓜起来 记 php-fpm 重启导致的 程序执行中断问题 https://yq.aliyun.com/articles/226970 重启php-fpm时请求发生502 id=60961 最后详细的读了下最后一篇向官方反馈的bug, php-fpm的平滑重启平滑 其中目前建议: [2013-02-13 15:57 UTC] phpbugs at oops dot mooo

    2.5K50发布于 2019-07-16
  • 来自专栏站长的编程笔记

    PHP平滑关闭重启的实现代码

    本文为小伙伴们带来了关于PHP平滑关闭/重启的实现代码, 前言 写过 CLI 常驻进程的老司机肯定遇到过这么一个问题:在需要更新程序的时候,我要怎样才能安全关闭老进程? 你可能会想到 NGINX、php-fpm 之类的平滑重启是给进程发送 USR2 信号,然后它就会将当前请求处理完再退出。 但进程是怎样接收信号、处理信号,估计就不是很多人能说清楚了。 原理 要实现平滑关闭/重启不难,这里先讲解两个知识点: 阻塞信号 当我们的程序正在处理一个任务的时候,你肯定不希望它中途被终止,比如说你在执行一个数据库事务,肯定不希望事务还没被提交进程就被终止了。 拼起来 到这里你已经了解平滑关闭/重启的原理了,我们把上面的半成品代码(因为在收到信号后可能还会进入下一层循环)整理一下:

    1.4K30编辑于 2022-12-02
  • Go Web服务中如何优雅平滑重启

    传统的做法通常是停止当前服务,部署新代码后再重启服务,但这种方式会导致正在处理的请求被强制中断,用户体验会受到很大的影响。 在这篇文章中,我将带大家一起探索如何在 Go 语言中通过使用 endless 包来实现服务的优雅重启,即在不影响当前正在处理的请求的情况下,完成服务的无缝升级。什么是优雅重启? 优雅重启的核心思想是:在服务启动新的进程处理新请求的同时,允许旧的进程继续完成其手头未完成的工作,然后再优雅地退出。 实现优雅重启的代码示例下面的代码演示了如何使用 endless 包来实现 Gin 服务的优雅重启。 总结在实际的生产环境中,优雅重启是非常实用的一项技术,它可以帮助我们在不影响用户体验的前提下,对服务进行升级和维护。

    49710编辑于 2024-11-15
  • 来自专栏星辰日记

    WorkerMan reload平滑重启无效的解决方案

    对于平滑重启 Workerman由于其常驻内存的特性, 修改代码并不会实时生效, 对此Workerman其实也有一套方案 > FileMonitor 通过定时监控代码的变更来自动reload.

    1.3K20编辑于 2022-02-08
  • 来自专栏Go实战

    Golang 平滑关闭/重启与热编译技术 原

    Golang 平滑关闭/重启与热编译技术 1 平滑关闭 本文所讨论的平滑关闭是指,HTTP服务、RPC服务、Socket长服务等各种网络服务的平滑关闭。
    2 平滑重启 平滑重启,又叫做平滑升级、优雅重启。实际上它包含两部分内容: 平滑关闭老进程 无停服切换至新进程 平滑关闭在上面第1章节已经讲述,因此该章节只讨论无停服切换新进程的问题。 2.1 平滑重启步骤 Linux下的平滑重启步骤: 如需升级服务则用新的可执行文件替换老的可执行文件,如只需平滑重启则跳过这一步 通过信号或API调用平滑重启函数,完成操作: 使用当前进程的listener 子进程在当前进程退出后,会被init进程领养,并继续提供服务 2.2 调用平滑重启函数 在Linux下,我们通常使用kill -USR2 [pid]来发送信号,调用平滑重启函数。 一定程度上类似于平滑重启,比如windows下只能使用该方式模拟平滑重启,达到接近无停服的效果。

    2.3K30发布于 2019-04-04
  • 来自专栏拂晓风起

    node.js cluster多进程、负载均衡和平滑重启

    整个架构没有太大的难点,重点就是做好一些细节处理,例如重启、日志、5秒心跳包等。 多进程的架构,相对原始的单进程+pm2重启好处肯定多很多,整个node服务会更稳定,不会突然彻底挂了。 3 平滑重启 每次发布新版本,服务器必然需要重启。 简单粗暴的,杀掉主进程,全部重启,必然会有一段时间的服务中断。 ? 对于小企业还好,可以安排在凌晨重启,但对于大公司大产品来说,就不能这么粗暴了。 那么我们需要平滑重启,实现重启过程中,服务不中断。 策略并不复杂,但非常有效: 1、worker进程轮流重启,间隔时间; 2、worker进程并不是直接重启,而是先关闭新请求监听,等当前请求都返回了,再重启。 cluster.worker.disconnect(); } catch (er2) { } 实施了平滑重启后,服务器的吞吐率会平滑很多。 ?

    2.8K30发布于 2018-07-03
  • 来自专栏项目文章

    Nginx启动、重启、重新加载配置文件和平滑升级

    built by gcc 4.4.7 20120313 (Red Hat 4.4.7-17) (GCC) configure arguments: --prefix=/usr/local/nginx 七、重启日志文件 重启日志文件,备份日志文件时常用:nginx -s reopen 或者 kill -USR1 主进程号 [root@localhost sbin]# . 八、nginx平滑升级 如果你需要升级或者添加、删除服务器模块时,可以通过nginx的平滑升级,在不停止服务的情况下升级nginx。 8 13:02 access.log -rw-r--r--. 1 nobody root 881 10月 8 13:43 error.log -rw-r--r--. 1 root root 6

    5.9K10编辑于 2024-06-07
  • 来自专栏大数据成神之路

    6-Flink重启策略

    概述 Flink支持不同的重启策略,以在故障发生时控制作业如何重启 集群在启动时会伴随一个默认的重启策略,在没有定义具体重启策略时会使用该默认策略。 如果在工作提交时指定了一个重启策略,该策略会覆盖集群的默认策略默认的重启策略可以通过 Flink 的配置文件 flink-conf.yaml 指定。 常用的重启: 1.策略固定间隔 (Fixed delay) 2.失败率 (Failure rate) 3.无重启 (No restart) 如果没有启用 checkpointing,则使用无重启 (no 如果启用了 checkpointing,但没有配置重启策略,则使用固定间隔 (fixed-delay) 策略 重启策略可以在flink-conf.yaml中配置,表示全局的配置。 Time.of(10, TimeUnit.SECONDS) // 间隔 )); ``` 失败率 失败率重启策略在Job失败后会重启,但是超过失败率后,Job会最终被认定失败。

    59670发布于 2019-03-07
  • 来自专栏张戈的专栏

    php平滑重启nginx,彻底清除WordPress的静态缓存

    所以,根据以上需求,很容易得出一个解决方案:当点击前台清理按钮时,php 先删除缓存文件,然后 reload 平滑重启 nginx 就可以实现彻底清除缓存了! 三、部署代码 ①、新增平滑重启 nginx 的脚本 #在Linux的opt目录新增reload_nginx.sh脚本:   [root@Mars_Server ~]# vim /opt/reload_nginx.sh             if (file_exists($cachefile)) {                 unlink($cachefile);                 //删除缓存后平滑重启 cachefile)) {                 unlink($cachefile);                 rmdir($cachedir);                 //删除缓存后平滑重启 全部完成之后,现在在前台使用缓存清理功能,将会先删除缓存文件,然后平滑重启 nginx,从而真正实现在纯静态的前台实时清理缓存,显示最新内容!

    2.1K90发布于 2018-03-23
  • 来自专栏运维经验分享

    重启和关闭 Linux 系统的 6 个终端命令

    添加时间参数,如果你想在 N 秒之后执行关闭或重启操作。这里,您可以为所有登录用户添加自定义广播消息。例如,我们将在五分钟后重启设备。 它能够优雅的关闭和重启设备(就好像在系统菜单中惦记重启选项一样简单)。 执行不带任何参数的 reboot 命令来重启 Linux 机器。 同时,允许用户在 Linux 设备上执行关机或重启操作. 这里存在从 0 到 6 的七个运行等级。 建议阅读: 如何检查 Linux 上所有运行的服务 执行以下 init 命令关闭系统。 运行下面的 init 命令重启设备: # init 6 6重启重启设备。 # poweroff 方案 6:如何通过 systemctl 命令关闭和重启 Linux 系统 systemd 是一款适用于所有主流 Linux 发型版的全新 init 系统和系统管理器,而不是传统的

    3.9K40发布于 2019-03-11
领券