0

私は単一のサーバー上にphp symfonyアプリケーションを持っており、異なるノード上のドッカーで水平方向にスケーリングしています。そのため、ここではキャッシュ用にクラスター化されたファイル システムを使用し、それを一元化して Docker コンテナーにマウントするためにログを使用したいと考えました。

私は glusterfs でこれを達成し、うまく機能する 1 人のユーザーでテストしました。しかし、負荷が増加すると、アプリケーションがダウンし、応答時間が長くなり、ユーザーに白い画面が表示されることがあります。glusterfs を削除し、アプリケーションのパフォーマンスを向上させたローカル ファイル システムを使用しましたが、高負荷時の応答時間の増加は見られませんでした。このことから、キャッシュとログを格納するためのクラスター化されたファイル システムとして、glusterfs は適切な選択ではないと思います。

質問は、アプリケーションのパフォーマンスをダウングレードする他のファイル システムはありますか?

ありがとうございました。

4

1 に答える 1

1

あなたが発見したように、Symfony のキャッシュとログを共有 FS に置くことは、実際には悪い考えです。ローカルFSはそこに行く方法です。ただし、マルチサーバー構成に移行する場合は、いくつかのアドバイスがあります。

  • セッションが他の場所に保存されていることを確認してください.memcachedまたはRedisがIMOの方法です。ファイルセッションはPHPのボトルネックです
  • 最悪のシナリオでは、ファイル セッションに固執する必要がある場合は、サーバーの IP バランスを調整します (nginx の「セッション スティッキー」)。そうしないと、ユーザーは切断されます。
  • ログファイルから中央ロガーに移動します。理想的にはUDP(ノンブロッキング)を介したものです
  • Symfony キャッシュの一部を FS から移動して、パフォーマンスを向上させることができます: Doctrine は異なる種類のキャッシュ (memcache も APCu...) を使用できます。Symfony の基本的なリバース プロキシは Varnish に置き換えることができます。

言うべきことはあまりありません。他に何か聞きたいことはありますか?

于 2016-07-06T15:32:59.290 に答える