2013-10-22 4 views
1

간단한 snmpget 쿼리로 4000 호스트에 요청해야합니다. 나는 thread와 함께 netsnmp를 사용했고 twisted와 함께 pynetsnmp를 사용했고 꽤 빠릅니다 (1 분 미만). AsyncCommandGenerator와 함께 pysnmp를 사용하려고 시도했으며 pysnmp with twisted (i've fixed that example with one instance of SnmpEngine)왜 async pysnmp가 느린가요?

그리고 10 분 이상 걸렸습니다. 내가 뭐 잘못하고 있니? pysnmp가 너무 느려야합니까?

답변

3

편집 : 페이스트 빈 예는 스크립트의 현재 버전을 게시하시기 바랍니다

을 추가했다. 당신의 일부를 최적화하려고 할 수 있습니다 당신을 참조 코드에서

: 동일한 인수 한 후 한 번 더 그들에게 전화 할 때마다

addV1System() 
addTargetParams() 
addSocketTransport() 

전화.

즉, 4000 호스트 중 쿼리하는 호스트의 주소가 유일한 경우 addTargetAddr() 만 반복하면됩니다. 그렇지 않으면 모든 요청에 ​​대해 SNMP 엔진을 다시 구성합니다.

pysnmp 성능을 더 정확하게 예측하려면 4000과 함께 구성된 the following example을 실행하여 쿼리하는 호스트를 고려하십시오.

SNMPv3을 필요로하지 않고 성능이 우선 순위 인 경우 pysnmp의 low-level API을 사용할 수 있습니다.

그러나 어떤 경우에도 성능면에서 C 구현에 가까이 가지 않을 것입니다. ;-)

+0

여기에 간단한 코드를 게시 할 수 있습니까? 그것은 비동기 (트위스트가 더 좋을 것임)이고 get 쿼리를 사용하여 4000 호스트에게 요청해야합니다. 원하는 oid를 사용할 수 있습니다. 버전은 v2c입니다. 나는 그것을 시도하고 결과를 알게 될 것이다. – kalombo

+1

http://pastebin.com/wMjvmxLV를 참조하십시오. 내 시스템에서는 5 초 만에 1000 개의 쿼리를 완료합니다. 내 로컬 에이전트는 더 많은 쿼리를 허용하지 않으므로 4000 호스트를 시도 할 수 없습니다. 위의 스크립트에 4000 호스트를 구성하고 사용해보십시오. – Pooh

+0

30 초 내에 4000 개의 쿼리를 완료했습니다. 또한 나는 꼬인으로 pysnmp를 시도했습니다. 55 초가 걸렸습니다. [코드] (http://pastebin.com/YaD8dZLm)가 있습니다. 왜 꼬인 시간이 AsynCommandGenerator 시간보다 길습니까? 올바른 코드입니까? – kalombo