JAVA高并发服务器讨论解决方案
发布时间:2010-05-20 14:01:29 文章来源:www.iduyao.cn 采编人员:星星草
JAVA高并发服务器讨论
开发WEB, Buffer几乎必不可少.
但假如采用自增加长度的Buffer, 单纯写4MB的数据, 都要350ms的时间, 效率这么低.
从SOCKET下来的数据, 先是写到Buffer, 然后处理完成后, 再把结果写入Buffer, 然后用SOCKET发送出去.
在这一来一回的过程当中, 存在两次缓冲写入和读取, 就算不计算读出的时间, 单纯流入流出4MB, 就花掉700ms了, 那么1秒内, 只剩下300ms是业务处理的时间, 这么低的效率, 怎样提高并发量啊...
各位写高效WEB时, 都使用什么方法增加数据流量的?
------解决方案--------------------
帮顶下~~~
------解决方案--------------------
这个350ms的时间,是怎么来的,需要看看瓶颈在哪里,是硬盘IO还是网络IO。
------解决方案--------------------
高并发你不能用java自带的socket,自带的socket是阻塞式的,效率低。无法满足WEB类型的高请求服务。必须用非阻塞式TCP/IP通信模式
------解决方案--------------------
俺搞c的,没了解过java的ByteArrayOutputStream 是怎么实现的,估计问题在这里。
它的底层实现估计每次都会进行一些诸如strlen或者memset之类的操作,导致对大缓存的性能下降。
可以:
1、看看源码是否有类似的问题
2、搞一个小一点的buffer,加一层循环,比如4K的buffer,再加一个1K的外层循环试试看
如果有问题,可能要考虑换封包的方式,或者换buffer类了
纯属猜测,仅供参考
话说你这么大的缓冲,用来做什么?瞬间发这么大流量,网卡还不被你撑死,1秒时间700ms网卡都空闲的,有点浪费了,最好能均匀使用网卡:)
------解决方案--------------------
我的笔记本CPU是T8300,运行代码用了170-200ms
先定义 byte[] buf11 = "测试字符串1号".getBytes();再写buf11 ,执行时间是60-70ms
循环中做getBytes()转换,开销相当很高
------解决方案--------------------
@dfasri:
我了解你的意图。不过还是要说明,问题可能出在我说的那个地方。建议你测试一下,确定是不是这个问题。
我说的第2种方式,可能没讲清楚,就是希望能通过减小缓冲的方式加快速度,原因如下:
java用什么buffer不太清楚,C里面对char数组的不同使用方法也会导致效率出现严重的区别。
比如用strncpy来拼接字符串,在目标buffer很大时,效率会急剧下降,原因是这个函数对buffer的未使用部分循环做了fill 0。
------解决方案--------------------
帮顶下
------解决方案--------------------
jvm currentTimeMillis是不准的 好像最小感知时间是15ms左右 纳秒感知时间是800ns左右空转试试就知道 “4M的写入要花掉上百毫秒” 这个明显有问题 硬盘的响应速度也不止这样吧
抛开这些不说 如果在意响应速度多加些线程就就可可以了吧
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。
其他相似内容:
-
风生水起才知天高云淡,沧海横流方显英雄本色 百万商业圈云平台免费发布,几十万台电脑变成一台不是梦
百万商业圈分布式云平台功能...
-
登录问题
登录服务器为A 、代理服务器为B 、服务器资源为C.
http发送 验证成功 https请求资源
1.A<---...
-
集群的问题
看了网上很多文章,不是很理解怎么集群的,一下又memcache集群的,一下又mysql集群,还有什么nginx
。
具我了解nginx起的作用...
-
关于计费系统里面的预付费和后付费概念
由于本人刚接触计费系统,对里面的一些概念还有点模糊,特别是对预付费和后付费的理解,我的问...
-
很幽默的讲解六种Socket IO模型(转)
本文简单介绍了当前Windows支持的各种Socket I/O模型,如果你发现其中存在什么错误请务必赐教...
-
数据库读写分离时候可能碰到的问题
数据库读写分离后,如果碰到一种插入操作,是需要对数据做检索后再进行的
例如用户注册,需要检测用...
-
奇怪啊,为何我的一个SWF浏览器缓存文件会被自动清除
我已经设置了这个文件的max-age是100天,也就是说,这个文件会在浏览器缓存里放10...
-
Myfaces日历控件无法弹出
代码如下:
<x:inputCalendar monthYearRowClass="yearMonthHeader"
weekRowClass="w...
-
到底什么才是Web Services
我曾经做过一个android的软件,当时的思想是这样的,我用SSH框架做了一个Web服务端,这个服务端暴露了很多的...
-
Web服务和文件服务分离后的问题
(A是Web服务器,B是文件服务器)
1 A网络映射B,访问A上传文件到B通过映射的路径实现。显示B中的...