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