Tomcat (6 および 7) でGrails アプリの実行速度が 4 倍遅い理由について、だれかアイデアがありgrails run-app
ますか? それ以外の場合は、これを自分で追跡する方法についての一般的なアドバイスをいただければ幸いです。
状況
かなり集約的な XML 処理 (解析、xpath、シリアライゼーション) を行う Web アプリを持っています。大規模な入力の場合、 を介して実行すると、結果を返すのに約 5 秒かかりますgrails dev run-app
)。
tomcat6 で同じアプリを実行すると、4 倍遅くなります。
grails dev war
cp target/app.war /path/to/tomcat[6|7]/webapps
同じアプリ、同じ環境、同じマシン:同じ POST に応答するのに 4 倍 (20 秒) かかります。
- エラーは tomcat に記録されていません。私が期待するログ出力だけ
- Tomcat が非デバッグ モードで実行されている (Ubuntu 13.04 のデフォルト設定 +
-XX:MaxPermSize=512m
) - 同じ Java バージョン
アップデート
Tomcat では、次の実行が約 12 倍遅くなるようです。
XPathFactory.newInstance().newXPath()
...そして、私は、ええと、それをよく呼んでいました。さて、それは今修正されましたが、私はまだ知りたいです:
- Tomcat でこれが非常に遅くなる原因は何ですか?
- この発見にもっと簡単にたどり着くために、どのようなツールやアプローチを採用できたでしょうか? (これを理解するために、手動で多くのデバッグを行いました。)