Experiência em escrever pesquisas assíncronas para dispositivos de rede

A ideia básica por trás da votação assíncrona

A assincronia permite aumentar muito o paralelismo do trabalho. No caso de comunicação de rede e recuperação SNMP, os tempos de espera pelas respostas são longos, o que permite ao programa fazer algo útil até que a resposta chegue.





Existem maneiras "síncronas" de implementar o paralelismo - forks, threads. É fácil do ponto de vista de escrever um programa, mas é muito “caro” em termos de recursos do sistema operacional.





Um pouco de matemática

A matemática será de engenharia e aproximada, precisão de 20%





Eu queria pesquisar 100 mil dispositivos usando 100 métricas e pesquisar cada dispositivo uma vez a cada 5 minutos , com uma margem de uma vez por minuto.  





Ou seja, você precisa disparar 10 milhões de métricas por minuto ou 150 mil por segundo.  Vou arredondar para 100 mil métricas por segundo.





A pesquisa de uma métrica leva cerca de 5 ms: 4 ms para o dispositivo, + 1 ms para o processamento.





Isso significa que um encadeamento síncrono pode processar 200 métricas por segundo, ou 500 encadeamentos síncronos são necessários. Muito realista.





(Tudo, fim, não há mais nada a escrever)





Na verdade, este é apenas o começo. O truque não está na idealidade do mundo, mas na perda de respostas às solicitações. As perdas ocorrem devido à perda de tráfego ou inacessibilidade de dispositivos.





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, , - :





:





Primeira implementação de sondagem paralela

, . , , , , -.





– – 2 , . :





Esperar pelos tempos limite é enorme em comparação com as respostas normais

, 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