[SNMP4J] Statistics about number of retries and snmp request times

Frank Fock fock at agentpp.com
Fri Jan 29 02:25:27 CET 2016


Hi Michal,

The request wait time can be used with the snmpOutPkts counter to 
determine the last and
the average wait time.

Regarding the retries, you never can determine whether a retry was 
necessary or not,
because you will never know if the agent got the initial request or not 
(except probably
when using connection oriented transport).

Thus, if you encounter retries but no timeouts, then you should increase 
the timeout value
(if possible). On the other hand timeouts are more worse than retries.

The sizes of the SNMP messages can be fetched from the transport 
listener. PDU types
from the snmpOutGetRequests, snmpOutGetNexts, etc.

So it is all about the collect the information and combine it.

Best regards,
Frank

Am 27.01.2016 um 12:26 schrieb MichaƂ Steiner:
> Hi Frank
>
> Thanks for all those changes. It looks  promising
>
> My remarks:
>
>
> snmp4jStatsRequestWaitTime - it's a total number so if  there were 
> retries then it will be a sum of all response times (+ some overhead) 
> . Having only this I cannot say how long I waited for last single 
>  successful  request.  It could  be more or less calculated using   
> timeout, max retries and TimeoutModel logic, but it is complicated and 
> requires knowledge of timeoutmodel. I'm not saying it is not useful 
> data, but it would be great if I have also more detailed information.  
> This information is there, it is only question how to publish it.  
> Maybe it would be possible to use currentValue fleid on  CounterEvent 
>  ?  snmp4jStatsRequestWaitTime event could have total time of request 
> on currentValue, and time of last successful request on increment field ?
>
>
> snmp4jStatsRequestRetries - it is event about retry, using it I can 
> count how many retries was on given address, (including timeouts ) but 
> I cannot say how many retries was required for getting each response.  
> I need this data to create histogram (to know for example that 90% of 
> requests was responded after x retries etc).  So my proposal is lets 
> move sending snmp4jStatsRequestRetries event  code to responseReceived 
>   method and instead putting 1 in event lets put there: 
> target.getRetries() - retryCount
>
>
> And one more remark.  CounterEvent doesn't give you possibility to 
> send info about PDU - size and type. This data has big impact on times 
> and retries number. I'm worrying that putting single OID requests into 
> one bag with big bulk requests will make this stats not very useful.
>
> That is why I would prefer dedicated stats events :
>
> ResponseReceived {
> int numberOfRetries: // number of retries - 0 means response after 
> first time
> int totalWaitTime; //total time
> int lastWaitTime; //time only for successful request
> Target target;
> int requestSize; //number of oids
> int requestType; //GET, SET or what
> }
> ResponseReceived  should be send from responceReceived method
>
> RequestTimeout {
> Target target;
> int requestSize; //number of oids
> int requestType; //GET, SET or what
> }
>
> RequestTimeout  should be send from responceReceived method
>
> What do you think ?
>
>
> Michal
>

-- 
---
AGENT++
Maximilian-Kolbe-Str. 10
73257 Koengen, Germany
https://agentpp.com
Phone: +49 7024 8688230
Fax:   +49 7024 8688231




More information about the SNMP4J mailing list