Google Grupper støtter ikke lenger nye Usenet-innlegg eller -abonnementer. Historisk innhold er fortsatt synlig.

non-blocking snmp

Sett 23 ganger
Hopp til første uleste melding

Paweł

ulest,
20. jan. 2014, 14:56:4220.01.2014
til
piszę skrypt odpytujący po SNMP kilka tysięcy hostów. używam biblioteki
net-snmp-perl, sesje snmp puszczam w trybie non-blocking. wszystko
działa pięknie ale chciałbym ograniczyć liczbę równolegle uruchomionych
sesji snmp. osiągam limit na ilość otworzonych plików i 1019 sesja już
się nie tworzy.

w tej chwili mam coś mniej więcej

while(są jeszcze hosty do zbadania) {
pobierz z bazy dane następnego hosta
stwórz dla niego obiekt SNMP::Session
odpal session->get
}

chciałbym raczej

while (są jeszcze hosty do zbadania) {
jak jest już uruchomionych LIMIT sesji poczekaj
pobierz z bazy dane następnego hosta
stwórz dla niego obiekt SNMP::Session
odpal session->get
}

jakiś pomysł jak to osiągnąć?

skłaniam się do
a) pobrać z bazy wszystkie hosty, wrzucić je w jakiegoś hasza i w pętli
while(są w haszu jeszcze hosty do zbadania) {
if jestem poniżej limitu {
monitoruj host
wyjmij hosta z hasza
}
else continue
}

ta pętla powinna mi w końcu zbadać wszystkie hosty

ewentualne pomysł b)

pobrać z bazy hosty paczkami, najpierw pierwsze 400, potem drugie 400,
itd. uruchomić pomiary snmp dla pierwszej paczki, jak cała się skończy
dla drugiej, itd,


--
Paweł

Stachu 'Dozzie' K.

ulest,
20. jan. 2014, 15:05:5420.01.2014
til
On 2014-01-20, Paweł <j...@nie.doczekal> wrote:
> piszę skrypt odpytujący po SNMP kilka tysięcy hostów. używam biblioteki
> net-snmp-perl, sesje snmp puszczam w trybie non-blocking. wszystko
> działa pięknie ale chciałbym ograniczyć liczbę równolegle uruchomionych
> sesji snmp. osiągam limit na ilość otworzonych plików i 1019 sesja już
> się nie tworzy.

ulimit -n, /etc/security/limits.conf

> w tej chwili mam coś mniej więcej
[...]
> chciałbym raczej
>
> while (są jeszcze hosty do zbadania) {
> jak jest już uruchomionych LIMIT sesji poczekaj
> pobierz z bazy dane następnego hosta
> stwórz dla niego obiekt SNMP::Session
> odpal session->get
> }
>
> jakiś pomysł jak to osiągnąć?

Pula wątków?

Możesz obejrzeć jak ja to zrobiłem (na procesach) dla połączeń XML-RPC
w skrypcie xmlrpcaller: http://dozzie.jarowit.net/git?p=xmlrpcd.git
Chociaż ten kod generalnie jest brzydki.
Interesuje cię funkcja multicall() i pakiety Worker::Spool
i Worker::Spool::Child zdefiniowane pod koniec xmlrpcallera.

--
Secunia non olet.
Stanislaw Klekot

Paweł

ulest,
20. jan. 2014, 18:23:5720.01.2014
til
W dniu 20.01.2014, 21:05, Stachu 'Dozzie' K. pisze:
> On 2014-01-20, Paweł <j...@nie.doczekal> wrote:
>> piszę skrypt odpytujący po SNMP kilka tysięcy hostów. używam biblioteki
>> net-snmp-perl, sesje snmp puszczam w trybie non-blocking. wszystko
>> działa pięknie ale chciałbym ograniczyć liczbę równolegle uruchomionych
>> sesji snmp. osiągam limit na ilość otworzonych plików i 1019 sesja już
>> się nie tworzy.
>
> ulimit -n, /etc/security/limits.conf
>
urządzeń jest coś 40 000. nie chcę aż tak limitów zwiększać.
>> w tej chwili mam coś mniej więcej
> [...]
>> chciałbym raczej
>>
>> while (są jeszcze hosty do zbadania) {
>> jak jest już uruchomionych LIMIT sesji poczekaj
>> pobierz z bazy dane następnego hosta
>> stwórz dla niego obiekt SNMP::Session
>> odpal session->get
>> }
>>
>> jakiś pomysł jak to osiągnąć?
>
> Pula wątków?
>
> Możesz obejrzeć jak ja to zrobiłem (na procesach) dla połączeń XML-RPC
> w skrypcie xmlrpcaller: http://dozzie.jarowit.net/git?p=xmlrpcd.git
> Chociaż ten kod generalnie jest brzydki.
> Interesuje cię funkcja multicall() i pakiety Worker::Spool
> i Worker::Spool::Child zdefiniowane pod koniec xmlrpcallera.
>
pula wątków nie rozwali mi non-blocking snmp? czekania w
SNMP::MainLoop(); na koniec przetwarzania, i SNMP::finish(); w
procedurze callback w session->get() ?

--
Paweł
0 nye meldinger