0

私の Web サイトでは、ユーザーが自分のプロファイルまたは他のページを開くと (ほとんどすべてのページで mysql のデータが使用されます)、私の Web サイトはページの読み込み時に mysql に約 50 の接続を確立します。これは、基本的な OS を実行している私の開発サーバーの場合です。

mysql の永続的な接続について知ったとき、私は戸惑いました。この Web サイトを VPS (起動時の RAM が少ない) で実行する場合、大量の mysql 接続によって生じるオーバーヘッドを考慮すると、永続的な接続を使用すると Web サイトのパフォーマンスが向上しますか?

現在、すべての関数で接続を開始および終了しています。mysql に接続するためのより良い方法はありますか?

また、100 人のユーザーが同時に私の Web サイトを使用している場合、各ページが約 50 ~ 60 の接続を行う場合のパフォーマンスはどうなるでしょうか?

4

2 に答える 2

1

と聞かれたのでお答えします。あなたはこれを間違ってやっています。単一のデータベース接続を確立する共通関数を使用して、各ページ要求 (外部からアクセス可能な各 .php ファイル) で処理を開始する必要があります。その後、その接続を再利用する必要があります。

おそらくphpデータベースアクセスライブラリに組み込まれている自動接続プールを使用しており、アプリケーションをまだスケールアップしていないため、これでうまくいきます。

ユーザーを追加するとパフォーマンスが非常に低下するため、このマルチ接続戦略を使用してこれを大幅に拡大することはできません。

オープン ソースの php ベースの Web アプリ システムを実際に使用している例はたくさんあります。ワードプレスは一例です。それらのほとんどは、データベース接続を開き、そのハンドルをグローバル変数に格納することから始まることがわかります。

あなたは尋ねました:

CBroe のコメントに従って、戦略を変更しました。実際、私は複数のデータベース接続を使用していますが、機能は同じです (理由は聞かないでください笑)。起動時に接続を開き、ハンドラーを関数に渡すと、改善されますか?

はい、それで結構です。最高のパフォーマンスを得るには、接続の乱れを避ける必要があります。

複数の異なるデータベースへの接続が必要な場合は、それらすべてを開くことができます。しかし、データベースを 1 つだけヒットする必要があるようです。

PHP では、ハンドラーを関数に渡すときに大きなオーバーヘッドがないため、心配する必要はありません。

于 2014-05-10T18:22:39.027 に答える
0

Ollie Jones がすばらしい説明をしてくれたように、開始時に接続を開くと、接続数が 1 ページあたり 50 ~ 60 から 1 ページに減少しました。ローカルの開発サーバーではパフォーマンスに変化は見られませんが、ライブ サーバーでは大幅に改善されることは間違いありません。永続的な接続を使用する必要はまだありません。

于 2014-05-10T19:44:29.540 に答える