51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 4627|回复: 2

从12306看性能测试

[复制链接]
  • TA的每日心情
    无聊
    2015-2-4 22:14
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    发表于 2015-2-4 22:55:09 | 显示全部楼层 |阅读模式
      今天看了下51关于性能测试的视频,由于太卡了,做了下笔记。感觉还是蛮有意思的,share给大家,聊以娱乐。
      以下内容如果侵犯了51的知识产权,请联系我删除帖子。
      很多人将12306跟淘宝做比较,认为淘宝双十一堪比春运订票,但从来没说过淘宝出问题。而作为国家做出来的一套系统确在春运订票高峰时不尽如人意。
      其实这么看是不全面的。首先理论上说任何性能问题都能通过添加配置来解决,服务器处理不了这么多请求,我们整N台来集群,我们负载均衡不就好了吗?但是作为一个性能测试工程师来说,首先考虑问题必须是投资回报率的问题。12306一年的订票高峰期,顶多不过两个月,60天,其余300天处于空闲状态,如果为了这60天,花几亿,十几亿未免不值。但是,阿里巴巴就这么干了,作为国内最大的与服务提供商,阿里云不仅解决了双十一等高峰期处理大量高并发数据的问题,还在空余时间提供云服务,一举两得。但是12306显然不适合,难道要铁道部也成立一个铁道云?
       12306与淘宝的处理模式也显然不能等同的,对于淘宝,它的商品的库存是卖家可以控制的,即使没货也敢卖出100件,但是12306就不能了。每提交一个请求都需要同步到数据库,都要进行查询,这就使得系统复杂性大大增加。
       那么12306面临怎样的难题呢?作为一个B/S架构的系统,它的前端太大了,其首页的源代码达到了800~900kb,而且外部文件过多,用户一个请求需要用到70个子连接。据初略估算,12306高峰的PV(页面访问)量达到14亿,1秒请求数约210万。而世界上最先进的前端服务器只能达到10万。换成带宽需要240Gb
    才能完成需要的吞吐量。现目前不知道北京的主干网能不能达到,即使能达到也不可能都给你12306吧,其他人还要不要上网了,还能不能愉快的玩耍了(开个玩笑了)
       而解决的办法,12306采用了一种叫CND(我也不懂)的机制,页面需要加载的flash、javascript、CSS都分给服务商,而且根据用户最近的节点选择。其次,还用了缓存的技术,一定时间内发送的重复请求不会提交到服务器,比如30秒内重复刷新是不会提交到服务器的,内容都是在本地缓存的数据。
      而在后端现在12306也做了异步处理,即接到请求后,不马上将之传到后台服务器,而是做一个排队的处理,当人数达到一定时,在将这些请求一起发送给服务器,做批量处理。
      当然视频老师也提出了自己的意见,不知道12306是否已经使用了。那就是对数据库进行处理。第一点用性能界的话叫做空间与时间是可以互换的,传统的关系型数据库(原谅我读书少,只知道Oracle)牺牲了时间换取空间,现在反过来行之,用空间换取时间。第二点做分页处理(不懂啊,求大神详解)。第三点做镜像(依然茫然中,大神求教),镜像的另一作用还能进行故障转移。
      最后总结一下吧,任何一个性能问题的根源都在于需求定位不好。如12306,其后台的票务系统是铁道部与IBM在上世纪80年代做出来的,到了21世纪,需求大大变化了,那时坐火车的人与现在坐火车的人,大家想一下就能明白。而解决的最根本办法就是根据现有的需求重新做票务系统。
         好吧这些都是看视频来的,然后我口述一下。希望大家多交流指教。
    回复

    使用道具 举报

  • TA的每日心情
    无聊
    2015-2-4 22:14
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

     楼主| 发表于 2015-2-4 22:55:56 | 显示全部楼层
    第一次发帖,小白求罩
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2015-2-27 13:17:47 | 显示全部楼层
    双十一期间阿里巴巴的云服务就不好使了么?
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-3-28 21:55 , Processed in 0.065121 second(s), 23 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表