You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PdfInfo.Create方法抛出FailedToExecuteCommand异常排查求助

排查步骤与解决方案

1. 确认服务器资源瓶颈

  • 实时监控高峰时段的CPU、内存、磁盘IO:用任务管理器或性能监视器跟踪,重点看CPU占用是否长期高于90%、可用内存是否低于1GB,或者磁盘IO队列持续过长。Ghostscript处理PDF需要一定资源,高负载下系统可能没法分配足够资源启动新进程。
  • 检查Ghostscript进程是否堆积:打开任务管理器看gswin64c.exe的数量,如果远超正常请求数,说明进程没及时退出,持续占用资源,导致新请求无法创建进程。

2. 调整并发与进程限制

  • 检查系统进程创建限制:Windows默认进程数足够,但如果其他服务占满配额,可能导致新进程无法创建。可以通过组策略或注册表查看MaximumProcessesPerSession相关设置。
  • 限制请求并发数:如果代码是无限制并发调用PdfInfo.Create,给请求加个队列或线程池限制,比如最大并发数设为服务器CPU核心数的1-2倍,避免短时间内炸出太多Ghostscript进程。

3. 排查临时文件与权限

  • 验证临时目录权限:确认C:/Users/Tomas/AppData/Local/Temp/对应用程序池的运行账号有读写权限,多请求下容易出现临时文件创建冲突或权限不足,导致Ghostscript读不了文件。
  • 检查临时文件清理:确保代码处理完PDF后及时删除临时文件,堆积太多会占磁盘空间,还可能出现文件名重复冲突。

4. 手动调试Ghostscript命令

  • 把报错里的命令复制到服务器的命令提示符里执行:
    "C:\Projects\gswin64c.exe" -q -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT --permit-file-read="C:/Users/Tomas/AppData/Local/Temp/temp.pdf" -sPDFPassword="qwert" -c "(C:/Users/Tomas/AppData/Local/Temp/temp.pdf) (r) file runpdfbegin pdfpagecount = quit"
    
    可以去掉-q -dQUIET参数看详细日志。如果手动执行也失败,可能是Ghostscript版本不对、PDF有问题(但本地正常的话概率低)或密码错了;如果手动能成功,那就是并发场景下的资源调度问题。

5. 对比环境差异

  • 核对Ghostscript版本:服务器上的gswin64c.exe版本要和本地一致,不同版本的并发处理逻辑可能有差异。
  • 检查安全软件与系统补丁:服务器上的杀毒软件、防火墙会不会拦截Ghostscript进程?高并发创建进程时容易被安全软件误判拦截。另外,服务器的Windows补丁是否和本地一致?有些补丁可能影响进程调度。
  • 调整应用程序池配置:如果是IIS部署,检查应用程序池的队列长度、进程回收设置,队列太长会导致请求超时,进程回收不及时会占资源。

6. 代码优化

  • 复用Ghostscript进程:如果用的是依赖Ghostscript的第三方库,看看是否支持复用进程,别每次请求都新建gswin64c.exe,减少资源开销。
  • 添加超时处理:给PdfInfo.Create调用加超时机制,超时后强制终止进程并清理资源,避免阻塞占用资源。

内容的提问来源于stack exchange,提问作者Akshay Taras

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 08:08:19