2016-05-24 5 views
4

Symfony2セッションマネージャコンポーネントから非常に奇妙な動作が発生しています。特に、実稼働環境でSessionHandlerProxy :: read()関数が非常に遅いことがあります。Symfony2:断続的な高応答時間/遅いSessionHandlerProxy :: read()完了

Symfony\Component\HttpFoundation\Session\Storage\Proxy\SessionHandlerProxy::read

私はする必要があります場合、私は思ったんだけどけれども、私は、デフォルトSymfony2のセッションストレージ(ないのRedis、または類似したもの)で、Ubuntuを使用してのAmazon EC2上で、のApache2を使用しています。

Slow Response Time

を遅い応答が断続的であり、私がリクエスト/分と遅いセッションの間に任意の著しい相関が回を読んで気づいていない:私はNewRelicは、次のように報告された私のトランザクションを追跡するためにインストールされています。私は困惑しています、私が試してみたいことは何ですか?

+0

I/Oスループットはどうですか?ネイティブハンドラはファイルハンドラです。 –

+0

お返事ありがとうございます。あなたが何を求めているのか分かりません。ネイティブセッションハンドラは、セッションをローカルファイルに保存しますか?だから、多くのリクエストのI/Oスループットは何かよりも速くなりますか? – CaptainStiggz

+0

デフォルトでは、PHPのセッションはファイルに保存されます。セッションが保存されているドライブで異常な量のI/O操作が発生している場合、これは記述している動作につながる可能性があります。チェックに値する –

答えて

1

私はプロジェクトで同様のことをしました。セッション処理のためにredisに切り替えたときに私はそれを特定しました(私たちはPHPのデフォルトのファイルシステムハンドラに戻ってきましたが、断続的に問題が発生しています)。

SessionHandlerProxy :: read()メソッドがセッションからロックされ、プロセスがセッションのロックを解除するのを待っている可能性があります。

セッションロックは、という良いことであり、これはPHPでrace conditionsを防ぎます。したがって、起こっている可能性があるのは、別の要求が現在セッションにアクセスしており、可能な限り即座にセッションを解放していないということです。 google fu skillsで見つけた解決策は、セッションが終了するとすぐに$ session-> save()ハンドラを呼び出します。インターンはsession_write_close()を呼び出します(これにより、次のリクエストのセッションがロック解除されます)。

私はこれが助けてくれることを願っています! (5年前とはいえ)

Symfony API Documentation for Session:Save()

Here is the original stack overflow question

関連する問題