Ghostscript 创建巨大的临时文件

Ghostscript 创建巨大的临时文件

我们的 Web 应用程序使用 ghostscript 将 pdf 转换为 png。最近,/tmp 目录中创建了一个超过 60GB 的大型临时文件。在创建此文件时,平均负载上升到 18。我完全搞不懂这一点,非常感谢任何帮助。谢谢!

细节:

  • Ghostscript 版本为 8.70
  • 操作系统是 Red Hat Enterprise Linux Server 5.2 (Tikanga)
  • PDF 文件作为输入存在于文件服务器上。文件大小约为 150MB,2 页,445.8 x 323.2 毫米,PDF 1.6(Acrobat 7.x)
  • 几乎在创建该文件的同时,nfs 就出现了问题。
  • 我不知道哪个是根本原因:文件大小,文件内容,还是 nfs 的问题。
  • 文件创建时/tmp的内容为:

    ls -lh /tmp
    ...
    -rw------- 1 apache apache 39K Jan 21 17:29 gs_eNsUng
    -rw------- 1 apache apache 66G Jan 29 12:12 gs_GamtbA
    ...
    
  • 应用程序执行如下命令:

    gs \
    -dSAFER \-dBATCH \
    -dNOPAUSE \
    -sDEVICE=png48 \
    -dTextAlphaBits=4 \
    -dGraphicsAlphaBits=4 \
    -dMaxStripSize=8192 \
    -dUseCropBox \
    -sOutputFile=[path of output image file] \
    [path of input pdf file]
    

答案1

首先,8.70 已经过时了。我们最近发布的版本(去年 8 月)是 9.06,9.07 候选版本已经发布,预计 9.07 将于 2 月初发布(除非出现意外情况)。

http://www.ghostscript.com/~chrisl/ghostscript-9.07rc1.tgz http://www.ghostscript.com/~chrisl/ghostpdl-9.07rc1.tgz

http://www.ghostscript.com/~chrisl/MD5SUM http://www.ghostscript.com/~chrisl/SHA1SUM

(ChrisL 是我们的发布协调员)。

-dMaxStripSize=___ 仅用于 tiff 设备,不用于 png*(但这不是问题)

有时 -dBufferSpace=32000000(默认值为 4000000)会稍微减小 clist 大小。这很可能是一个已修复的错误。请使用当前代码重新测试。

如果在新代码中这个问题仍然存在,我们(Artifex)将需要该文件。在这种情况下,请打开一个错误http://bugs.ghostscript.com

答案2

我在使用 Ghostscript 9.05 时遇到了同样的问题,并且发现了以下错误:http://bugs.ghostscript.com/show_bug.cgi?id=693121这是为了解决 Ghostscript 在异常终止时不清除临时文件的问题而编写的。

我们的应用程序将 PDF 转换为 JPG,有时最终用户会向我们提供 Ghostscript 无法很好处理的 PDF,因此我们会对这个过程进行计时,如果花费的时间超过设定的时间,我们会终止这个过程。听起来我们还需要在这种情况下找到并删除临时文件,直到这个错误被修复。

相关内容