これは数ヶ月前に実験を開始して以来、私は成功していない問題を解決しようとしてきました。symfony 1.4のセッションがランダムに失われました
症状::ランダムな間隔で、symfonyはセッション情報を失い、ユーザーをログアウトします。何とかサイトの負荷につながっているようです。負荷が高くなると、ユーザーはより頻繁にログアウトされ、30秒間ですら速くなる可能性があります。
環境::これが始まって以来、私はPHPバージョン、Webサーバー、セッションストレージ、symfonyバージョンを含む多くの設定を変更しました。現在の設定は次のとおりです。 Ubuntu 10.04、php 5.4.0、symfony 1.4.17、nginx 1.0.15 with FPM。ここでは、セッションストレージはfactories.ymlの中に設定されている方法です。
user:
class: myUser
param:
timeout: 86400
use_flash: true
storage:
class: sfCacheSessionStorage
param:
cache:
class: sfMemcacheCache
param:
lifetime: 86400
host: 192.168.1.3
serializer: IGBINARY
mode: compiled
port: 11211
私はまた、セッションストレージのためのRedisを使用していたことを言及するようになったとはまだ問題を抱えていました。 次は何を試していいのか分かりません。他の誰かが同様のことを体験しましたか?この段階では、どんなヒントも高く評価されます。
更新日: 数ヶ月の検索と数多くの試行錯誤私はそれが並行性の問題であると思う。私たちのサイトはAJAXリクエストではかなり重いので、セッションハンドラに適切なロックメカニズムが実装されていない限り、セッションに関する問題が発生する可能性があることを知りました。 最初に私は方程式からsymfonyを削除しました。私はphpセッションを使うように設定しました。デフォルトのファイルセッションストレージでは、セッションを失うことはありません。それから、memcacheセッションストレージを使うようにphpを設定しました。確かに、私たちは失われたセッションを見始めました。私はmemcachedがメモリ不足ではないことを100%肯定しています。私は管理ツールをインストールしました。memcachedサーバは割り当てられた8GBの2%を使い果たしています(無駄なく、メモリは必要に応じて割り当てられます)。 次に、2番目のmemcachedサーバーを追加し、冗長性を使用するようにセッションハンドラを構成しました。これは大いに助けました、私はめったに失われたセッションを持っていません。今のところこれは許容される妥協である。
セッション記憶機構としてmemcacheを使用していますか?もしそうなら、私はmemcacheが新しいものが来るようにmemcacheがセッションを捨てていると想像すべきです - memcacheストレージは保証されていません。使用可能なメモリをmemcacheに増やすか、別の永続化メカニズムを使用する方がよいでしょう。 – halfer
私が言及したように私はデータを捨てないredisとして他のセッションストレージエンジンを使いました。私はmemcacheが1GB以上を使用するのを見たことがありませんが、最大8GBを使用するように設定されています。 – dcb
ああ、私はそれを逃したかもしれない - その詳細が後の編集で追加されない限り。その動作は、おそらく 'ab'を使ってテスト中のdevサーバに出現していますか? PHP 5.4が必要ですか?そうでない場合は、5.3.xまたは5.2.xにさえ戻して、違いがあるかどうか確認してください。 – halfer