• ベストアンサー

定期的にTomcatを再起動する意味

上司から、「定期的に、たとえば1週間に1度、Tomcatを再起動したほうが、システムが安定すると思うがどうだろう?」と言われ、返答できなかったので、教えていただきたいと思います。 Tomcatを再起動すると、セッション情報やコネクションプールが初期化されるので、システムの不具合により出されたゴミを消すことができます。 しかし、無意味なことはやりたくありません。 説明できる方、よろしくお願いします。 また、参考になるサイトがありましたらご紹介ください。

質問者が選んだベストアンサー

  • ベストアンサー
  • root139
  • ベストアンサー率60% (488/809)
回答No.2

或るプロジェクトでまさにそれを数年間やってました。 場当たり的な対症療法だと言われれば、その通りなのですが・・・。 おっしゃる通り、メモリリーク、コネクションリークを始めとする、システム内に生じた不正な状態をリセットして、安定化させるのが目的でした。(「なんとか稼動させる」と言った方が適切かも知れませんね・・・) 一般的には、不安定で有る事、根本的な解決がすぐに出来ない事が分かるまでは、安易にやるべきでは無いと思います。 安定性に不安が有るのでしたら、まずはシステムの監視を強化して、トラブルが発生したら即座に対応すべきかと。 冒頭に挙げたプロジェクトの場合は、不安定な状態が続いており、初期開発者の退職によりシステム全体を把握している人間が居らず、根本的な修正を行う予算も取れなかったのが理由でした。再起動をやり続けたおかげで、ユーザがいない時間を見計らって再起動させるノウハウ・ツールなどが整備されるという、嬉しいのだか悲しいのだか分からない副作用も有りました。 その後、数年掛けて、プロジェクトメンバーが片手間で不安定要因を取り除き、やっと再起動を不要にしました。 安定化に掛かるコストは見積りづらく、再起動で済むならそれが一番安上がりだという事になりがちですが、定期的な再起動は不安定性を除去するのではなく緩和するだけなので、応急処置だと割り切った方が良いと思います。

参考URL:
http://www.atmarkit.co.jp/fjava/index/index_troublehacks.html
Horirin39
質問者

お礼

root139さんいつもご丁寧な回答ありがとうございます。 たいへん参考になりました。

その他の回答 (2)

回答No.3

ノンストップは、OS, ミドル、アプリの安定性の評価に絶対の自信が無い限り 避けたいものです。 だから、もし1日一回早朝に再起動できるんだったら、その方が安心です。 もちろんヒートランをかけて安定性を評価するわけですが、何年も ヒートランできるわけでもないし、高負荷といっても多数のクライアントを シミュレートするのは大変です。 実際、システムによっては評価しきれないというのが現場の本音です。 上司の方もその辺が心配なのでしょう。 私だったら、顧客側で支障がないなら、再起動を伴う運用をこちらからお願いします。 たいていお客さんも心得ていて、賛成してくださるケースが多いですね。

Horirin39
質問者

お礼

tknakamuriさんご回答ありがとうございます。 たいへん参考になりました。

  • koi1234
  • ベストアンサー率53% (1866/3459)
回答No.1

>システムの不具合により出されたゴミを消す まさにこれが全てじゃないかと それを無意味と考えるか有意義と考えるかの違いだけではないでしょうか

Horirin39
質問者

お礼

早速のご回答ありがとうございます。 参考になりました。

関連するQ&A