6

ユーザーのアクティビティに基づいてネットワーキングを行うアプリを入手しました。アプリが送信する通常のペイロードは 100 ~ 200 バイトなので、基本的に重い作業はありません。これらのタスクは通常、問題なく動作しています (統計的に 99.9% またはリクエストは問題ありません) が、これらのネットワーク アクティビティとは別に、私のアプリはハートビートをサーバー (Amazon の EC2 (us-east1-) 上にあります) に送り返しています。 d それが問題になる場合)))。ハートビートは、HTTPS を介した通常の POST リクエストとして 10 秒ごとに送信されます。これは、通常のネットワーク アクティビティで観察されるよりも失敗率がはるかに高いため、実際には機能していません。最近の 7 時間のテストでは、ハートビート リクエストの 25% が失敗しました (しかし、私は 35% の低下さえ見ました)、通常はその速度を維持します。SSL を無効にすると、テスト デバイスのエラー率は 8% のままです。これらの障害が何らかのパターンに分類される場合 (つまり、4 日ごとなど、レート ベースのフィルタリングを意味する場合や、1 時間または 1 日ごとに失敗する場合は、リクエストの上限がどこかに設定されていることを意味する場合、おそらくそれほど大きな問題にはならないでしょう)。 )。しかし、このようなことは起こりません。10 ~ 15 のリクエストが連続して失敗することがあり、これはハートビートに悪影響を及ぼします。さらに悪いことに、リクエストが失敗した瞬間に、同じデバイスからサーバーに接続でき、これは問題なく動作しています)。この問題は、サポートされているすべてのバージョンの Android (2.2 以降) で発生します。しかし、このようなことは起こりません。10 ~ 15 のリクエストが連続して失敗することがあり、これはハートビートに悪影響を及ぼします。さらに悪いことに、リクエストが失敗した瞬間に、同じデバイスからサーバーに接続でき、これは問題なく動作しています)。この問題は、サポートされているすべてのバージョンの Android (2.2 以降) で発生します。しかし、このようなことは起こりません。10 ~ 15 のリクエストが連続して失敗することがあり、これはハートビートに悪影響を及ぼします。さらに悪いことに、リクエストが失敗した瞬間に、同じデバイスからサーバーに接続でき、これは問題なく動作しています)。この問題は、サポートされているすべてのバージョンの Android (2.2 以降) で発生します。

私は最近のhttpclientandroidlibを使用して HTTP リクエストを実行しているため、lib が原因ではないかと疑い始めたので、Android Asynchronous HTTP Clientに切り替えましたが、実際には何も変わりませんでした。私は主に次のような例外を取得しています:

NoHttpResponseException: ターゲット サーバーが応答しませんでした ターゲット サーバーが応答しませんでした URL: https://xx.xx.xx.xx/heartbeat/

また、SSL が有効な接続の場合:

javax.net.ssl.SSLException: 読み取りエラー: ssl=0x784bc588: システム コール中の I/O エラー、ピアによる接続リセット 読み取りエラー: ssl=0x784bc588: システム コール中の I/O エラー、ピアによる接続リセット URL: https: //xx.xx.xx.xx/ハートビート/

私は基本的に最初に犯人を追跡したいので、アプリが主にモバイルネットワーク上で実行されていることを知っているので、この問題をさらに進める方法についての提案をお待ちしています.

4

2 に答える 2

0

このアプリを実行し、通常の ping を実行してエラー率を確認してください: https://play.google.com/store/apps/details?id=com.ulfdittmer.android.ping

モバイル ネットワーク (セルラー) と WiFi の両方で実行します。

WiFi を使用している場合はping -n 100 google.com、ラップトップから実行して、ルーターとネットワーク アクセス ポイントが不安定でないことを確認します。その場合は、ルーターのプラグを抜き、再度差し込んでください。Linksys ルーターとアクセス ポイント、および Belkin アクセス ポイントは、このように不安定になります。

10 秒のハートビートが必要な場合は、HTTP タイムアウトを 3 ~ 5 秒に設定してフェイル ファストを行い、失敗した場合は再試行します。

于 2013-11-02T01:31:17.053 に答える