我们使用 Apache FOP 将大量 XML 转换为 AFP 和 PDF。我们当前的负载将是在 HP-UX 系统上每次运行大约 25k 个文件。我们总共有 8 个线程,用于以生产者-消费者的方式初始化和触发 FOP 转换。最近在转换过程中出现了多次失败,在查找时,我们收到了一般的 FOP 错误,例如:
**ERROR,2460364,FOToPDF_Thread_11,FOP Exception, something.pdf,Failed to resolve font with embed-url './Fonts/arial.ttf'**
或者它的错误未能加载字体度量文件,尽管文件是完整的并具有正确的权限。生成了许多其他 PDF,因此这不是问题。
我们还结束了:
**java.io.FileNotFoundException: /PDF/20130111130002/something.pdf (Too many open files (errno:24))**
从正在处理的日志和卷来看,这看起来像是一个 FOP 问题。我读过 FOP 过去曾在字体文件中遇到过这个问题。在某些情况下,Apache 多次打开每个字体文件但未关闭句柄,从而导致大量打开的文件。这应该是固定的,但如果它仍然存在,除了将它发布在 Apache 列表上之外,还有什么好的快速解决方案呢?
可以将每个进程的打开文件描述符的 HP-UX 最大文件数限制增加到 2048 以上吗?那会有帮助吗?还有其他建议吗?