ネットワーク デバイスの非同期ポーリングの作成経験

非同期ポーリングの背後にある基本的な考え方

非同期により、作業の並列性を大幅に向上させることができます。ネットワーク通信と SNMP 検索の場合、応答の待機時間が長いため、プログラムは応答が到着するまで何か役に立つことができます。





並列処理を実装する「同期」方法があります - フォーク、スレッド。プログラムを書くという観点からは簡単ですが、OSのリソース的には非常に「高価」です。





少し数学

数学は工学的で概算で、精度は 20% です。





100 のメトリック使用して 100,000台のデバイスポーリングし、各デバイスを5 分ごとに 1 回、1 分に 1 回のマージンでポーリングしたかったのです。  





つまり、1 分あたり 1000 万メトリクスまたは1 秒あたり 150,000 メトリクスを撮影する必要があります  1 秒あたり 100,000 メトリクスまで切り上げます。





1 つのメトリックのポーリングには約 5 ミリ秒かかります。デバイスの場合は 4 ミリ秒、処理の場合は 1 ミリ秒です。





これは、1 つの同期スレッドで 1 秒あたり 200 のメトリックを処理できる、つまり 500 の同期スレッドが必要であることを意味します。かなりリアル。





(全部、終わり、これ以上書くことはない)





実際、これはほんの始まりに過ぎません。トリックは、世界の理想ではなく、リクエストへの応答の喪失にあり、トラフィックの喪失やデバイスへのアクセス不能が原因で損失が発生します。





2 , «» 2000









3% . – , , .





, 3% 2000.





c 15,5 .





, 5 , 95 . , 125 800 . , .





– __ . – 800 , , .





, 3%, 20% 100% ?





,





– ,  – « X .   , 10 , , 2 ».





, , 45%, 99% .





: 100% . , , 30 ?  - 7 .









, , , Shared Memory . SNMP Net-SNMP





– ,





1 : « – , »

, ?





SNMP, , SNMP, , - :





:





並列ポーリングの最初の実装

, . , , , , -.





– – 2 , . :





通常の応答と比較して、タイムアウトの待機は膨大です

, 100- .





– , , .





«» .





:





2 : «- »

, , . . . - , .





. : .





2-3 3-4 , .





, , . , .





3 : « »

, . , SNMP UDP .





, :





, , , , .





3.5 : « , »

«» . . .





.





, . ,   3-4 2-4 .





– , - . . : , , , Net:SNMP.





, 60-70 . , , .





4 : « , »

, «» , .





4 , – , . , – .  





4.0 , «» . :





– – – , , .





- . SNMP, 48 .





- . 2 100% 15 30 720 ! 30 48 .





, , , – IP RAW socket.





120-140 .





30-40 , , 50% . 





:

1 4 2 . 2-3 -.





?





- « ».  





, .





, 15 , «».





, - . – .





.








All Articles