我们的 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,因此我们会对这个过程进行计时,如果花费的时间超过设定的时间,我们会终止这个过程。听起来我们还需要在这种情况下找到并删除临时文件,直到这个错误被修复。