我有一个Windows服务,它会轮询数据库中任何类型为doc,docx,pdf和rtf的上传文档,并将它们转换为HTML并将它们保存到本地文件系统中。文档从数据库中提取并在内存中排队,然后由多个线程拾取以从共享队列进行处理。
我面临的问题是,处理在一段时间内会变慢。转换在最初几天发生得更快,对于大小为50 KB的文档说2秒,对于同一文档几天时间说20秒后更慢。随着时间的推移,我所能看到的是处理时间的下降趋势。我无法确定导致这种下降趋势的原因。即使重新启动Windows服务也无济于事。
Microsoft Office安装在Windows Server上以进行文档转换。每天有近2000份文档被转换为HTML。
所以我的问题是我们可以使用多线程将Microsoft Word文档处理为HTML吗?
答案 0 :(得分:3)
我认为你已经尽可能多地使用多线程 - 你不能使Word更高效,只需并行运行几个Word实例(你正在做)。我建议花更多的时间进行调查。
进行一些日志记录/跟踪和分析。找出那些非常慢的代码/方法行。
如果事实证明Word很慢,请尝试观看它和系统。缓慢来自哪里?它耗尽了所有的CPU吗?也许磁盘访问太多了?也许在某处收集了太多临时文件?或者也许你用完了RAM而Windows正在疯狂交换?在最后一种情况下,使用它的是什么?也许你没有正确关闭某些东西(比如Word本身或你打开它的文件)?