timeout в два раза длинее (Perl Net::SNMP)

Модератор: Модераторы разделов

Аватара пользователя
Stauffenberg
Сообщения: 2041
Статус: ☮ PEACE ☮
ОС: открытая и свободная

timeout в два раза длинее

Сообщение Stauffenberg »

Всем привет.

Может кто-то подскажет, почему timeout (один из параметров при создании snmp сессии) делает задержку ровно в 2 раза больше, чем нужно?

Код: Выделить всё

#!/usr/bin/perl

use Net::SNMP;

my $cpu = '1.3.6.1.2.1.25.2.3.1.3';
my $host = '10.199.11.11';
my $community = 'public';
my $timeout = 5;

my ($session, $error) = Net::SNMP->session (
-hostname => $host ,
-community => $community,
-timeout => $timeout,
);

$result = $session->get_table(-baseoid => $cpu);
my %bla = %{$result};
print "\n",%bla;

my $key;
foreach $key (keys %bla){ print ($key," : ",$bla{$key},"\n");
}


Я делаю запрос на какой-то несуществующий хост. В этом случае timeout должен быть вызван через 5 секунд, но в моем случае мне приходится ждать 10 секунд (задаешь 4, получаешь 8 и т.д.).

Код: Выделить всё

> time ./test.pl
real    0m10.219s
user    0m0.080s
sys     0m0.009s


Код: Выделить всё

> perl -v

This is perl, v5.10.1 (*) built for x86_64-linux-thread-multi

Copyright 1987-2009, Larry Wall

Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 5 source kit.

Complete documentation for Perl, including FAQ lists, should be found on
this system using "man perl" or "perldoc perl".  If you have access to the
Internet, point your browser at http://www.perl.org/, the Perl Home Page.


Благодарю за ответы.
Labor omnia vincit

"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.” (Brian Kernighan)
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21271
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: timeout в два раза длинее

Сообщение Bizdelnick »

Логично предположить, что код делает не один, а два запроса. Либо один дополнительный запрос делает конструктор (тогда добавление ещё одного get_table() увеличит время работы скрипта до 15 секунд), либо оба запроса делает get_table() (чтобы проверить, можно заменить его на get_request(), который по идее должен делать ровно один запрос).
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
Stauffenberg
Сообщения: 2041
Статус: ☮ PEACE ☮
ОС: открытая и свободная

Re: timeout в два раза длинее

Сообщение Stauffenberg »

Bizdelnick писал(а):
29.10.2015 19:47
Логично предположить, что код делает не один, а два запроса. Либо один дополнительный запрос делает конструктор (тогда добавление ещё одного get_table() увеличит время работы скрипта до 15 секунд), либо оба запроса делает get_table() (чтобы проверить, можно заменить его на get_request(), который по идее должен делать ровно один запрос).

Спасибо.

К сожаленью, замена на get_request() ничего не изменила в плане задержки. Каждый из них делает по 2 запроса, т.е. два вызова (вызванных один после другого) обрываются после timeout x 4.

Может кто-то знает как изменить код таким образом, чтобы для каждого вызова делался один snmp-запрос? Я пока думаю, что проблема все же в коде, а не в логике работы этого модуля.
Labor omnia vincit

"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.” (Brian Kernighan)
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21271
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: timeout в два раза длинее

Сообщение Bizdelnick »

Ну тогда надо включать дебаггинг и смотреть, что там происходит.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
Stauffenberg
Сообщения: 2041
Статус: ☮ PEACE ☮
ОС: открытая и свободная

Re: timeout в два раза длинее

Сообщение Stauffenberg »

Bizdelnick писал(а):
30.10.2015 14:42
Ну тогда надо включать дебаггинг и смотреть, что там происходит.

Я уже посмотрел - он действительно шлет два запроса, и это именно то, что мне не нужно (мне нужно один раз спросить один конкретный OID).
Буду читать мануал по Net:SNMP. Если кто сталкивался с подобной задачей/проблемой, не стесняйтесь оставлять комментарии... по теме.
Labor omnia vincit

"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.” (Brian Kernighan)
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21271
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: timeout в два раза длинее

Сообщение Bizdelnick »

Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали: