Thread View: pl.comp.lang.perl
3 messages
3 total messages
Started by Paweł
Mon, 20 Jan 2014 19:56
non-blocking snmp
Author: Paweł
Date: Mon, 20 Jan 2014 19:56
Date: Mon, 20 Jan 2014 19:56
46 lines
2056 bytes
2056 bytes
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ł
Re: non-blocking snmp
Author: Stachu 'Dozzie' K.
Date: Mon, 20 Jan 2014 20:05
Date: Mon, 20 Jan 2014 20:05
33 lines
2288 bytes
2288 bytes
On 2014-01-20, Paweł <jas@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
Re: non-blocking snmp
Author: Paweł
Date: Mon, 20 Jan 2014 23:23
Date: Mon, 20 Jan 2014 23:23
38 lines
2343 bytes
2343 bytes
W dniu 20.01.2014, 21:05, Stachu 'Dozzie' K. pisze:
> On 2014-01-20, Paweł <jas@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ł
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads