我需要用簡單的snmpget查詢來請求4000個主機。我用線程和pynetsnmp與扭曲的netsnmp,它工作得很快(少於1分鐘)。我試圖用AsyncCommandGenerator和pysnmp with twisted (i've fixed that example with one instance of SnmpEngine)爲什麼async pysnmp這麼慢?
使用pysnmp並花了超過10分鐘。難道我做錯了什麼? pysnmp應該這麼慢嗎?
我需要用簡單的snmpget查詢來請求4000個主機。我用線程和pynetsnmp與扭曲的netsnmp,它工作得很快(少於1分鐘)。我試圖用AsyncCommandGenerator和pysnmp with twisted (i've fixed that example with one instance of SnmpEngine)爲什麼async pysnmp這麼慢?
使用pysnmp並花了超過10分鐘。難道我做錯了什麼? pysnmp應該這麼慢嗎?
編輯:添加了pastebin示例
請發佈您的當前版本的腳本。
在你指的是你可以嘗試優化了一些代碼:只要你使用相同的參數調用它們,曾多次
addV1System()
addTargetParams()
addSocketTransport()
電話。
換句話說,如果在您查詢的4000個主機中唯一的區別是主機的地址,那麼您需要重複的唯一調用是addTargetAddr()。否則,您可以在每個請求上重新配置SNMP引擎。
爲了更好地估計pysnmp性能,您考慮運行配置有4000個主機的the following example以查詢。
如果您從不需要SNMPv3並且性能是您的首選,那麼您可能希望使用pysnmp的low-level API。
但無論如何,在性能方面你絕不會接近C實現。 ;-)
你可以在這裏發佈簡單的代碼嗎?它應該是異步的(扭曲會更好),並要求查詢4000個主機。你可以使用你喜歡的任何oid。版本是v2c。我會嘗試一下並注意結果。 – kalombo
請參閱http://pastebin.com/wMjvmxLV。在我的系統上,它在5秒內完成1000次查詢。我的本地代理不接受更多的查詢,所以我不能嘗試4000個主機。因此,將4000臺主機配置到上面的腳本中並嘗試一下。 – Pooh
它在30秒內完成了4000個查詢。我也試過用扭曲的pysnmp。花了55秒。有一個[code](http://pastebin.com/YaD8dZLm)。爲什麼扭曲時間超過AsynCommandGenerator時間?它是正確的代碼? – kalombo