浏览 4232 次
锁定老帖子 主题:Xfire客户端并发访问压力的问题
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-05-29
最近项目需求..利用Xfire这个经典的WebService框架,搭建了与单片机通信的桥梁...(这个WebService不是我搭建的..我只负责调用客户端).目前利用Xfire客户端并发访问的有30台服务器左右,开始每个服务器开启一条线程(包括自己写的WebService链接超时机制的线程)多线程进行对所有服务器的并发访问,获取反馈数据.因为WebService创建链接并获取反馈数据,消耗CPU量比较大.所以.通过普通线程创建访问的方式..给CPU带来非常大的压力.后来改用jdk5新加入的ThreadPoolExecutor管理线程,因为大量的线程创建也有非常大的资源消耗.所以利用线程池进行管理..xfire的通信是中断式的,并不保持链接.所以利用hashmap把链接对象缓存起来.(xfire创建对象需要消耗500毫秒,客户端不是我写的..因此无法优化).减少创建对象的消耗.因此cpu的峰值从85%降低到45%.不知道其他高手还有没有其他较好的解决方案. 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-05-31
感觉其实你已经优化了:)
|
|
返回顶楼 | |
发表时间:2010-05-31
sillycat 写道 感觉其实你已经优化了:)
哦?无法再优化了? |
|
返回顶楼 | |
发表时间:2010-06-04
换了个intel的cpu.E5200...居然cpu峰值才5%....郁闷啊..RP问题?
|
|
返回顶楼 | |
发表时间:2010-06-04
用LoadRunner压压试试
webservice高并发时,cpu必然超高,xml解析时计算密集的。 and 如果webservice操作比较耗时,可以考虑使用seda模型,服务器端也可以考虑使用异步的servlet+线程池。 |
|
返回顶楼 | |
发表时间:2010-06-08
kimmking 写道 用LoadRunner压压试试 webservice高并发时,cpu必然超高,xml解析时计算密集的。 and 如果webservice操作比较耗时,可以考虑使用seda模型,服务器端也可以考虑使用异步的servlet+线程池。 kimmking 写道 用LoadRunner压压试试 webservice高并发时,cpu必然超高,xml解析时计算密集的。 and 如果webservice操作比较耗时,可以考虑使用seda模型,服务器端也可以考虑使用异步的servlet+线程池。 好,我去修改一下.非常感谢您的意见.! |
|
返回顶楼 | |