1

私は現在80以上のウェブサイトを持っている会社のために複数のウェブサイトを提供しているプラ​​ットフォームに取り組んでいます。サイトは(今のところ)正常に実行されており、ページは2〜3秒以内に表示されます。しかし、サイトは毎日より多くの視聴者で成長しており、特に1つのサイトは毎日数千人の訪問者を受け入れています。

私は現在、各サイトの物理ファイルのリクエストを制御する.htaccessファイルを使用してLAMPを使用してマルチサイト構造をセットアップし、ホストとリクエストuriに応じて表示するページを決定するように書き直しています。

私はこれまで、個別のテンプレートと個別のファイルベースを備えた単一のコードベースによってすべて制御されるマルチサイトセットアップでこの状況にあったことはありません。手遅れになる前に、他の誰かがパフォーマンスを改善するために私に何ができるかをアドバイスしてくれることを願っています。

私の知る限り、.htaccessファイルで80以上のWebサイトを指定することは、パフォーマンスにはあまり良くありませんが、間違っている可能性があります。Apache vhostファイルで直接実行できることがあれば、パフォーマンスが向上すると思いますか?

注:* PHPがすべてのファイル要求を処理できないようにするために、リライトスクリプトに進む前に、物理ファイルが存在するかどうかを検出するために.htaccessファイルのみを使用します。

4

2 に答える 2

1

私は何年もの間、非常に大きな.htaccessファイルを貧乏人のフロントコントローラーとして使用する製品に取り組みました(私の設計ではありません)。そこには約700のルールがあり、パフォーマンスは実際には問題ではありませんでした。これが問題になる前に、インターネット接続、CPU、またはメモリ制限への帯域幅の制約に遭遇する可能性が高くなります。

これはすべて単一のサーバーで実行されていますか?1つのハードウェアに障害が発生したときに70のWebサイトがダウンするのは、残酷に聞こえます。私が最初に検討するのは、2台目のマシンをセットアップし、両方をNASなどの共有ファイルシステムに接続するか、ファイルストレージにAmazonS3などのサービスを使用することを検討することです。ボックスをロードバランサーの後ろに置いて、1つが失敗したときに、70人の怒っている顧客がいないようにします。次に、使用率が50%に達したら、3台目のマシンを追加して、障害によって他のボックスが転倒しないようにします。

管理が多すぎる場合は、ソリューションをPagodaBoxなどに移植することを検討してください。安価で、拡張が簡単で、上記の冗長性の処理について心配する必要はありません。

そうは言っても、vhostsがオプションである場合は、そのように編成する方が理にかなっている可能性があります。私はそれがパフォーマンスに大いに役立つとは思えません。

于 2012-09-07T17:16:16.517 に答える
0

最初のステップは、.htaccess から離れて、Apache 構成に何かを入れることです。Apache 構成は一度解析されて記憶されますが、.htaccess はページの読み込みごとに読み取られます。書き換えルールを移動するか、いくつかの仮想ホストを作成します。どちらに進むかはそれほど重要ではありません。個人的には、ドメインをオンにするだけで、実際に URL を操作する必要がある場合に備えて書き換えルールを保存する場合は、仮想ホストを好みます。

多くのサイトでコードのコアが共有されているため、opcode キャッシュ (APC、Xcache など) を使用するとパフォーマンスが大幅に向上します。これにより、PHP がページの読み込みごとにすべてのファイルを読み取ってコンパイルする必要がなくなります。これは、特に各ページに必ずしも必要ではない「標準」インクルードが大量にある場合に、パフォーマンスに驚くべき効果をもたらす可能性があります。

それを過ぎたら、クエリのキャッシュについて考え始めます。Memcached は、読み取り負荷の高いサイトを持っている場合に驚異的な効果を発揮し、複数のサーバーにアクセスすることになった場合でもうまくスケールアウトします (別の投稿者が述べたように、とにかくそうするのは悪い考えではないかもしれません。保護するためだけです)ハードウェア障害から身を守ります)。

于 2012-09-07T18:41:00.360 に答える