微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

多处理错误-因<Signals.SIGKILL:9>

如何解决多处理错误-因<Signals.SIGKILL:9>

我正在尝试使用带有多种处理的ghosctscript进行后期脚本转换,以提高性能,因为我的pdf文件的大小非常大,约为650 mb。

我写的脚本如下。

def convert_ps(out_ps,input_pdf):
    cmd = 'gs -q -dSAFER -dnopAUSE -dBATCH -sDEVICE=ps2write -sOutputFile={} -f {}'.format(out_ps,input_pdf)
    check_output(cmd,shell=True)

out_ps_list = ["out1.ps","out2.ps","out3.ps","out4.ps"]
inp_pdf_list = ["input1.pdf","input2.pdf","input3.pdf","input4.pdf"]

print("Starting time:{}".format(datetime.Now()))
with Pool(processes=4) as pool:
    return_res = pool.starmap(convert_ps,zip(out_ps_list,inp_pdf_list))
pool.join()
print("End time:{}".format(datetime.Now()))

当我为单个文件运行ghostscript命令时,由于650mb大小的文件,需要40分钟才能将pdf转换为ps。我有4核linux机器,操作系统:RHEL,所以我尝试通过使用python多处理来提高性能。当我在脚本上运行时,我面临以下问题。

  1. cpu利用率为预期的100%。内存使用率接近70-80%。

  2. 1.5-2小时后,服务器本身关闭,没有关闭,但完全没有响应,尝试打开另一个会话时出现连接超时错误。在同一服务器上运行的所有其他应用程序都将关闭,例如Web应用程序在同一服务器上运行时给出500错误

  3. 现在,我在AWS控制台中检查了此实例,它显示服务器已启动并正在运行。 cpu利用率也低于10%。但是我仍然无法通过SSH / putty访问服务器。我不得不通过AWS控制台强制重启服务器,然后我才能访问服务器。

  4. 当我检查了ghostscript posctscript转换过程时,它停止了但未完成所有4个工作程序。有时,从4个文件生成了2个文件

  5. 后来,我在gs命令中添加了-dDEBUG选项(已删除-q),然后再次尝试,在2小时后达到跟踪以下。

    开始时间:2020-11-05 09:12:59.074123 multiprocessing.pool.RemoteTraceback: “” 追溯(最近一次通话): 工作器中的文件“ /usr/lib64/python3.8/multiprocessing/pool.py”,第125行 结果=(真,func(* args,** kwds)) starmapstar中的文件“ /usr/lib64/python3.8/multiprocessing/pool.py”,第51行 返回列表(itertools.starmap(args [0],args [1])) 在convert_ps中的第7行,文件“ pdf2ps_gs_poc.py” check_output(cmd,shell = True) 在check_output中的文件“ /usr/lib64/python3.8/subprocess.py”,第411行 返回运行(* popenargs,stdout = PIPE,timeout = timeout,check = True, 运行中的文件“ /usr/lib64/python3.8/subprocess.py”,第512行 引发CalledProcessError(retcode,process.args, subprocess.CalledProcessError:命令'gs -q -dSAFER -dnopAUSE -dBATCH -sDEVICE = ps2write -sOutputFile = out4.ps -f Loop_Five_Thousand4.pdf'死于。 “”“

    上述异常是以下异常的直接原因:

    回溯(最近通话最近): 在第14行的文件“ pdf2ps_gs_poc.py” return_res = pool.starmap(convert_ps,zip(out_ps_list,inp_pdf_list)) 星图中的文件“ /usr/lib64/python3.8/multiprocessing/pool.py”,第372行 返回self._map_async(func,可迭代,starmapstar,chunksize).get() 在get中的文件“ /usr/lib64/python3.8/multiprocessing/pool.py”,行768 提高自我价值 subprocess.CalledProcessError:命令'gs -q -dSAFER -dnopAUSE -dBATCH -sDEVICE = ps2write -sOutputFile = out4.ps -f Loop_Five_Thousand4.pdf'死于

我已经尝试过使用pool.apply_async,但是没有运气。

为什么它被先天性杀9杀死?有什么方法可以处理多处理?请有人帮助避免单杀9错误

编辑: 观察到,每当RAM内存利用率达到97-98%时,服务器就会终止长时间运行的进程而关闭。在/ var / log / message中找不到与OOM问题相关的任何日志。减少了解决该问题的运行编号。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。