🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.perl
3 messages
3 total messages Started by =?UTF-8?B?UGF3Zc Mon, 20 Jan 2014 20:56
non-blocking snmp
#51464
Author: =?UTF-8?B?UGF3Zc
Date: Mon, 20 Jan 2014 20:56
46 lines
1230 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
#51465
Author: "Stachu 'Dozzie'
Date: Mon, 20 Jan 2014 20:05
33 lines
1049 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
#51466
Author: =?ISO-8859-2?Q?P
Date: Tue, 21 Jan 2014 00:23
38 lines
1337 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