欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

关于并发性能有关问题,迫切

更新时间: 2014-01-05 01:58:07 责任编辑: Author_N1

 

关于并发性能问题,迫切
背景:
采用APACHE + PHP + ACE 构建了一个服务器。
ACE采用的是TP_Reactor框架。
PHP和ACE之间采用SOCKET进行通信,PHP建立不了长连接,每次请求连接,处理完毕断开。
APACHE+PHP部署在一台服务器,ACE部署在另一台服务器。

问题:
采用loadrunner进行性能测试时,发现并发上不去,以为是资源不够,查看服务器后,发现各服务器的CPU和内存资源都有空余,特别是ACE的那台服务器,CPU基本在10%左右。
采用的是20用户,开始测试时,并发数持续上升,ACE端刷屏正常。
当并发数达到400+时,出现connect fail,奇怪的就是ACE端的程序基本没刷屏,也就是连接根本没有过来,怀疑是APACHE堵死了,调整各种参数(很多不太明白),然后稍微好点,但时间一长,10小时多,则ACE服务器完全连接不上,查看端口,发现端口的状态都是ESTABLISH,都没有结束?

说明一下,为了找问题,现在的ACE服务器基本什么都不处理,直接返回一个字符串,也就是说,它的处理时间消耗基本可以忽略。

没有找到性能瓶颈,则不知道该从何处优化,做过类似系统的人,能否指点一二,非常感谢!


--参考方法--
如果确信软件没有问题的话,换张网卡,和重装下系统看
--参考方法--
不知道服务器,不过去年网络经常断流,期间研究过一些网络连接问题
如果出现大量ESTABLISH或fin wait,可能是网络的一个中间部件不能快速结束连接导致阻塞

--参考方法--
10小时多,则ACE服务器完全连接不上,查看端口,发现端口的状态都是ESTABLISH。

这是个问题,参考:
http://os.chinaunix.net/a2005/0629/954/000000954751.shtml。

除了这个问题以外,并发数的提升还会有其它的问题的,个人觉得,php和apache部署在同一台机器上,是否有其它形式的IO处理?
--参考方法--
分析分两步:
1、你先测试apache不连接ace的并发情况。保证在400或者800以上apache没有问题。
2、再测试ace的并发情况。代码微调一下,最好增加心跳功能,简单说就是每次连接ace时候判断是否可以连接上,并且最好弄个计数器主要看连接数等信息,如果不可以连接然后就不在发送请求。
3、我怀疑是ace的连接已经死了,但是有没有关闭,所以会引起连接占用,所以apache连不上的问题!
--参考方法--
顶一下那份......
--参考方法--
我觉得  几百的
引用
并发
 首先 apache肯定没问题 所以肯定不是apache服务器的压力 或者 也不是apache占用过多的资源  因为一个连接占用的内存和CPU占用撑死也就几百KB   1G存内的服务器也能撑起1000的并发  你的请求可能 调用socket跟ACE进行通信  这个请求的时间过长  而 apache 是有最大并发连接的限制的  你试着去优化这个  导致不能再次分配子进程处理你额外的请求  导致大部分连接请求处于等待  而照你的描述可能 ACE那边占用的资源很大  导致资源衰竭 不能理解的是你说你的ACE服务器只返回字符串 没有额外处理  所以我这块不懂   还请楼主找到问题告诉我你ACE服务器的问题出在哪里
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 01:58:07
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/3802/
本文WWW.DOC100.NET DOC100.NET版权所有。