近期做一个项目 用到snmp协议 在debian装上snmp和snmptrap trap信息用php接收再插入到mysql的四个表中 测试用shell做了一个循环发2000条信息到trap 但是只接收到了1600多条(测试1000条不会丢包)因为snmp数据交换用的是基于udp协议 大家有没有更好的办法 使之不丢包而且效率最好 (只要运行shell脚本 mysql的cpu占用率就会彪到150%甚至更高 看得心惊胆颤的....)

解决方案 »

  1.   

    udp 本来就是非面对ip的,出现掉包,安全性低之类是他的特点。你要的是tcp这个协议
      

  2.   

    本帖最后由 xuzuning 于 2012-05-28 16:57:38 编辑
      

  3.   

    我们用的是1u的测试服务器 我实用top查看的 确实cpu占用率在150%啊改用tcp协议....给个思路吧 老大
      

  4.   

    SNMP在UDP、IP及有关的特殊网络协议(如,Ethernet, FDDI, X.25)之上实现。协议就这样,是不是没法改,毕竟我看了是网络监控管理的,不广播就没法监控管理了。
      

  5.   

    2000条信息是多长时间内产生的?
    需要全部保存到mysql?
    如果信息又快又多...mysql表示亚历山大....
      

  6.   

    是用shell脚本写的循环发的hostNum=460010002742014;
    until((hostNum>=460010002743214))
    do
      let hostNum+=1
      snmptrap -v 2c -c public 192.168.0.4 "" .1.3.6.1.4.1.31383.2.2.5 .1.3.6.1.4.1.31383.2.2.5 s "$hostNum"
    done
    是需要全部保存到mysql中的 分别插入到四个表中.....
      

  7.   

    php接收端$stdin = fopen('php://stdin', 'r');
    $hostname = trim(fgets($stdin, 4096)) or die("Could not get hostname");
    $ipaddr = trim(fgets($stdin, 4096)) or die("Could not get IP");
    ......