afnf.net

うわっ…私のJetty、起動遅すぎ?

Jetty チューニング 2014/03/24 23:08

blog-java1の開発中に遭遇した、Jettyの起動が遅くなるパターンを紹介。

hostnameの名前解決ができない場合

デフォルトだと、OS設定のhostnameにbindするようです。このhostnameのIPアドレスが引けない場合、タイムアウトになるまでJettyの起動が遅れます。私がやったミスは、/etc/hostsのtypoでした。

# /etc/sysconfig/network
HOSTNAME=host1.local
# /etc/hosts
12.34.56.78   host2.local   # 本当はhost1.local

全く気付かなくて、3時間ぐらいはまりました。最後はtcpdumpまで持ち出して解析(^^;

そもそもJettyをインターネットに公開する必要がなければ、localhostでのbindに変更するべきでしょう。

# /usr/local/jetty/start.d/http.ini
jetty.host=127.0.0.1

Servlet Annotationを有効にしている場合

Jetty9では、デフォルトでServlet Annotationは無効のようですが、有効にすると、全クラスに対してアノテーションの検査が行われる場合があるようです。有効にする場合は、ContainerIncludeJarPatternやWebInfIncludeJarPatternで絞り込みを行うべきでしょう。

Jetty8.1.2にはこれに関連する不具合もあったりして、さらに顕著だったようです。

起動処理が重い場合

Servlet APIのContextListenerやSpring MVCのApplicationListenerで重い処理を実行してしまうと、Jettyの起動が遅れます。DB検索とか最悪です。オンデマンドで処理するようにしましょう。

CPUが遅い場合

ですよね。

まとめ

速いサーバを借りよう!

でもCPUパワーがありすぎると、パフォーマンス上の不具合が見えにくくなってしまうんですよね。

Jetty チューニング 2014/03/24 23:08
comments (0)

blog-java2 engine (build:2019-02-23 17:57 JST)