解决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)

相关推荐

  • 写Java程序最容易犯的21种错误是怎样的

    技术写Java程序最容易犯的21种错误是怎样的写Java程序最容易犯的21种错误是怎样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。写Java程序最容易犯

    攻略 2021年11月16日
  • 幸福是什么医生说,对于90后来说,什么是幸福

    技术幸福是什么医生说,对于90后来说,什么是幸福感谢邀请幸福是什么医生说。对于90后来说,什么是幸福?大调查发现,90后的年轻人幸福感还是很高的,只有13.9%的年轻人感觉不幸福。他们对整体社会环境和生活状态的满意度都很

    生活 2021年10月28日
  • python空气质量数据举例分析

    技术python空气质量数据举例分析这篇文章主要讲解了“python空气质量数据举例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python空气质量数据举例分析”吧

    攻略 2021年11月29日
  • ngk的发展(ngk高级和低级怎么区别)

    技术怎么浅析NGK的发展蓝图怎么浅析NGK的发展蓝图,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。NGK作为分布式商业公链项目,致力于打造可服务于各类型商业

    攻略 2021年12月18日
  • 与Redgate SQL Toolbelt持续集成的方法是什么?

    技术数据库与Redgate SQL Toolbelt的持续集成方法是什么本篇内容主要讲解“数据库与Redgate SQL Toolbelt的持续集成方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性

    攻略 2021年12月23日
  • sql如何实现jpql排序

    技术sql如何实现jpql排序这篇文章给大家分享的是有关sql如何实现jpql排序的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 jpql按升序排序,并且null要排最后,可以使用COA

    攻略 2021年11月25日