Linux信号机制与docker应用

Linux任务终止信号

在linux系统中,为了终止任务,一般情况下,可能会涉及如下所示的几种信号:

  • SIGTERM

SIGTERM是终止命令kill默认的终止信号。此信号是由应用程序捕获的,使用SIGERM也让程序有机会再退出之前做好清理工作,从而优雅地终止

  • SIGKILL

这是一种不可被捕获或忽略的信号,这是一种可以可靠地杀死进程的方法。由于此信号不会被捕获,可以认为可以很稳定地杀死进程

  • SIGINT

这是用户在按下中断键(一般是ctrl + c)时,终端驱动程序产生的信号,此信号会被发送给前台进程组,一般用于杀死前台的进程

  • SIGQUIT

这是用户按下退出键(一般是ctrl + \)时,终端驱动程序产生信号,此信号会被发送给前台进程组,此信号会结束前台进程,同时产生core文件

signal in docker

在docker使用中,如果想要结束特定的容器一般可以采用docker stop 或 docker kill,那么他们的区别在哪里呢,其实主要的区别在于他们会发送不同的信号

  • docker stop

docker stop是一种相对优雅的终止任务的方法,此命令会发送SIGTERM信号,正常情况下应用程序会做好清理然后退出,在一段时间(grace period)之后,如果进程没有终止,那么会发送SIGKILL强制结束任务

  • docker kill

docker kill 则比较暴力了,直接发送SIGKILL结束任务,简单高效,但是可能导致没法执行数据清理导致的问题

事实上还有一个指令也会导致任务的结束,docker rm -f,一般情况下docker rm用户删除已经停止的容器,而加上 -f 则可以终止运行中的容器。此命令事实上也是发送SIGKILL信号,因此也是暴力直接型的

signal in kubernetes(k8s)

k8s是目前比较火热的多主机的容器化应用,可用通过配置文件进行多主机,多容器的部署与编排,k8s底层是依赖于docker的。在k8s中,更新或关闭pod使用了linux相关的信号机制。下面是关闭时的流程:

  1. A SIGTERM signal is sent to the main process (PID 1) in each container, and a “grace period” countdown starts (defaults to 30 seconds).
  2. Upon the receival of the SIGTERM, each container should start a graceful shutdown of the running application and exit.
  3. If a container doesn’t terminate within the grace period, a SIGKILL signal will be sent and the container violently terminated.

简单说来,k8s中关闭容器时,首先会发送SIGTERM信号,容器收到此信号后,应该做好清理然后退出,在等待一段时间之后(默认是30s),没有退出的容器会收到SIGKILL信号,然后容器就会被强制杀死

因此使用k8s部署的应用中,任务不要过长,否则更新代码时,如果任务不能在30s内完成并退出,可能导致任务处于异常状态。那么如果已经存在长时任务,那么解决方案就是调整SIGTERM到SIGKILL中间等待的时间,将其设置得更长。此时可以调整terminationGracePeriodSeconds参数即可完成。在pod的编排中,设置terminationGracePeriodSeconds: 180,即可将默认等待时间修改为3分钟。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/17677.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vulnhub - AI-WEB-1.0靶机教程

目录 站点信息收集 c段扫描 端口扫描 目录扫描 漏洞利用 使用 burp 抓包 查询数据库名 查询数据库下的表 查询表中的字段名 查询字段中的数据 --os-shell 上传一句话木马 下载地址:https://download.vulnhub.com/aiweb/AI-Web-1.0.7z 我们从站点信息收…

【哈希】闭散列的线性探测和开散列的哈希桶解决哈希冲突(C++两种方法模拟实现哈希表)(1)

🎉博主首页: 有趣的中国人 🎉专栏首页: C进阶 🎉其它专栏: C初阶 | Linux | 初阶数据结构 小伙伴们大家好,本片文章将会讲解 哈希函数与哈希 之 闭散列的线性探测解决哈希冲突 的相关内容。 如…

Day19学习Java

什么是注解 java.annotation包 Annotation是从JDK1.5开始引入的新技术,注解即可以对程序员解释又可以对程序解释 注解与注释的区别 注释:对程序员解释代码信息 注解:对程序和程序员解释代码信息 注解的所用 不是程序本身,可以…

web会话跟踪(JWT是什么)

web会话跟踪(JWT是什么): 一.使用会话跟踪的原因: 因为http请求是无状态,一次请求响应结束后,就结束了,下一次再向服务器端发送请求,服务器并不知道是谁向他发送的 所以我们需要对整个会话过程进行跟踪 二.token: …

SpringBoot 配置Druid数据源及mysql

SpringBoot 配置Druid数据源及mysql 本文使用 druid-spring-boot-starter 方式 <dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.1.22</version> </dependency>&…

Echarts圆环图偏移后 中心文字居中对齐实现

像上图中这样圆环图并不在div的中间时&#xff0c;中心的文本需要居中展示 一开始用left百分比但数据一旦变长或变短就会偏移 像这样 实在是太不美观了 所以我们这里使用动态的left通过文本的长度来计算 /*** 计算文本宽度* param {String|Number} text* param {String} font*…

