我需要使用简单的snmpget查询来询问4000个主机。我使用带有线程的netsnmp和带有扭曲的pynetsnmp,它工作得非常快(少于1分钟)。我尝试将pysnmp与AsyncCommandGenerator和pysnmp with twisted (i've fixed that example with one instance of SnmpEngine)
一起使用花了10多分钟。难道我做错了什么? pysnmp应该这么慢吗?
答案 0 :(得分:3)
编辑:添加了pastebin示例
请发布您当前的脚本版本。
在您提到的代码中,您可能会尝试优化以下内容:
addV1System()
addTargetParams()
addSocketTransport()
每次使用相同的参数调用它们时,都会调用它们。
换句话说,如果您查询的4000个主机中唯一的区别是主机的地址,那么您需要重复的唯一调用是addTargetAddr()。否则,您将在每次请求时重新配置SNMP引擎。
为了更好地估计pysnmp性能,您考虑运行the following example配置了您要查询的4000个主机。
如果您永远不需要SNMPv3且性能是您的首选,您可能希望使用pysnmp的low-level API。
但无论如何,就性能而言,你永远不会接近C实现。 ; - )