主机没有响应:snmpwalk

主机没有响应:snmpwalk,snmp,net-snmp,snmp4j,snmpd,Snmp,Net Snmp,Snmp4j,Snmpd,我已经使用mib2c.create-dataset.conf(启用缓存)实现了AgentX 在my snmd.conf::agentXTimeout 15 在testtable.h文件中,我更改了缓存值,如下所示 #define testTABLE_TIMEOUT 60 据我了解,它每60秒加载一次数据。 现在我的问题是,如果数据表中的数据超过某个数量,则需要花费一定的时间来加载它 在这两者之间,如果我启动SNMPWALK,它会给我“主机没有响应”,如果我对整个表使用SNMPWA

我已经使用mib2c.create-dataset.conf(启用缓存)实现了AgentX 在my snmd.conf::
agentXTimeout 15

在testtable.h文件中,我更改了缓存值,如下所示

#define testTABLE_TIMEOUT        60
据我了解,它每60秒加载一次数据。 现在我的问题是,如果数据表中的数据超过某个数量,则需要花费一定的时间来加载它

在这两者之间,如果我启动SNMPWALK,它会给我“主机没有响应”,如果我对整个表使用SNMPWALK,在这两者之间,testTABLE\u超时发生,它会在这两者之间停止,并显示以下错误(主机没有响应)。 请告诉我怎么解决?在我的表格中,存在大量数据,并且经常更改

我在那里读了一些书: (当代理收到此表中某个内容的请求,并且缓存的时间早于定义的超时时间(12s>10s),则它会重新加载数据。这是预期的行为。 但是,代理不会在超时过期后立即自动释放本地缓存(即调用“空闲”例程)。 相反,这是由一个常规的“垃圾收集”运行(每分钟一次)来处理的,它将释放所有过时的缓存。 同时,尝试使用该缓存的请求将发现该缓存已过期,并重新加载数据。)


这两者之间有什么联系吗??我不能得到这个。。。如何解决我的问题?

不幸的是,如果您的数据集非常大,并且加载需要很长时间,那么您只需要忍受缓慢的加载和缓慢的响应。您可以尝试使用
snmp\u alarm
或其他方法定期加载数据,以便在收到请求时数据立即可用,但这也不能真正解决问题,因为在触发报警后请求仍可能立即出现,并且代理仍需很长时间才能响应


所以。。。最好的做法是尽可能优化加载例程,并可能简单地增加管理器使用的超时时间。例如,对于
snmpwalk
,您可以将
-t30
添加到命令行参数中,我打赌一切都会突然正常工作。

我真的无法识别,因为这是缓存中的配置问题或代码错误!!标签“snmp4j”是错误的吗?我看不出这个问题和snmp4j库之间有任何联系。我对慢加载和慢响应没有任何问题。我的问题是我想在每次频繁的时间之后做snmpwalk。。。(例如每60秒后)对整个数据。。。因此,我可以用任何方法防止“主机无响应”,如果它将给我旧数据,并且在下一次调用snmpwalk时更新,这也是可以接受的。与超时60一样,更新缓存需要10秒!!!所以在两次调用之间,它不返回响应,是否有可能在那个时候返回旧数据,然后在下一次调用时从缓存返回数据。。。虽然它没有更新!!!如果更新缓存需要10秒钟,我认为这是您需要解决的问题。或者,如果您可以在给定有问题的MIB索引的情况下在数据中自己查找数据,那么最快的方法就是编写自己的处理程序,而不是使用数据缓存处理程序。但是更难的是,你必须知道更多。好的,这是可以接受的,但是如果数据量很大,它有时会在两者之间出现以下错误:数据包错误。原因:(genError)发生一般故障Faild对象:XXX::yy.2012。你能帮我吗?因为这个子代理本身停止了!!!您需要一个调试器来找出GenerError案例。一般来说,这是不应该发生的,所以有些奇怪,我可以用两个单独的代码来分割它吗?表示一个代码从oid…1.1到…1.1000返回值,然后第二个代码从…1.1001到…1.2000返回表值?像怀斯?所以我假设在一列中只添加1000行,然后在第二个文件中添加下一行。第二个程序可以读取哪一行。。。。?