【IT168 评论】12306网站瘫痪了,大量用户无法登录,页画刷新时间长达30分钟,定票付了款却无法购票。不少购票者无奈地怒斥道,12306网站形同虚设。
12306.cn网上订票系统,为回家过年的旅客提供了一个公平的交易平台,支持大部分车次网上订票,最新统计显示,短短7天,12306网站访问用户已占全球互联网用户的0.902%,每天点击量高达10亿人次,如此大的访问量,也着实考验着12306网站的整个后台。12306网站瘫痪后,铁道部相关负责人表示,将增加服务器与带宽,改善网购登录难的问题。
确实,他们也做到了,如今12306网站的带宽已经从最初的400兆扩充到了1.5G,但是面对每天10亿次的点击量,仍然弥补不了网上登录和支付的短版。据了解,12306网站正在进行后台调试,争取让订票和网上支付系统分开运行,互不交叉,避免拥堵,让整个订票支付流程更加顺畅。
▲12306.cn
▲12306登录失败
针对12306网站访问慢的问题,IT168专门采访了一IT解决方案提供商的专家,据他介绍,12306至今,整个购票程序已经发生了很大的改变,客观说,现在的12306订票程序应该做很完善了。而目前的这种情况类似当初证券市场暴跌后的堵单现象,很多交易无法及时完成,而又不断地有新的用户进来,这属于典型的密集交易型服务器应用。而这套系统所面临的最大的问题是网上订票系统在各个环节形成的巨量数据流。
▲12306购票流程
网上订票系统在各个环节形成巨量数据流
据他介绍,海量访问同时出现在网站交易系统的各个环节上,对服务器形成巨大压力:
1.登录窗口堵塞:巨量不断涌入的并发登录请求,而且登录不进去的还在不断刷新页面,春运期间,12306网站的同时在线访问人数高达500多万,每个人一次性访问需要花费2KB左右,有时候甚至只有几个字节,12306的并发量(同时在线访问量)达到1GB 。
2.查询递交交易环节,登录进入的客户不断进行数据查询、递交交易请求,另外大量登录进去的客户不断刷新反复查询。
3.支付环节:大量并发递交网上银行支付操作,同时不断刷新页面,不断请求处理,巨大的并发请求量,很明显服务器硬件配置太低,处理速度、内存容量、硬盘IO、网络IO,满足不了要求。
另外软件方面,如并行处理和队列管理、数据存储方式等都不能满足这种高并发密集操作。作业递交太多,数据量巨大,内存不足,更多数据在虚拟内存或硬盘上,面对程序的不断调用,响应速度大幅降低。
密集并行处理请求,普通服务器系统无法承受
巨大的并发数据请求和实时响应处理,普通架构服务器已经不能满足,从硬件和软件两个方面,专家也指出了目前存在的一些问题,并给出了一些配置上的建议:
1.硬件方面
首先网口面临巨大的访问请求数据,通常所用的芯片intel 82574没有独立的IO处理能力,大量的数据包解析需要交给CPU处理,CPU直接面对第一层围堵,此时类似防火墙面对大量攻击型访问一样,并发数据访问量1GB/s以上,千兆端口理论最大125MB/s,处理不过来,端口已经堵死,直接造成服务器瘫痪。
其次 CPU处理器通常是8核到12核处理器,面对如此密集并发数据处理,计算速度严重不足,满足不了巨量同时访问请求,
第三 内存容量不足, 大量的查询操作,访问数据库,内存容量不足,需要频繁访问硬盘,造成延迟等待,就像机器死机一样。
第四 硬盘方面IOPS值太低, 大量并发读写,单盘硬盘或普通阵列性能达不到要求。
2.软件方面
面对大量请求,队列管理不合理, 数据请求和数据库查询方式存在一些问题。
针对12306网站这类型交易密集型应用,这位专家还向我们推荐了适用的服务器配置:
服务器参考配置 : 8路10核Xeon E7-8870(2.4G)处理器,配置内存1024GB,硬盘配备2组8*300GB SSD(实际容量2组2TB)
如此一来性能方面将大幅提升
处理器性能: 配备intel Xeon E7 8800处理器,提供8颗10核Xeon E7 8870(2.4G), 浮点运算速度达到7680亿次/秒,性能达到普通双路xeon服务器的10倍以上。
内存容量和带宽:配备容量达1TB,CPU-内存16通道,每个通道带宽达6.4GTs,满足海量数据库查询和检索和处理。
把数据库里访问频率最高的火车信息数据全部放到内存中,满足程序在最短的时间完成蜂拥而来的巨量并发登录请求、车次查询和支付交易处理操作. 当然,具体内存多少更合理,还需要实际应用中监测结果。
硬盘容量和IO性能:配备2组超级阵列(8块300GB SSD企业级+8port SAS2-RAID 1GB), 容量2*2TB,IOPS,硬盘读写带宽2GB/秒,4KB随机读取38500次/秒。
大幅提升虚拟内存、硬盘IO性能,最大程度降低整个机器最大的短板-硬盘数据读取操作带来的延迟,带宽是单盘带宽的10倍以上, IOPS是单盘的100倍以上。
网口性能:配备2口intel 82599ES/EB 万兆以太端口,数据带宽2.5GB/s,比千兆提升10倍以上,另外支持虚拟队列技术,最大队列数量2*64=128个,大大减缓IO端口的压力。