js之图片上传

话不多说&#xff0c;直接上干货&#xff0c;注释在代码里面 下面是效果图和代码 <!DOCTYPE html> <html lang"zh"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-sca…

[算法][数字][leetcode]2769.找出最大的可达成数字

题目地址 https://leetcode.cn/problems/find-the-maximum-achievable-number/description/ 题目描述 实现代码 class Solution {public int theMaximumAchievableX(int num, int t) {return num2*t;} }

第97天:权限提升-Web 权限权限划分源码后台中间件第三方数据库等

前置知识 具体有哪些权限需要我们了解掌握的 后台权限&#xff0c;网站权限&#xff0c;数据库权限&#xff0c;接口权限&#xff0c;系统权限&#xff0c;域控权限等 以上常见权限获取方法简要归类说明 后台权限&#xff1a;SQL 注入,数据库备份泄露&#xff0c;默认或弱口…

Qt | 内容边距(ContentsMargins)、间距(spacing)和 QSpacerItem 类

01、上节回顾 Qt | 布局管理器基础(QLayout)Qt | 布局部件拉伸(Stretch)原理及大小策略

Python | Leetcode Python题解之第104题二叉树的最大深度

题目&#xff1a; 题解&#xff1a; class Solution:def maxDepth(self, root: TreeNode) -> int:if not root: return 0queue, res [root], 0while queue:tmp []for node in queue:if node.left: tmp.append(node.left)if node.right: tmp.append(node.right)queue tmp…

Mybatis入门——其他查询操作和数据库连接池(4)

目录 一、多表查询 二、#{} 和 ${} 1、#{} 和 ${} 的使用 &#xff08;1&#xff09;Integer类型的参数 #{} 的使用 ${} 的使用 &#xff08;2&#xff09;使用String类型的参数 #{} 的使用 ${} 的使用 小结&#xff1a; 2、#{} 和 ${} 的区别 &#xff08;1&#…

太阳能语音监控杆(球机LED款)有什么用

传统监控设备依赖电力支持&#xff0c;在偏远地区和没有网络地区难以发挥其作用&#xff0c;而鼎跃安全的太阳能语音监控杆&#xff08;球机LED款&#xff09;在传统监控基础上&#xff0c;进行了全面优化&#xff0c;解决了无电无网区域使用受限的问题。 太阳能语音监控杆&am…

RSC英国皇家化学学会文献查找下载

英国皇家化学学会(Royal Society of Chemistry&#xff0c;简称RSC)是以促进全球化学领域研究发展与传播为宗旨的国际权威学术机构&#xff0c;是化学信息的一个重要宣传机关和出版商。RSC出版的期刊是化学领域的核心期刊&#xff0c;大部分被SCI和MEDLINE收录&#xff0c;如An…

浅谈JMeter作用域

浅谈JMeter作用域 JMeter是一款广泛使用的开源性能测试工具&#xff0c;它能够模拟多用户并发访问Web应用或其他系统的行为&#xff0c;以评估系统的性能和稳定性。在构建测试计划时&#xff0c;理解JMeter中的元件作用域与执行顺序至关重要。本指南将深入解析JMeter的作用域规…

K8s 1.25.4 高可用集群二进制部署(Runtime Containerd)

目录 一、集群环境准备 1.1 主机规划 1.2 软件版本 1.3 网络分配 二、集群部署 2.1主机准备 2.1.1 主机名设置 2.1.2 主机与IP地址解析 2.1.3 主机安全设置 2.1.4 交换分区设置 2.1.5 主机系统时间同步 2.1.6 主机系统优化 2.1.7 ipvs管理工具安装及模块加载 2.1…

腾讯云联络中心ivr调用自定义接口

1&#xff0c;java代码&#xff1a;http接口 RequestMapping(value "/getMsg5", method RequestMethod.POST) public Map<String, String> index(RequestBody Map<String, String> params) {String id params.get("id");HashMap<String…

渗透测试工具Cobalt strike-1.CS介绍与配置

Cobalt Strike是一款美国Red Team开发的渗透测试神器&#xff0c;常被业界人称为CS。最近这个工具大火&#xff0c;成为了渗透测试中不可缺少的利器。其拥有多种协议主机上线方式&#xff0c;集成了提权&#xff0c;凭据导出&#xff0c;端口转发&#xff0c;socket代理&#x…

目前无法解释的6个物理问题,每一个都困扰科学家很长时间

人类已经对宇宙有了大概的认知&#xff0c;不过即便如此&#xff0c;在宇宙中还有很多我们无法解释的物理问题&#xff0c;下面我们就一起来看看。 第一个无法解释的物理问题——虫洞真的存在吗&#xff1f; 虫洞最早是1916年由奥地利物理学家路德维希.费莱姆首次提出的&#…

登录记住密码背景颜色修改

1&#xff0c;在login.vue中&:-webkit-autofill里面的css替换成如下 &:-webkit-autofill {box-shadow: 0 0 0px 1000px $bg inset !important;-webkit-text-fill-color: $cursor !important;}