質問

Lift 2.0が俳優やStatefulsnippetsなどでテーブルにもたらすものに非常に感銘を受けましたが、これらのもののメモリの頭上について少し心配しています。私の質問は2つあります:

  1. Liftは、状態オブジェクトを収集する時期をどのように決定しますか?
  2. ページリクエストのメモリフットプリントはどのように見えますか?

Web Crawlerがサイトのフットプリントを横切って踊った場合、彼らは控えめなVPS(512m)をかき消すのに十分な状態オブジェクトを開いているのでしょうか?質問は非常に明らかにアプリケーションに依存していますが、誰かが私に捨てることができる現実世界の数字を持っているかどうか興味があります。

役に立ちましたか?

解決

セッションでストアをリフトして州の情報を持ち上げるので、セッションが破壊されると、そのセッションに関連する状態がなくなります。

セッション内で、Liftは、状態が割り当てられている各ページ(たとえば、ブラウザのAjaxボタンとサーバーの関数の間のマッピング)を追跡し、ブラウザからハートビートを持っています。 10分でハートビートを見ていないページの関数は参照されていないため、JVMはそれらをごみ収集できます。これらはすべて調整可能なため、ハートビート周波数、機能寿命などを変更できますが、実際にはデフォルトは非常にうまく機能します。

セッションの爆発に関しては、ええ...それは小さな問題です。人気のあるサイト(を含む http://demo.liftweb.net/ )それを体験してください。例コード(参照 http://github.com/lift/lift/tree/master/examples/example/ )単一の要求によって作成されたセッションを検出し、放棄してそれらを早期に期限切れにします。 256MBのヒープサイズ(512MB VPSに収まる)でdemo.liftweb.netを実行していますが、時にはセッションカウントが1,000を超えて上昇しますが、それはすぐに検索エンジンのトラフィックに陥ります。

他のヒント

メモリフットプリントについての質問はかつてメーリングリストのどこかで答えられたと思いますが、現時点では見つけることができません。

ごみ収集は、アイドル時間の後に行われます。ただし、Anがあります ウィキの例 これは、いくつかのより良いヒューリスティックを使用して、Webクローラーが生み出したセッションを殺します。

もちろん、あなた自身のプロジェクトでは、自分でいくつかのセッションを生み出しながら、VisualVMのようなものでメモリの消費をチェックすることは理にかなっています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top