postgresql僵尸进程的处理思路

简介

僵尸进程(zombie process)是指一个已经终止但仍然在进程表中保留条目的进程。正常情况下,当一个进程完成执行并退出时,操作系统会通过父进程调用的wait()或waitpid()系统调用来收集该子进程的退出状态。如果父进程未及时调用这些函数,子进程的状态信息就无法从内核中移除,导致进程在内核中以“僵尸”状态存在。此状态下的子进程,使用kill -9 就是“鞭尸”,是无法移除僵尸进程的

僵尸进程的主要特点是它们不再消耗CPU或内存资源,因为其已终止,只保留一个进程号(PID)和少量的状态信息。然而,过多的僵尸进程会使系统的进程号资源耗尽,阻止新进程的创建,影响系统稳定性。

产生僵尸进程的常见原因包括:父进程未能及时俘获到子进程得退出信息,并对其进程信息进行处理,导致子进程进入、“僵尸状态”。本文以postgres 进行举例

“t” 状态解决办法

使用gdb挂住postgres(主进程),此时数据库得主进程处于t状态。将子进程kill 掉此时,子进程就会变成僵尸状态。
image.png
此状态下现存的客户端进程会一直保持写入状态。Wal文件持续增长中。此时主进程状态处于t状态。

ps -o pid,ppid,cmd,state,etime -p 1797

t状态表示进程被跟踪并停止(Traced and stopped)
使用ps -ef |grep 1797查看调用postgres(主进程的程序)的进程 ,将其kill 掉,postgresql运行会恢复正常。子进程会被重新拉起。此时主进程状态会恢复到S状态。
image.png

“T” 状态解决办法

“T”状态 表示进程被停止。
使用kill -19 1797 stop掉主进程,然后kill -9杀掉所有的子进程。模拟僵尸僵尸状态
image.png
此时父进程状态为T 状态,kill -19 之后,父进程将无法再处理子进程的退出消息。此时对父进程发送继续进程的指令kill -18 ,此时父进程会重新运行,并进行处理消息列表的信号。
image.png

“Z” 僵尸状态

进程已经终止,但父进程尚未回收它的退出状态,导致该进程变成僵尸进程。
image.png,当然在以上的两个状态中,子进程也是处于“Z”状态,但是我们可以通过父进程进行判断僵尸进程的原因,使用危害较小的方式进行处理,如果此时的父进程state处于正常状态,但是子进程处于“Z”状态,此时引发原因就变得难以追踪。
模拟父进程没通过wait(),waipid()进行处理子进程退出信息,引发僵尸进程
编辑脚本zombie_process.py
使用一下指令进行调用

python3 zombie_process.py

脚本内容如下:

import os
import timedef create_zombie():pid = os.fork()  # 创建子进程if pid > 0:# 父进程:故意不处理子进程的退出状态print(f"父进程 PID: {os.getpid()}")print(f"子进程 PID: {pid}")print("子进程变为僵尸进程(父进程不回收子进程)。")time.sleep(60)  # 父进程休眠,保持子进程为僵尸进程elif pid == 0:# 子进程print(f"子进程 PID: {os.getpid()} 终止")os._exit(0)  # 子进程结束if __name__ == "__main__":create_zombie()

image.png
此时子进程处于“Z”状态,但是父进程确实正常state 状态,此时需要。kill父进程,让其由systemd一号进程进行接管,编处理僵尸进程的退出状况。

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

DICOM文件的格式详细解说(1)

1 DICOM的详细介绍 DICOM要到这里面看Current Edition,这是标准委员会制定的标准,同时也在与时俱进,不断的进行新的数据格式更新。 2 DICOM的格式 图1 DICOM文件格式的图示 要先说一下数据结构,我们被最多影响的是数据结构和算…

Trilium Notes笔记本地化部署与简单使用指南打造个人知识库

文章目录 前言1. 安装docker与docker-compose2. 启动容器运行镜像3. 本地访问测试4.安装内网穿透5. 创建公网地址6. 创建固定公网地址 前言 今天和大家分享一款在G站获得了26K的强大的开源在线协作笔记软件,Trilium Notes的中文版如何在Linux环境使用docker本地部署…

贝励德故事:注册电气工程师有多难考?(知乎)

之所以说是条不归路,给你看看我的复习资料就知道了 这是需要买的手册和规范,加起来有五十斤重了。你还得在三小时内找到知识点结合题意计算作答,计算器不能出一点差错。这个难度可想而知。 这是我备考两年多做过的题,看过的总结&a…

Spring Boot框架下的足球青训俱乐部管理

2 相关技术简介 2.1 Java技术 Java是一门伟大的纯面向对象的编程语言和编程语言。同时,它还是Java语言从嵌入式开发到企业级开发的平台。Java凭借其一次编译,任何地方执行的优点,使得盛行的web应用程序有大量的Java编译,很好地支…

AMD CDNA™2 GPU 中的寄存器压力

