我使用mib2c.create-dataset.conf实现了AgentX(启用了缓存)
在我的snmd.conf :: agentXTimeout 15
在testtable.h文件中,我更改了缓存值,如下所示......
#define testTABLE_TIMEOUT 60
根据我的理解,它每60秒加载一次数据。 现在我的问题是,如果数据表中的数据超过某个数量,则加载它需要一些时间。
如同之间如果我解雇了SNMPWALK它给了我“主机没有响应”如果我对整个表使用SNMPWALK,并且在testTABLE_TIMEOUT之间发生,它在两者之间停止并显示以下错误(主机没有响应)。 请告诉我怎么解决?在我的表中,存在大量数据并且经常变化。
我读了一些地方: (当代理收到此表中某些内容的请求且缓存早于定义的超时(12s> 10s)时, 重新加载数据。这是预期的行为。 但是,一旦超时到期,代理就不会自动释放本地缓存(即调用'free'例程)。 相反,这是通过定期的“垃圾收集”运行(每分钟一次)来处理的,这将释放任何过时的缓存。 在此期间,尝试使用该缓存的请求将发现它已过期,并重新加载数据。)
这两者之间有什么联系吗?我不能得到这个...如何解决我的问题???
答案 0 :(得分:0)
不幸的是,如果您的数据集非常大并且需要很长时间才能加载,那么您只需要承受缓慢的负载和缓慢的响应。您可以使用snmp_alarm
或其他东西定期加载数据,以便在请求进入时立即可用,但这并不能解决问题,因为请求仍然可以在警报发生后立即生效触发后,代理人仍需要很长时间才能做出回应。
所以......最好的办法是尽可能地优化你的加载例程,并且可能只是增加管理器使用的超时。例如,对于snmpwalk
,您可以将-t 30
添加到命令行参数中,我打赌一切都会突然正常工作。