I'm using an older SNMP device which only supports SNMP v1. I have a number of similar devices and I've created a Zabbix template containing a bunch of items which specific OIDs. One device is missing a few OIDs because it has a different number of interfaces/ports/whatever.
Whenever Zabbix polls this OID, it gets a response from the SNMP server saying "I don't have that OID". Here's a tcpdump from the Zabbix server:
[will@zabbix2 ~]$ sudo tcpdump -ni eth0 ip host apl2-sensor1
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
14:02:38.086350 IP 10.30.0.19.60270 > 10.30.0.94.snmp: GetRequest(35) .22.214.171.124.4.1.38126.96.36.199.188.8.131.52.0
14:02:38.092946 IP 10.30.0.94.snmp > 10.30.0.19.60270: GetResponse(40) .184.108.40.206.4.1.38220.127.116.11.18.104.22.168.0=73
14:02:52.809796 IP 10.30.0.19.51029 > 10.30.0.94.snmp: GetRequest(36) .22.214.171.124.4.1.3126.96.36.199.188.8.131.52.3.4
14:02:52.815242 IP 10.30.0.94.snmp > 10.30.0.19.51029: GetResponse(40) noSuchName@1 .184.108.40.206.4.1.3220.127.116.11.18.104.22.168.3.4=
14:02:53.814905 IP 10.30.0.19.51029 > 10.30.0.94.snmp: GetRequest(36) .22.214.171.124.4.1.3126.96.36.199.188.8.131.52.3.4
This response makes Zabbix decide that the host is unreachable, and it stops polling all other OIDs on the system for a while. As soon as it polls an OID which exists, it re-enables the server.
Here's the corresponding Zabbix server log:
[will@zabbix2 ~]$ grep '20121204:1402.*apl2-sensor1' /var/log/zabbix/zabbix_server.log
994:20121204:140224.904 Disabling SNMP host [apl2-sensor1.oak]
995:20121204:140238.093 Enabling SNMP host [apl2-sensor1.oak]
979:20121204:140258.842 SNMP Host [apl2-sensor1.oak]: first network error, wait for 15 seconds
It seems that Zabbix is interpreting the "no such OID" response as "server down". Instead, it should mark that item not supported and continue polling all other times.