ユーザーがアーカイブファイルをアップロードできるようにする単純な JSP/サーブレット Maven アプリケーションがあります。その後、アプリケーションは XML ファイルを含むアーカイブを解凍し、基本的な SAX 解析を使用してそれらを解析します。これらのファイルのメモリ内表現を生成し、現在組み込みモードの Neo4J グラフ データベースに書き込みます。
開発中は GlassFish v3 を使用していましたが、本番環境が見えてきたので、Glassfish から Tomcat に移行したいという要望がありました。JSF を使用していないにもかかわらず、JSF 依存関係の追加を余儀なくされた Tomcat のいくつかの小さな問題とは別に、Tomcat atm には大きな問題が 1 つあります。
私が持っている最大のテストファイルは、glassfish v3 でアップロードして解析するのに約 8 秒かかります。その後、アップロードされたファイルを (まだ) クリーンアップしていないため、所要時間は約 2 秒短くなります。
Tomcat7 上の同じファイルは、最初のアップロードと解析に約 90 秒かかります。それ以外の場合は、おそらく同じ理由で、約 20 秒短くなります。
いずれにせよ、10 倍のパフォーマンスの違いがあります。Tomcat を使用すると、Glassfish よりも軽量なため、実際には速度が向上すると思っていたので、少し驚いています。 Glassfish が提供する機能。
誰かが同様の問題に遭遇しましたか? また、これを解決するために何をしましたか? これは解決可能ですか、それともTomcatの動作方法によるものですか...
編集:違いは、ファイルのメモリ内表現を実際のデータベースに書き込むコードセクションにあるようです...理由はわかりませんが...