1

私はしばらくの間ウェブサイトを開発してきましたが、これまでのところすべてが高速で優れていますが、アクティブなユーザーは 1 人です。最初、1 週間、1 か月、または 1 年で、何人の人が私の Web サイトを使用するかわかりません。

スケーリングの意味とそれを達成する方法を調べてきましたが、キャッシングが大きな部分を占めているようです。そこで、コンテンツをキャッシュする方法を探し始めました。現在、私は XAMPP で Web サイトを開発しました。データベースには MySQL を使用し、MySQLi を使用した単純な PHP を使用してデータを編集しています。また、OS X Mountain Lion に組み込まれている System Messages アプリを使用して単純にログを記録することもあります。そこで、キャッシングにMemcacheを使用することを考えています。

これは良いアプローチですか?

違いを実際に確認するにはどうすればテストできますか?

より多くのユーザーがいる場合でも、それがうまく機能することをどのように確認できますか?

良いベンチマーク アプリはありますか?

4

2 に答える 2

3

データベースが適切に拡張されるようにする方法はたくさんありますが、最も重要な部分は、テーブルに適切なインデックスを定義することだと思います。少なくとも外部キーであるフィールドには、インデックスを定義する必要があります。

たとえば、大規模なフォーラムがある場合、次のようなトピックのテーブルがある可能性があります。

topic_id | name
---------+--------------------------------
       1 | "My first topic!"
       2 | "Important topic"
       3 | "I really like to make topics!"
     ... | ...
 7234723 | "We have a lot of topics!"

そして、トピックの実際の投稿を含む別の表:

post_id  | user       | topic_id
---------+------------+---------
       1 | "Spammer"  | 1
       2 | "Erfa"     | 2
       3 | "Erfa"     | 1
       4 | "Spammer"  | 1
     ... | ...        | ...
87342352 | "Erfa"     | 457454

アプリケーションにトピックをロードするとき、トピックIDに一致するすべての投稿をロードする必要があります。この場合、データベースの行が多すぎるため、すべてのデータベース行を調べる余裕はありません。幸い、これが確実に行われるようにするために多くのことを行う必要はありません。フィールドtopic_idのインデックスを作成するだけで、完了です。

これは、データベースを適切に拡張するために行う非常に基本的なことですが、非常に重要であるため、誰かがそれについて言及する必要があると本当に思いました。

于 2012-10-23T19:20:08.307 に答える
2

jMeterを取得して使用します。

jMeter を使用すると、現在発生しているエラーがないことを確認するだけでなく、応答が返される速度とページがどのように読み込まれるかをテストできます。このようにして、大量の負荷をシミュレートできます。memcache を使用するなどの調整を行うと、実際のパフォーマンスの更新が表示されます。

于 2012-10-23T19:10:13.883 に答える