RPC エラーと http.postBuffer
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
git push
の実行中に次のような RPC failed
エラーが表示され:
error: RPC failed; result=22, HTTP code = 404
error: RPC failed; result=22, HTTP code = 411
Unable to rewind rpc post data - try increasing http.postBuffer
error: RPC failed; result=56, HTTP code = 0
...Stack Overflow または MSDN フォーラムでヘルプを検索すると、http.postBuffer
を設定するための古い推奨事項がたくさん表示されます。
これは行わないでください。 少なくとも、わけもわからずに行ってはいけません。 まず、この記事の推奨事項を確認します。
Git をアップグレードする
バージョン 2.8 以前の Git クライアントをまだ実行している場合は、まず Git をアップグレードする必要があります。 新しいバージョンの Git にはバグ修正があり、http.postBuffer
を設定する必要はありません。
以前のバージョンの Git でバグが発生した内部ユーザーや外部のお客様からの十分なサポート リクエストがあり、サーバー側のリマインダーを Azure DevOps Services/TFS に追加することにしました。
c:\mydir>git fetch
remote: Microsoft (R) Visual Studio (R) Team Services
remote: We noticed you're using an older version of Git. For a better experience, upgrade to the latest version at https://git-scm.com/downloads
remote: Found 4 objects to send. (6 ms)
Unpacking objects: 100% (4/4), done.
修正プログラムを確認する
TFS サーバーが Windows 2012 R2 以前を実行している場合は、これらの修正プログラムが該当するかどうかを確認します。
- Windows Server 2012 R2 の VSO でサイズの大きいファイルのアップロード、または大規模なリポジトリのクローンが失敗する
- Git クライアントによる Team Foundation Server への大きなファイルのプッシュがハングする
プロキシまたはロード バランサーを使用しているかどうかを確認する
バグのある、またはチャンク エンコードをサポートしていないひどいプロキシを使用している場合は、より大きなプッシュのエラーが表示されます。 正しく構成されていないロード バランサーの背後にオンプレミスの TFS を配置した場合も、同じことが発生する可能性があります。 プロキシをバイパスするとき、またはロード バランサーをバイパスするときに同じプッシュが成功した場合 (たとえば、サーバー自体から localhost にプッシュすることで)、代わりにプロキシまたはロード バランサーを修正します。
プロキシまたはロード バランサーが壊れているが、制御できない場合はどうすればよいでしょうか?
これは、http.PostBuffer
を設定することが新しいバージョンの Git にとって有用であることを示す、唯一のシナリオです。
http.postBuffer に関する質問
http.postBuffer
を設定することは有害ですか?
経験上、有害というよりは不要ですが、いくつかのネガティブな副作用もあります。
- 既定値よりも大きくすると、プッシュが大きくなり、待機時間が長くなる可能性があります (クライアントは HTTP 要求をより大きなチャンクにバッファーするため)。
- HTTP サーバーの HTTP チャンク サイズ制限を超えて設定した場合 (TFS サーバーの
maxAllowedContentLength
、maxRequestLength
、web.config
など)、チャンク サイズの制限を超えるプッシュはすべて失敗し始めます。
既に設定されている場合は、どのように http.postBuffer
の設定を解除しますか?
設定されているかどうかをチェックするには、次を実行します。
git config --show-origin --get-all http.postBuffer
両方のグローバル .gitconfig
ファイルで設定を解除する必要がある場合があります。
git config --global --unset http.postBuffer
また、リポジトリ レベル .git/config
でも同様に設定解除します (グローバル設定をオーバーライドします)。
git config --local --unset http.postBuffer
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示