忍者ブログ

ひつ(じのひよこが)プログラミングします。
お仕事や趣味で困ったこととか、何度も「あれ?どうだったかしら」と調べたりしたこととか、作ったものとか、こどものこととかを書きます
★前は週末定期更新でしたが今は不定期更新です

2024/04    03« 1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  »05

リトライ間隔をちょっとずつ広げていく Exponential backoff

JavaScript でリクエストをリトライし続けるを実際に実装に組み込んだ SWEET の更新を出した (v20180317)。どどんとふが混雑しているときにエラーが多発するというフィードバックをくださった方からもうまく動くよ、というコメントを頂き、この改修は割とうまくいったと見える。

このやり方は並んでいるレストランで行列に並びたくない場合にちょっと時間を空けてすいている時間にまた来ようとするのと同じである。もう一度来店してみてだめならもう少し長い時間をあけて再々来店するだろう。このちょっとずつ (実際には ベースの時間 × 2^リトライ回数) だけ待つアルゴリズムはこの手のリトライをする場合には一般的なものである。例えば AWS でのエラーの再試行とエクスポネンシャルバックオフ - アマゾン ウェブ サービスでも紹介されている。AWS の API を叩く何かを書いているときに RateExceeded での失敗が多発する人はぜひ確認してみてほしい。


ただ、リトライ回数が大きすぎたりすると延々とユーザは待たされるのでその辺はうまく調整しなきゃいけない。このアルゴリズムを使う際の一番難しいところな気がする。ユーザが不自然に思う時間待つ場合はユーザに「再試行中だよ」と表示する必要などがあるかもしれない。

PR

コメント

ただいまコメントを受けつけておりません。

ブログ内検索

P R