Register pressure in AMD CDNA™2 GPUs — ROCm Blogs 注意: 此博客以前是 AMD实验室笔记 博客系列的一部分。 GPU kernel 中的寄存器压力对高性能计算 (HPC) 应用程序的整体性能有着巨大的影响。理解和控制寄存器的使用可以让开发者精心设计代码,以最…

jQuery——元素尺寸

1、内容尺寸 height():height width():width 2.内部尺寸 innerHeight():height padding innerWidth():width padding 3、外部尺寸…

MES数据的集成方式

为了实现与其他关键系统的数据共享和协同工作,不同的集成方式应运而生。MES系统与其他系统的常见集成模式,包括封装接口调用模式、直接集成模式、数据聚合模型、中间件集成模式以及XML的信息集成模式等。 1. 封装接口调用模式 封装接口调用是一种常见的…

2024年9月中国干旱监测报告(FYDI-2.0指数)

目录 引言 旱情监测与分析 资料来源 引言 2024年9月,北方的降水逐渐增多,进入华西秋雨集中期,从青藏高原北部一直延伸到东北多地,常出现大范围的云带,西北地区的降雨强度较大。南方地区降水分布不均,受…

如何测试网络质量?

如何测试网络质量? 通过百度网盘分享的文件:winMTR 链接:https://pan.baidu.com/s/1Zfw4jciNhng35nfwBlF75Q 提取码:6622 –来自百度网盘超级会员V2的分享 下载WINMTR工具,在启动处输入www.baidu.com 判断方法&…

企业数字化转型的深层次问题与战略解读——基于TOGAF框架的深入分析与解决方案

数字化转型的必然性与复杂性 随着全球化和技术进步的推动,数字化转型成为企业保持竞争力、提升效率、满足客户需求的重要战略选择。然而,数字化转型并不仅仅是技术的简单引入,它涉及到业务模式、运营流程、组织架构以及企业文化的深刻变革。…

成都大学体育场馆预约系统—计算机毕业设计源码37087

摘 要 21世纪的今天,随着社会的不断发展与进步,人们对于信息科学化的认识,已由低层次向高层次发展,由原来的感性认识向理性认识提高,管理工作的重要性已逐渐被人们所认识,科学化的管理,使信息存…

软件开发人员绩效考核方案(参考)

1、产品&运营绩效考核表 2、开发绩效考核表 3、测试绩效考核表 4、CPI指标库 软件全套资料部分文档清单: 工作安排任务书,可行性分析报告,立项申请审批表,产品需求规格说明书,需求调研计划,用户需求调查…

【网站打包app】Prime Web 1.0.10 – 将网站转换为 Flutter 应用程序 |Web View 应用程序 |Web 到 App

Prime Web – 将您的网站转换为 Flutter 应用程序。您只需替换您的URL,就可以将您的网站转换为Android和iOS应用程序。 Prime Web Flutter 应用程序功能 推送通知下拉刷新下载和上传RTL 支持亮度和深色模式OneSignal 通知支持所有数据库应用链接和分享

Codeforces Round 976 (Div. 2 ABCDE题)视频讲解

A. Find Minimum Operations Problem Statement You are given two integers n n n and k k k. In one operation, you can subtract any power of k k k from n n n. Formally, in one operation, you can replace n n n by ( n − k x ) (n-k^x) (n−kx) for any no…

「漏洞复现」EDU 某智慧平台 PersonalDayInOutSchoolData SQL注入漏洞

0x01 免责声明 请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任。工具来自网络,安全性自测,如有侵权请联系删…

半导体器件基础09:MOS管特性和应用(2)

说在开头:关于德布罗意的电子波(1) 德布罗意家族的历史悠久,他的祖先中出了许许多多将军、元帅、部长,参加过法国几乎所有的战争和各种革命,后来受到路易.腓力的册封,继承了这最高世袭身份的头…

数据中心交换机与普通交换机之间的区别到底在哪里?

号主:老杨丨11年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部 上午好,我的网工朋友。 数据中心交换被设计用来满足数据中心特有的高性能、高可靠性和可扩展性需求。 与此同时,普通交换机…

全面提升MySQL性能:从硬件到配置再到代码的最佳实践

MySQL 是全球最流行的开源关系型数据库管理系统之一,广泛应用于各种规模的应用程序中。随着应用规模的增长,数据库的性能优化成为提升系统整体性能的关键因素。本文将从多个角度探讨如何对MySQL进行性能优化,帮助开发者和DBA解决实际问题&…

免费 Oracle 各版本 离线帮助使用和介绍

文章目录 Oracle 各版本 离线帮助使用和介绍概要在线帮助下载离线文档包:解压离线文档:访问离线文档:导航使用:目录介绍Install and Upgrade(安装和升级):Administration(管理&#…

Android 13.0 系统wifi列表显示已连接但无法访问网络问题解决

1.前言 在13.0的系统rom产品定制化开发中,在wifi模块也很重要,但是在某些情况下对于一些wifi连接成功后,确显示已连接成功,但是无法访问互联网 的情况,所以实际上这时可以正常上网的,就是显示的不正常,所以就需要分析连接流程然后解决问题 如图所示: 2.系统wifi列表显示…