web-dev-qa-db-ja.com

書き込みリクエストが多すぎる場合、Webソケット経由のプッシュはサーバーの負荷を増加させますか?

データベースへの書き込み要求が多すぎます。現在、私のアプリの実装では、変更されたデータを更新するために5秒ごとにサーバーにプルコールを実行します。

プッシュスルーWebソケットを実装すると、サーバーの負荷が増加しますか(主にmysqlで実行されるクエリの数)?データが変更されると(毎秒)、すべてのクライアントにプッシュが送信されるため、毎秒、すべてのクライアントに対してSQLクエリが実行され、データベースサーバーの負荷が増加しますか?私はバックエンドでmysql、phpを使用しています。

3
pankaj

プッシュイベントは、サーバー上で変更があったことを通知するだけです。実際のデータを含める必要はありません。クライアントは、必要な場合にのみそのデータをプルできます。このようにして、サーバーに追加のオーバーヘッドが発生することはありません。それどころか、5秒ごとにポーリング要求を取り除きます。

このアプローチの唯一の欠点は、余分なラウンドトリップのために、サーバーがすべてのデータシナリオをプッシュする場合と比較して待ち時間が長くなることですが、現在の待ち時間は平均で約2.5秒です(5秒のポーリング間隔の約半分)。したがって、私が提案している追加の往復は、実際には、現在の状態よりも大幅に改善されていることを表しています。

また、サーバーは、プッシュ通知をすでに受信しているが、まだデータを要求していないクライアントにプッシュ通知を送信する必要はありません。これは、プッシュ通知を大幅に減らすこともできることを意味します。

したがって、クライアントとサーバー間のチャターは次のようになります。

Server to client: "Stuff has changed".
Client to server: "Gimme the changed stuff since XX:XX:XX GMT".
Server to client: "Here is your changed stuff".
1
Mike Nakis