Fpolicy EAGAIN エラーとは何ですか? また、いつ発生しますか?
環境
ONTAP 9
回答
EAGAINエラーは、LIFとFPolicyサーバ間の特定のTCPセッションに割り当てられた送信バッファまたは受信バッファがいっぱいになり、送信要求または受信応答のための空き領域がなくなった場合に発生します。バッファは、要求への応答、またはONTAPによってバッファから応答が取り出されると空になります。EAGAINが発生すると、そのSVMからそのFPolicyサーバへの巻き戻し動作がトリガーされます。この巻き戻し/遅延動作は、ONTAPのバージョンによって異なります。
- バグ 1372994 の修正がないバージョン:
- ONTAP は、その TCP セッションでの fpolicy 要求を 2 秒間一時停止し、再開時にキューに入れられた要求の送信を開始します。
- バグ 1372994 の修正を含むバージョン:
- 最初の試行では、ONTAP は 1 ミリ秒後に要求を再試行します。同じ要求で再度 EAGAIN が発生した場合、ONTAP は 100 ミリ秒ごとに最大 2 秒間再試行を続け、タイムアウト前に要求をバッファに追加できない場合はソケットを閉じます。切断前に要求をバッファに追加できた場合、プロセスは次の EAGAIN 発生時に 1 ミリ秒の遅延タイマーに戻ります。
エラーの例:
- EMSまたは
event log show
:
[filer1: fpolicy: fpolicy.eagain.on.write:notice]: Write returned EAGAIN while sending notification to the FPolicy server "1.2.3.4" for vserver ID 3.
fpolicy-mlogs:
Fpolicy.log reports errors pertaining to EAGAIN errors similar to the following:
[kern_fpolicy:error:1552] Write returned EAGAIN[35] [0x0x80c408d00] src/fsm/fsm_external_engine.cc:864
バグ 1479704の修正バージョンでは、上記のフローの動作が拡張されました。
- 完全なフローが完了して切断が発生した場合、2 分間のタイマーが開始されます。
- 2 分タイマー内に EAGAIN による切断が 4 回発生すると、FPolicy サーバーは永続的に切断され、EMS イベントがトリガーされます。
EMS の詳細: fpolicy.eagain イベント