2

我需要用简单的 snmpget 查询询问 4000 台主机。我使用了带线程的 netsnmp 和带扭曲的 pynetsnmp,它工作得非常快(不到 1 分钟)。我尝试将 pysnmp 与 AsyncCommandGenerator 一起使用,并将 pysnmp 与 twisted 一起使用(我已使用 SnmpEngine 的一个实例修复了该示例)

花了10多分钟。难道我做错了什么?pysnmp 应该这么慢吗?

4

1 回答 1

3

编辑:添加了 pastebin 示例

请发布您当前版本的脚本。

在您引用的代码中,您可能会尝试优化一些:

addV1System()
addTargetParams()
addSocketTransport()

每当您使用相同的参数多次调用它们时调用它们。

换句话说,如果在您查询的 4000 个主机中,唯一的区别是主机的地址,那么您需要重复的唯一调用是 addTargetAddr()。否则,您在每个请求上重新配置 SNMP 引擎。

为了更好地估计 pysnmp 性能,您考虑运行以下配置有 4000 台主机的示例来进行查询。

如果您永远不需要 SNMPv3 并且性能是您的首要任务,您可能希望使用 pysnmp 的低级 API

但无论如何,就性能而言,您永远不会接近 C 实现。;-)

于 2013-10-22T07:43:48.933 回答