SNMP4J实时获取CPU信息的时间间隔

東刀人 发布于 2012/12/21 16:57
阅读 2K+
收藏 0

@xu_zhike1979 你好,想跟你请教个问题:请问SNMP4J实时获取CPU等信息的时间间隔如何设置?是根据它上次获取的时长长短来决定的吗?小弟就是上次问你的那个问题,做了一个用SNMP4J获取CPU等信息的一个小程序,现在已经能获取到CPU信息了,现在想实现让它间隔几秒来让它开启一个线程实时获取CPU信息值,但是它每次获取一次更新的很慢,得一分钟左右了吧,所以不好设置时间间隔,求教大哥赐教一下,十分感谢!!!

以下是问题补充:

@JavaOlder:大神。你哪里有SNMP4J调通的例子么? (2013/04/19 11:36)
加载中
0
狐狸糊涂
狐狸糊涂

照你的意思,应该是通过SNMP协议去获取设备上MIB库中关于CPU的信息。SNMP无法做到真实时,一般是通过SNMP Polling或者设备向你的app发Trap的方式。 建议先大概估计一下每一次polling回来大概需要多长时间,然后根据这个时间设置一个轮询的控制。 

狐狸糊涂
狐狸糊涂
@東刀人 看看对方提供的MIB库是如何描述的,如果是对方有更新间隔的话,你是么有办法更改的。或许他们有提供其他MIB让你来达到你的要求。
東刀人
東刀人
回复 @狐狸糊涂 : 这个间隔就是我不断的请求最新信息,但是新数据要等一段时间才能得到,界面上才能显示出来更新过来的,与我请求的频率没关系好像是,它好像自身就有一个间隔,过了那个时间它才会返回信息给你,但是它返回数据的间隔长短不一,我无法设定请求的频率间隔的时长。
狐狸糊涂
狐狸糊涂
@東刀人 你说的间隔是你自己轮询的间隔还是设备端更新的间隔?
東刀人
東刀人
大侠你好啊,这个时间它每次间隔都不太一样,有时候感觉不到一分钟,有时看都过了好几分钟了,这个真不会断点,不知道它有什么好的方法等获取到实时,或者说最少要等多少时间才可以获取第二次。
0
取什么昵称才有逼格呢
取什么昵称才有逼格呢

狐狸糊涂说的很对,SNMP无法做到实时。即使是windows 上的CPU,内存使用那个图也不算是实时的,都有一定延迟的。

我不是很明白你说的更新很慢,是发送请求出去后需要等很久才收到响应还是其他的慢?而且还要考虑设备那边真正去获取CPU信息的程序是怎么响应你的请求的?有可能人家就不想太频繁给你这样的信息,即使你的请求频率很高。这一切都依赖于真正去获取你需要的信息的程序。

0
東刀人
東刀人

引用来自“xu_zhike1979”的答案

狐狸糊涂说的很对,SNMP无法做到实时。即使是windows 上的CPU,内存使用那个图也不算是实时的,都有一定延迟的。

我不是很明白你说的更新很慢,是发送请求出去后需要等很久才收到响应还是其他的慢?而且还要考虑设备那边真正去获取CPU信息的程序是怎么响应你的请求的?有可能人家就不想太频繁给你这样的信息,即使你的请求频率很高。这一切都依赖于真正去获取你需要的信息的程序。

您好啊,我说的更新很慢是我写了一个线程嘛,它不断的去获取CPU的信息,可是界面上的信息它的更新隔了好久才更新一下,这个线程呢是不停的调用获取CPU信息的方法,我就想呢如何能让界面上间隔几秒钟就更新一次,显示最新的CPU信息,这个间隔时间我可以通过界面来设置,系统通过我输入的间隔值让它根据这个间隔时间来不断的更新获取,意思就是这样,不知道这个是否有实现的方法呢,或者是获取一次它最少要间隔多久才能获取第二次,我也好来设置间隔时间让它输入最少间隔的时长,请大侠赐教!!!
0
取什么昵称才有逼格呢
取什么昵称才有逼格呢

我还是不是很明白你的意思,如果这样子的话,我的做法是:

不需要界面,直接在IDE里面写测试线程,通过在主线程里面起一个timer线程,让该线程每隔几秒去获取CPU信息,看从发起请求到数据返回这个时间多长。多测试几次,如果每次很快就返回的话,那么就表明问题不是出现在获取CPU信息的时间过长,而是该线程和你的界面主线程之间的交互,或者设计有问题。


0
取什么昵称才有逼格呢
取什么昵称才有逼格呢

在Swing中,只有从事件派发线程才能更新组件,你可以参考下面blog的介绍。

http://zhuixue.iteye.com/blog/392323

或许你的问题是你获取CPU的线程自己去更新了组件。

0
取什么昵称才有逼格呢
取什么昵称才有逼格呢
而关于周期性任务,一是可以采用jdk自带的timer,二是可以用quartz.都可以实现你的要求
0
寻花不问柳

请问获取系统时间之后,如何转换格式呢?比如:

.1.3.6.1.2.1.25.1.2.0 得到结果:07:dd:05:14:11:1e:33:03

東刀人
東刀人
07:dd:05:14:11:1e:33:03这些数字字母都表示什么意思你晓得么?按我的意思,直接字符串拆分组装,好像也没有直接可以转换的函数。
0
上山打伞
上山打伞
上山打伞
回复 @東刀人 : 你好,Target target = getTarget(oip + "/" + "161"); snmp4j api中好像没有getTarget这个方法,方便的话,希望留下联系方式。
東刀人
東刀人
已经回答,希望对你有所帮助!
0
gjzhappy
gjzhappy
有一个类似的问题:http://bbs.csdn.net/topics/240051306?list=lz,描述的更清楚(同样没有得到正解)
返回顶部
顶部