0

次のタイムアウト値を設定しようとしています:

CloudBlobClient cloudBlobClientUserData = cloudClientAccountUserData.createCloudBlobClient();
cloudBlobClientUserData.setTimeoutInMs(60000); //1 Minute 

CloudBlobContainer container = cloudBlobClientUserData.getContainerReference(containerName);
CloudBlockBlob blob = container.getBlockBlobReference(blobName);

inputStream = new ByteArrayInputStream(data);
blob.upload(inputStream, data.length);

インターネット接続が弱い場合blob.upload(....)、1 分経過してもタイムアウトしないことがあります。10分以上かかります。

なぜこれがこのように起こっているのか分かりますか?

PS:私は1ミリ秒でも試しました例:

cloudBlobClientUserData.setTimeoutInMs(1);

それでも、すべての BLOB が Azure クラウドにアップロードされています。タイムアウトなし

4

3 に答える 3

0

タイムアウト設定は、単一のストレージ サービス操作に適用されます。あなたのブロブの大きさはわかりませんが、小さなチャンクでアップロードされていると思われます。アップロードされる各チャンクは、タイムアウトの対象となります。そのため、アップロード全体に数分かかる場合がありますが、各チャンクはタイムアウト期間内に完了します。

もう 1 つの可能性は、再試行が発生していることです。再試行がある場合、タイムアウトはリセットされます。そのため、再試行で解決される断続的な障害が発生する可能性があります。

これらすべては、Fiddler を使用してアップロードを追跡することで確認できます。たとえば、トレースで次のような行を探します。

PUT https://.blob.core.windows.net/test/?comp=block&blockid=MkZGREU3RkItMDAwMDE1&timeout=90 HTTP/1.

于 2013-04-09T14:44:11.817 に答える