关于并发性能问题,迫切
背景:
采用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服务器基本什么都不处理,直接返回一个字符串,也就是说,它的处理时间消耗基本可以忽略。
没有找到性能瓶颈,则不知道该从何处优化,做过类似系统的人,能否指点一二,非常感谢!
服务器 loadrunner apache php 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连不上的问题!
[解决办法]
顶一下那份......
[解决办法]
我觉得 几百的