GCMメッセージを送信するアプリケーションサーバーを開発中です。私のアプリケーションサーバーは、HTTPプロトコルを使用してGCM接続サーバーにポストリクエストを送信しています。要求の平均応答時間は許容されます(約100ミリ秒)が、時には1秒を超える時間の応答が得られることもあります。場合によっては、2、4秒またはそれ以上の応答時間があります。 このライブラリgcm-serverを使用して、GCMサーバーにリクエストを送信しています。私はそれがGoogleによって所有されていると信じています。 問題にもかかわらず、私はgcm-serverライブラリのコードでいくつか分析しましたが、ヒントや答えは見つかりませんでした。最終的に、GCMサーバーに有効な投稿を含むカールを送信することにしました。結果は同じです。私はこれが期待された動作ではないと確信しています、多分私は何か間違っているが、それが何であるかを見つけたり理解したりすることはできません。Http GCMサーバーへの投稿を送信する応答時間が非常に高い
以下は、これをテストするために実行しているスクリプトです。 Keep-Alive(デフォルトでは、cURLはKeep-Aliveを有効にしています)の定義なしに、GCMに1000件の投稿リクエストを送信しています。
#!/bin/bash
for i in {1..1000}; do
curl -s -w "%{http_code} - %{time_total}\n" -o /dev/null -X POST -H "Content-Type: application/json" -H "Authorization: key={putHereOneGCMValidToken}}" -H "Cache-Control: no-cache" -d '{
"collapse_key": "92667ba1-c8e9-4018-bf14-156417065641",
"delay_while_idle": false,
"data": {
"field1": "value1",
"field2": "value2"
},
"time_to_live": 0,
"registration_ids": [
"REGISTRATION_ID_1",
"REGISTRATION_ID_2",
"BAD_REGISTRATION_ID"
]
}' "https://gcm-http.googleapis.com/gcm/send";
sleep 0.2;
done
参考:
私のアプリケーションサーバーでは、すでにメッセージをグループ化しています。複数のregistrationIdsに1つのリクエストを送信しています。テストスクリプトであっても、複数のregistrationIdがあり、私の現実に近いシナリオを得ることができます。 このテストの提案は、私が直面している問題を理解するのに役立つサンプルを入手することです。私のアプリケーションサーバーでは、1000個のリクエストを順番に送信するわけではありません。私はGCMに大量のリクエストを送信していますが、それらは順次ではなく、時には私が報告したように応答時間が長くなることもあります。とにかくお返事ありがとうございます。 –
私はテストスクリプトを変更して10回のリクエストを送信し、10回のリクエストの実行ごとに2秒間スリープします。わずか5回の実行で、私は3.074と1.347で応答を得た。 –