【Linux系统】常驻进程应用实践

简介: 上一篇关于常驻进程/守护进程的文章,介绍了守护进程的一些基本概念,本篇将介绍工作经历中的一个真实应用场景,以及遇到的问题,和当时的解决方法。

系列文章:

【Linux 系统】关于守护进程

一 概述

   系列的上一篇文章,介绍了守护进程的一些基本概念,本篇将介绍工作经历中的一个真实应用场景,以及遇到的问题,和当时的解决方法。

二 场景

   在某老东家工作期间,所在部门使用php进行业务开发,框架laravel。业务代码部署,也是包括web和脚本/任务两大体系。web服务提供接口,脚本机上的服务执行任务,包括kafka消息消费、laravel队列消息处理和定时任务执行等等。

   脚本机部署形态:入职初期,消费进程包括kafka-consumer,两个laravel(异步)队列进程queue:work,按照消息处理的紧迫程度定义了时效层面的优先级(low,middle,...)。

   启动方式:通过artisan方式启动进程,以独立进程形态存在于操作系统中。而启动脚本会以service的形式,部署(配置)在/etc/systemd/system下,也就是前面提到过的linux守护进程,文件名类似: /etc/systemd/system/xxx.xxx.service

artisan命令在上述守护进程的配置文件中(实际上,在最终层面是通过sh run.sh执行脚本的启动运行)。

三 案例及遇到的问题

常驻进程的生命周期如下图所示:

当我们重新发布代码时,对脚本这部分来说,部署过程就是:

1、覆盖新代码

2、终止旧的进程

3、启动新的进程

第二步的终止进程,是通过系统的kill pid命令来进行的,而这种方式相当于kill -15 pid,即通过-15信号量,通知系统要进行资源回收,并终止进程。

但实际的发布时,会出现kill 失败的情况,而jenkins中编写的命令为了应对这个问题,加上了等待90s后通过kill -9 pid强杀来终止旧进程。kill pid失败的情况这在当时导致了两个问题:

1)部署时间过长,因为很多kill pid执行失败的情况发生,所以每次都需要等待90s

2)kill -9 pid是非常危险的命令。因为来不及做资源回收,在存在父子进程时,强杀父进程导致出现孤儿进程,后续发布也存在无法发布成功的情况。

最终与其他技术同学一起解决这个问题,当时是由于laravel框架对进程、信号量管理、php版本支持上的一些问题导致的。再重写进程管理、信号量handler之后,问题得以解决。

相关文章
|
1天前
|
Ubuntu Linux 编译器
【Linux】详解动静态库的制作和使用&&动静态库在系统中的配置步骤
【Linux】详解动静态库的制作和使用&&动静态库在系统中的配置步骤
|
1天前
|
Linux Windows
虚拟机添加新硬盘之linux系统篇
虚拟机添加新硬盘之linux系统篇
|
1天前
|
监控 安全 Linux
Linux系统入侵排查(三)
本文介绍了Linux系统入侵排查的相关知识。首先解释了进行系统入侵排查的原因,即当企业遭受黑客攻击、系统崩溃或其他安全事件时,需要迅速恢复系统并找出入侵来源。接着,重点讲述了日志入侵排查的重要性,因为日志文件记录了系统的重要活动,可以提供入侵行为的线索。
|
1天前
|
安全 Linux Shell
Linux系统入侵排查(二)
本文介绍了Linux系统入侵排查的步骤,包括检查历史命令记录、可疑端口和进程、开机启动项以及定时任务。作者强调了了解这些技能对于攻防两端的重要性,并提供了相关命令示例,如查看`/root/.bash_history`记录、使用`netstat`分析网络连接、检查`/etc/rc.local`和`/etc/cron.*`目录下的可疑脚本等。此外,还提到了如何查看和管理服务的自启动设置,以判断是否被恶意篡改。文章旨在帮助读者掌握Linux服务器安全维护的基本技巧。
|
2天前
|
缓存 安全 Linux
Linux系统入侵排查(一)
本文探讨了在遭遇黑客入侵或系统异常时进行应急响应和排查的必要性,重点介绍了基于Kali Linux的入侵排查步骤。排查的目标是找出潜在的恶意活动,恢复系统的安全性,并防止未来攻击。总结来说,进行Linux系统入侵排查需要密切关注账号安全,跟踪历史命令,及时识别并消除安全隐患。同时,保持对最新攻击手段和技术的了解,以便更好地防御和应对潜在的网络安全威胁。
|
1天前
|
安全 Linux 测试技术
|
1天前
|
安全 Linux Windows
Linux中Shutdown命令使用介绍
Linux中Shutdown命令使用介绍
|
2天前
|
缓存 关系型数据库 Linux
Linux目录结构:深入理解与命令创建指南
Linux目录结构:深入理解与命令创建指南
|
2天前
|
数据挖掘 Linux vr&ar
Linux命令实战:解决日常问题的利器
Linux命令实战:解决日常问题的利器