2012-10-31 24 views
0

我一直在使用mib2c.create-dataset.conf(啓用緩存) 在我snmd.conf :: agentXTimeout 15從主機沒有反應:snmpwalk的

在testtable.h文件中實現的AgentX我已經改變緩存值如下...

#define testTABLE_TIMEOUT  60 

根據我的理解它每60秒加載數據。 現在我的問題是,如果數據表中的數據超過了一定的數量,它需要一定的時間來加載它。

如在我之間如果我解僱了SNMPWALK,它給了我「沒有來自主機的響應」如果我使用SNMPWALK整個表,並且在發生testTABLE_TIMEOUT之間,它會在兩者之間停止並顯示以下錯誤(主機沒有響應)。 請告訴我如何解決它?在我的表格中,大量數據存在並且頻繁變化。

我讀了一些其中: (當代理接收到請求的東西在此表中和高速緩存是比所述定義的超時(12S> 10秒)更老,那麼它重新加載數據這是。 但是,代理程序不會在超時過期後自動釋放本地緩存(即調用'free'例程)。 而是通過定期的「垃圾收集」運行(每分鐘一次) ,這將釋放任何陳舊的緩存 同時,嘗試使用該緩存的請求會發現它已過期並重新加載數據。)

是否有一個這兩個之間的連接?我無法得到這個...如何解決我的問題?

+0

我真的無法識別,因爲它是緩存中的配置問題或代碼錯誤! –

+0

標籤「snmp4j」是否是一個錯誤?我在這個問題和snmp4j庫之間沒有看到任何連接。 – Jolta

回答

0

不幸的是,如果你的數據集非常大,並且需要很長時間才能加載,那麼你只需要承受緩慢的負載和緩慢的響應。您可以嘗試使用snmp_alarm或其他方式定期加載數據,以便在請求進入時立即可用,但這並不能真正解決問題,因爲請求可能在警報觸發後立即生效,並且代理仍然需要很長時間才能做出迴應。

所以...最好的辦法是儘可能優化您的加載例程,並且可能只是增加管理器使用的超時。例如,對於snmpwalk,您可能會在命令行參數中添加-t 30,我敢打賭,一切都會突然發生。

+0

我沒有任何問題,緩慢加載和緩慢的響應..我的問題是我想在每一個頻繁的時間...(例如,每60秒後)對整個數據做snmpwalk ...所以我可以只是用任何方法防止「主機沒有響應」,如果它會給我舊數據,並且在下一次snmpwalk調用時它會更新,這也是可以接受的。與超時60一樣,需要10秒才能更新緩存!所以在它之間它沒有迴應,是否有可能在那個時候返回舊的數據,並且在下一次調用時它會從緩存中返回數據......而它不會更新! –

+0

如果需要10秒來更新緩存,我認爲這是您需要修復的問題。或者,如果您可以在更短的時間內在給定MIB索引的情況下自己在數據中查找數據,那麼最快的做法是編寫您自己的處理程序,而不是使用其中一種數據緩存。但是......這很難,你必須知道更多。 –

+0

okey,這是可以接受的,但是如果數據很大,它會在以下兩個錯誤之間給出以下錯誤:packet.Error:(genError)發生一般故障Faild對象:XXX :: yyy.2012。你能幫助我嗎?因爲這個Subagent本身就停止了! –