Hello,

I've run into a strange problem where a huge number of messages from 
snmplib are managing to fill up a 60GB hard drive within about three 
hours. The messages are all "Use snmp_sess_select_info2() for processing 
large file descriptors", sometimes repeated over a hundred times per 
line. I'm still working with the customer to figure out how to reproduce 
this, but I thought I'd ask here in case it was an old issue or, at 
least, seen by somebody else in some fashion.

Here's the basic system info: 8.1-RELEASE-p2 FreeBSD i386. The NET-SNMP 
version is 5.5.

Below is a simplified snippet of the key parts of my code. The code 
first makes a list of tasks with initialized, but not open, sessions. 
Elsewhere, each task, up to a small limit (64 in this case), is forked 
and the children open the SNMP session sockets with snmp_open(), and so 
on. I've scoured each of set(), get(), and getnext(), and am sure that 
they all call snmp_close() appropriately — there aren't any early 
returns or other jumps over those calls — so I don't think that I'm 
explicitly leaking any sockets, but descriptors must be hanging around 
for some reason. Does this ring any bells for anybody?

for(…){
…
snmp_sess_init(&task->sess_info);
addtask(taskList, task);
…
}

…

for(task = taskList; task && nkids < maxkids; task = task->next){
if(fork() == 0){
set(task);
get(task);
getnext(task);
…
}
nkids++;
}

void set(Task *task){
…
sess = snmp_open(&task->sess_info);
…
pdu = snmp_pdu_create(SNMP_MSG_SET);
…
status = snmp_synch_response(sess, pdu, &resp);
// check return, retr
snmp_close(sess);
}

void get(Task *task){
…
sess = snmp_open(sess_info);
…
pdu = snmp_pdu_create(SNMP_MSG_GET);
…
status = snmp_synch_response(sess, pdu, &resp);
// check return, read variables
snmp_close(sess);
}

void getnext(Task *task){
…
sess = snmp_open(sess_info);
for(obj = task->objs; obj; obj = obj->next){
…
pdu = snmp_pdu_create(SNMP_MSG_GET);
…
status = snmp_synch_response(sess, pdu, &resp);
// check return, read variables
}
snmp_close(sess);
}


------------------------------------------------------------------------------
Virtualization & Cloud Management Using Capacity Planning
Cloud computing makes use of virtualization - but cloud computing 
also focuses on allowing computing to be delivered as a service.
http://www.accelacomm.com/jaw/sfnl/114/51521223/
_______________________________________________
Net-snmp-users mailing list
[email protected]
Please see the following page to unsubscribe or change other options:
https://lists.sourceforge.net/lists/listinfo/net-snmp-users

Reply via email to