• 请不要在回答技术问题时复制粘贴 AI 生成的内容
Actrace
V2EX  ›  程序员

超高速AJAX轮询架构设计的Demo求测试.

  •  
  •   Actrace · Jul 29, 2013 · 8354 views
    This topic created in 4855 days ago, the information mentioned may be changed or developed.
    地址 http://try.maxfs.org/chat.php
    虽然不是服务器推,但是本人有信心承载10000左右的在线用户,求测试.
    Supplement 1  ·  Jul 29, 2013
    就目前情况来看,CPU使用率不足1%,VPS是linode1GB.
    服务器架构是传统的Apache+Mysql,yum一键安装.
    Supplement 2  ·  Jul 30, 2013
    准备用PHP开发一个服务器....APACHE性能有限...
    Supplement 3  ·  Jul 30, 2013
    之所以不用其他的技术而是传统的老技术,主要还是为了降低搭建成本.直接把所有程序上传到根目录就可以用了,何乐而不为呢?当然,我承认这种方式实时性低,但是我觉得也有他适用的范围,性能问题最终的解决方案是架构.
    66 replies  •  1970-01-01 08:00:00 +08:00
    andybest
    andybest
    Jul 29, 2013
    1
    超高速。。。5秒轮询。。。
    dndx
    dndx
    Jul 29, 2013
    2
    5秒真的算不上超高速..
    Actrace
    Actrace
    OP
    Jul 29, 2013
    3
    合理优化了...
    Actrace
    Actrace
    OP
    Jul 29, 2013
    4
    @dndx
    @andybest
    我表达错了,超高速响应....
    Actrace
    Actrace
    OP
    Jul 29, 2013
    5
    某君用循环写数据,真邪恶啊.
    ipconfiger
    ipconfiger
    Jul 29, 2013
    6
    long pulling 啊,tornado啊,秒到无延迟,毋需5秒轮训啊
    panlilu
    panlilu
    Jul 29, 2013 via iPad
    7
    5秒。。太短了吧。。可以长连接到http超时的。。
    Actrace
    Actrace
    OP
    Jul 29, 2013❤️1
    8
    @ipconfiger
    @panlilu
    在web上做无延迟我认为没有任何意义.架构上就不合理.
    panlilu
    panlilu
    Jul 29, 2013 via iPad
    9
    @Actrace php本来不合适做这个,你试试tornado,node.js就知道什么是专业的了。。
    Actrace
    Actrace
    OP
    Jul 29, 2013
    10
    @panlilu 那些成熟的架构我知道,确实很牛逼.我想做的不是去使用别人写好的东西,而是重复造轮子,看下能不能造出更牛逼的轮子.
    pubby
    pubby
    Jul 29, 2013
    11
    "承载10000左右的在线用户"

    这个怎么理解啊,指5s内有请求的算一个在线用户吗?

    如果是10000并发访问你的server.php,那得多牛的服务器才能支撑
    Actrace
    Actrace
    OP
    Jul 29, 2013
    12
    @pubby 10000同时轮询.
    fucker
    fucker
    Jul 29, 2013
    13
    <script>while(1){window.alert("大家好")}</script>
    clc3123
    clc3123
    Jul 29, 2013
    14
    我看六间房也是php轮询,够用就好~
    Actrace
    Actrace
    OP
    Jul 29, 2013
    15
    @clc3123 是啊,够用就好,简单的HTTP请求还容易分发处理.轮流发生查询关系~
    loading
    loading
    Jul 29, 2013
    16
    我用的1秒都没敢说神马高速。。。
    leveraging
    leveraging
    Jul 29, 2013
    17
    @ipconfiger 能给点参考资料不?这样的模型性能上会有问题么?
    @loading 其实楼主说的是服务端高性能啦

    不过楼主你就给个地址出来我们完全不明所以啊,应该给出你的设计是哪些地方出众了. 要是来10000并发感觉从服务器到数据库都顶不住.
    Actrace
    Actrace
    OP
    Jul 29, 2013
    18
    @vigoss 其实也只是理论而已...理论......
    zythum
    zythum
    Jul 30, 2013
    19
    zhuyi吐槽得说:作为实时通信。5秒是不能接受的。
    yautou
    yautou
    Jul 30, 2013
    20
    话说我想了一星期就想搭个这东西,求搭建教程~
    aveline
    aveline
    Jul 30, 2013
    22
    ab 一下試試。。。
    Actrace
    Actrace
    OP
    Jul 30, 2013
    23
    @zythum 现在是3秒,而且这个不是实时通讯的工具.我个人认为只有UDP驱动的通讯软件才能算是真正意义上的实时通讯.
    thursday
    thursday
    Jul 30, 2013
    24
    Narcissu5
    Narcissu5
    Jul 30, 2013
    25
    #看下能不能造出更牛逼的轮子# 楼主好志向
    Loveyuki
    Loveyuki
    Jul 30, 2013
    26
    看不出任何出彩的地方。
    ritksm
    ritksm
    Jul 30, 2013
    27
    盲目的自信从何而来...
    xdyl
    xdyl
    Jul 30, 2013
    28
    我的葡萄藤之前用了的是Comet.Erlang做后端,Ajax长连接.
    之前信心满满,觉得对于聊天室应用来说完全够用了.

    实际应用中发现Comet的效率完全无法直视.收到消息断开连接重连的策略对于速度的影响是"刚刚的".

    终于痛定思痛决定使用WebSocket了.

    So.WebSocket的效率真是Happy.有兴趣的同学可以开一个多人扫雷试试看.基本上可以达到和本地扫雷相同的速度.

    http://www.ptteng.com
    filod
    filod
    Jul 30, 2013
    29
    咦,楼主是过来说相声的么?
    dulao5
    dulao5
    Jul 30, 2013
    30
    apache + php , 因为php线程不安全,所以你一定用的是apache的进程模式。最大并发数等于最大子进程数。

    你已经将apache这个设置调整成10000了吗?
    然后用ab -c 10000 测试过了吗?
    Actrace
    Actrace
    OP
    Jul 30, 2013
    31
    @dulao5 求测试....
    Reset
    Reset
    Jul 30, 2013
    32
    <script>alert('Test')</script>
    然后就再也不更新了! :(
    Firefox22.0
    ipconfiger
    ipconfiger
    Jul 30, 2013
    33
    @Actrace
    long pulling 的效率更高,更节省服务器资源,而且响应会更快,无论怎么看都优于喜刷刷的这种方式了。
    @vigoss
    楼上有人说了,去看tornado或者node.js 都有chatroom的demo
    Actrace
    Actrace
    OP
    Jul 30, 2013
    34
    刷爆了.....
    @dulao5
    各位大爷我错了...
    ipconfiger
    ipconfiger
    Jul 30, 2013
    35
    @Reset 太坏了
    Actrace
    Actrace
    OP
    Jul 30, 2013
    36
    253负载...
    eric_zyh
    eric_zyh
    Jul 30, 2013
    37
    看完这个贴,最大的感觉 : v2ex 确实比 csdn 文明很多...
    Actrace
    Actrace
    OP
    Jul 30, 2013
    38
    内存是个硬伤啊...
    lyjyiran
    lyjyiran
    Jul 30, 2013
    39
    我想起某个朋友形容拿php做long pulling的比喻, 万人在线就是上万个php进程此起彼伏的跳江南Style
    emptyhua
    emptyhua
    Jul 30, 2013
    40
    emptyhua
    emptyhua
    Jul 30, 2013
    41
    已经义务测试咯
    Actrace
    Actrace
    OP
    Jul 30, 2013
    43
    挂了...
    emptyhua
    emptyhua
    Jul 30, 2013
    44
    @Actrace

    /opt/node.0.10.3/bin/node ./test.js
    703qps
    703failed
    1970qps
    1970failed
    1985qps
    1985failed
    1908qps
    1908failed
    2120qps
    2120failed
    2029qps
    2029failed
    2000qps
    2000failed
    1917qps
    1917failed
    2006qps
    2006failed
    1855qps
    1855failed
    2126qps
    2126failed
    2045qps
    2045failed
    2192qps
    2192failed
    1930qps
    1930failed
    1997qps
    1997failed
    1950qps
    BOYPT
    BOYPT
    Jul 30, 2013
    45
    说了一堆表示用传统技术方便部署,然后还说有信心……哪来的信心啊(扶额
    Actrace
    Actrace
    OP
    Jul 30, 2013
    46
    linode 1GB压力很大.但是,现在已经不怕你们的压力了~~~
    denghongcai
    denghongcai
    Jul 30, 2013
    47
    说实在的,用webbench你都挡不住,最基本的连接数限制你都没有,看看你的apache进程有多少吧

    连轮询的架构都能把服务器拖垮
    denghongcai
    denghongcai
    Jul 30, 2013
    48
    而且你的bad man,把判断语句写在php里还是一样的扛不住压力测试的,用iptables的recent模块吧
    yakczh
    yakczh
    Jul 30, 2013
    49
    这是出来丢人现眼吗,快回家打怪升级去吧,牛皮都吹爆了在天上飘
    yakczh
    yakczh
    Jul 30, 2013
    50
    php就是套模板,crud,性能垫底的脚本还玩server push,还10000...
    denghongcai
    denghongcai
    Jul 30, 2013
    51
    @yakczh php的性能并不弱,请不要想当然
    chichan
    chichan
    Jul 30, 2013 via Android
    52
    楼主要明白,并发和每秒请求数不是一回事,更不是五秒轮询下的在线用户数
    lhx2008
    lhx2008
    Jul 30, 2013
    53
    apache性能不行啊,好歹你也nginx吧,wenbench apache一下就挂彩了
    Actrace
    Actrace
    OP
    Jul 30, 2013
    54
    @lhx2008 看来真得nginx了.
    pubby
    pubby
    Jul 30, 2013
    55
    nginx直接挂php也未必会好多少,这个架构决定了单机不可能支撑太多并发的。
    nazor
    nazor
    Jul 30, 2013
    56
    测试了 挂了。
    Actrace
    Actrace
    OP
    Jul 30, 2013
    57
    @pubby 其实我想说的是架构...前端是可以通过加硬件来解决负载问题的.但是架构问题不是一时半会可以修复的,大家都误会我的意思的...linode 1GB 的内存局限是摆在哪里的,我选用apache的重要原因是这个远远比nginx+php-fpm稳定,毕竟是做服务.
    @nazor 恢复.
    cst4you
    cst4you
    Jul 31, 2013 via Android
    58
    看了下楼主其他帖子只有俩字:呵呵
    breeswish
    breeswish
    Jul 31, 2013 via Android
    59
    用不恰当的工具做事就是一件吃力不讨好的事情,楼主的东西在某些情况下挺有用,不过作为vps狗表示无兴趣,没有架构的约束做事各种爽。

    另外5秒算超高速么,。看这个标题我还以为0.1秒 把我骗了近来
    Actrace
    Actrace
    OP
    Jul 31, 2013
    60
    @breeswish 不好意思我标题党了.现在是3秒轮询.其实我觉得5秒更好,频繁网络请求会比较消耗电量,昨天没带电源回家,挂着聊天demo明显感觉续航少了很多.
    pubby
    pubby
    Jul 31, 2013
    61
    @Actrace 其实我也是一直apache+php,稳定可靠。不过前面还是要放一个nginx啥的负责连接的玩意,要不然把apache进程浪费在一些低网速客户身上跟找死无异。

    回到你的聊天demo,这架构要支撑大并发实在是不经济。
    yakczh
    yakczh
    Jul 31, 2013
    62
    @denghongcai  弱不弱不是拿嘴吹的,同样的业务代码用不同脚本跑一下就知道
    denghongcai
    denghongcai
    Jul 31, 2013
    63
    @yakczh http://benchmarksgame.alioth.debian.org/u32/benchmark.php?test=all&lang=php&lang2=yarv&data=u32
    在生产环境中你试过么?优化过php的配置么?你自己才应该泡一下试试
    denghongcai
    denghongcai
    Jul 31, 2013
    64
    跟你的硬件的限制没有什么关系,如果你用node.js或者python的gevent的话你的硬件是可以抗住这么多的并发的,主要是php参数的调优以及需要换用nginx的php-fpm
    breeswish
    breeswish
    Jul 31, 2013
    65
    @Actrace 以及为啥不用comet呢。。要知道轮询可是最最古老的没有技术的技术= =。。

    整个互联网都已经从轮询到Ajax Long polling到Flash sockets到Websockets发展了好几代了。。轮询是多么古老的方法。。
    Actrace
    Actrace
    OP
    Jul 31, 2013
    66
    Websockets,服务端怎么办?
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2145 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 73ms · UTC 13:54 · PVG 21:54 · LAX 05:54 · JFK 08:54
    ♥ Do have faith in what you're doing.