我有一个简单的 JSP/Servlet maven 应用程序,它允许用户上传存档文件。然后应用程序将解压缩包含 XML 文件的存档,并使用基本的 SAX 解析来解析它们。它将生成这些文件的内存表示,并将它们写入当前处于嵌入式模式的 Neo4J 图形数据库。
在开发过程中,我使用了 GlassFish v3,但考虑到生产,已经提出从 Glassfish 迁移到 Tomcat 的请求,所以我做到了。除了 Tomcat 的一些小问题迫使我添加 JSF 依赖项(尽管我没有使用任何 JSF)之外,Tomcat atm 还存在一个大问题。
我在 glassfish v3 上上传和解析的最大测试文件大约需要 8 秒。之后,由于我没有清理上传的文件(还),它需要大约 2 秒。
Tomcat7上的同一个文件第一次上传和解析大约需要90秒。其他时间大约少了 20 秒,大概是因为同样的原因。
无论如何,性能差异是 10 倍。我有点惊讶,因为我认为使用 Tomcat 实际上会提高速度,因为它比 Glassfish 更轻量级,因为我并没有真正使用高级Glassfish 提供的功能。
有没有人遇到过类似的问题,你做了什么来解决这个问题?这甚至可以解决,还是由于Tomcat的工作方式......
编辑:差异似乎在于负责将文件的内存表示写入实际数据库的代码部分......不知道为什么......