解决texlive化学式转换镜像经常偶发性进程堆积导致卡顿问题

技术解决texlive化学式转换镜像经常偶发性进程堆积导致卡顿问题 解决texlive化学式转换镜像经常偶发性进程堆积导致卡顿问题前言
之前在 使用Python定时清理运行超时的pdflatex僵尸进程

解决texlive化学式转换镜偶尔工艺堆积导致的卡死问题。

前言

在用python清理超时pdflatex僵尸进程的博文中,我用Python脚本启动了清理pdflatex僵尸进程的定时任务。部署了三个在线的4u2G k8s pod,pdflatex的执行过程是cpu密集型的,内存消耗很少。然而,在PODs的实际操作中有时会出现一些问题。

问题

问题1: K8s POD存储超过100M,POD宕机,但资源没有回收,导致K8s命名空间资源空耗。

问题2:每隔一段时间,单个pod进程偶尔会出现积压,预定的清理脚本也会宕机,导致清理任务无法正常运行。

问题3:主要原因是你不知道吊舱有问题。所有请求都通过k8s负载平衡到每个pod。一旦路由到有问题的pod,请求就会挂起。您必须在本地配置kubectl,以进入生产窗格检查流程,找到问题窗格,手动清理流程并重新启动清理任务。但是清理完之后,你会发现同样的问题过几天还会再次出现,人力运维的负担很重。

解决

问题一

第一个问题是,当我们执行pdflatex时,我们会生成tex和pdf文件,正常执行后,我们会清理这些文件。但是如果是僵尸进程,我们在清理进程的时候也需要清理进程对应的文件。清理脚本如下:

def clean_files():

nowtime=datetime.datetime.now()

#获得5分钟的时间差(因为创建超过5分钟的文件需要删除)

deltime=datetime.timedelta(秒=120)

#获取当前时间减去5分钟时差。

nd=nowtime - deltime

路径='/home/'

files=os.listdir(路径)

对于文件:中的文件

filectime=get_filectime(路径文件)

if filectime nd和len(文件)32:

os.remove(路径文件)

Logging.info('清理文件:'文件')

问题二

第二个问题比较严重,这是由以下原因造成的:

1.clean_files的偶尔异常导致计划任务挂起。在这里,已经判断偶尔出现了一个异常,即在文件创建时间后5分钟删除文件时找不到文件,这导致计划的任务挂起。判断pdflatex进程的积压导致clean_files永远无法获得cpu的执行权,而那些“异常”的文件在os.remove执行时被“正常”进程清理掉,导致错误。

2.p.terminate()方法没有生效。这个应该是texlive的bug引起的。我在部署生产时,每10分钟执行一次前面的清理过程。但由于pdflatex的cpu消耗较高,如果出现较多不正确的语法转换或稍高的并发,会造成短时间内cpu压力突然增大。此时,一些pdflatex进程已经伪造了它们的死亡,进程不能通过向进程发送终止指令来直接响应。

解决方法:第一个问题比较简单。试着抓住它。如果一次失败,下次可以执行,没有坏处。第二个问题,问题一直没有定位,偶尔有一些节点已经运行了几个月没有任何问题,但是偶尔有一个新的节点总是喜欢出问题,除了暴力和代码什么都没有。

def process_checker():

尝试:

Logging.info('pdflatex进程清理')

OS . system(' kill-9 ` PS-ef | grep pdflatex | grep pdftex | awk ' { print $ 1 } ' ` ')

e:除外

日志记录。错误(“清理过程中的错误”)

尝试:

clean_files()

Logging.info(“文件清理成功”)

e:除外

日志记录。错误(“清理文件时出错”)

其实一开始我用kill让它更流畅,但是跑了一段时间后发现根本摆脱不了kill,于是加了-9结束那些烦人的进程。

定时任务也会被删除。一切都很简单,边循环,每次睡60秒。循环中的代码try catch保证了如果一个节点在高峰期卡住,一分钟之内就能自动恢复,避免了人肉操作和维护,在生产环境中增加了两个实例,不存在长时间卡住的反馈问题。

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/130344.html

(0)

相关推荐

  • Linux下Hadoop 2.7.3如何安装搭建

    技术Linux下Hadoop 2.7.3如何安装搭建这篇文章将为大家详细讲解有关Linux下Hadoop 2.7.3如何安装搭建,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Linux

    攻略 2021年11月30日
  • 如何理解Unicode与JavaScript

    技术如何理解Unicode与JavaScript如何理解Unicode与JavaScript,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。上个月,我做了一次

    攻略 2021年11月17日
  • Asp.net软件使用log4net。

    技术asp.net中软件使用log4net这篇文章主要为大家展示了“asp.net中软件使用log4net”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“asp.net中软件使

    攻略 2021年12月17日
  • 反转字符串中的单词 III ----java

    技术反转字符串中的单词 III ----java 反转字符串中的单词 III ----java给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。示例:
    输入:"Let

    礼包 2021年11月1日
  • javascript函数式编程指南(javascript的基本语法)

    技术JavaScript基础的函数有哪些今天就跟大家聊聊有关JavaScript基础的函数有哪些,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一、函数简介1.1.

    攻略 2021年12月20日
  • RecylerView动画组件RecylerViewAnimators是什么意思

    技术RecylerView动画组件RecylerViewAnimators是什么意思这篇文章主要介绍了RecylerView动画组件RecylerViewAnimators是什么意思,具有一定借鉴价值,感兴趣的朋友可以参

    攻略 2021年12月3日