12

これは、私が数か月前に実験を開始した問題であり、それ以来、修正を試みてきましたが、成功していません。

症状: ランダムな間隔で、symfony はセッション情報を失い、ユーザーをログアウトします。どうやらサイトの負荷と関係しているようです。負荷が高くなると、ユーザーはより頻繁にログアウトされるように見え、30 秒ほどの速さで発生する可能性もあります。

環境: これが始まって以来、php バージョン、Web サーバー、セッション ストレージ、symfony バージョンなど、多くの設定を変更しました。現在のセットアップは次のとおりです: Ubuntu 10.04、php 5.4.0、symfony 1.4.17、nginx 1.0.15 with FPM。以下は、factory.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 サーバーを追加し、冗長性を使用するようにセッション ハンドラーを構成しました。これは非常に役に立ちました。セッションが失われることはめったにありません。今のところ、これは許容できる妥協点です。

4

2 に答える 2

0

実際、私たちが過去数か月間使用してきたセットアップは、通常の php セッション (キャッシュ クラスではない) を使用するように構成された symfony であり、次に php は memcache エクステンション (memcached と呼ばれる別のものがあります) を使用するようにセットアップされています。 2 つの冗長 memcache サーバー上のセッション。memcache サーバーの 1 つを取り出すと、すぐに失われたセッションが表示されるようになります。

これは、実際に仕事をした唯一のセットアップでした。

于 2012-12-30T00:30:59.990 に答える