“去哪儿”David Wu2010年4月13日1
一、“去哪儿”介绍   二、监控系统三、虚拟化在去哪儿的应用四、Java开发的一些tips
一、“去哪儿”介绍
“去哪儿”简介中国领先的旅游媒体2005年5月上线最大的旅游搜索引擎机票,酒店,知道,博客,打折,签证,度假,景点开始提供手机服务
增长趋势
数字35M月访问用户每天60M动态请求,峰值1700+/sec每天消息系统承载30M消息,峰值1000/sec每天18M次数据获取、网页解析30G memcacheddata, 264M次访问,峰值7000/sec50%的数据能够在3s内得到服务,80%的数据能在8s内提供服务
数字过去两年我们搜索量增长了28倍技术团队从10个人增长到60个人产品线从2个增长到6个各种系统从5个增长到近30个
技术部门的使命实现实现产品给产品的实现更多的可能性用户体验可用性速度成本Capex(固定资产投资)/opex(运营费用)开发效率
系统演进的动力来源流量的增长产品需求的复杂化发现的途径监控变更和发布记录实现当中发现的问题项目管理中发现的开发效率问题
二、监控系统
高可用性3个9:99.9%2592秒/月=43分钟/月2小时/季度4个9:99.99%259秒/月=4.3分钟/月12.9分钟/季度
一个故障特定事情发生服务质量不可接受故障发生注意到故障并开始修复修复结束
网站故障来源故障的来源各种变更访问量增长(capacity planning)人为操作失误硬件、软件异常
监控监控分为两大类监及时发现失效点关联关系控控制,就要有预先的概念保留历史记录,对可能出现的问题进行预判和预先改进在故障处理的时候,检查历史记录,找出变更对应的时间
对关联关系的看法个人认为使用服务方负责监控服务的质量和可用性识别重要关联关系对关联服务有质量标准,譬如成功率,延时等制定报警标准根据实际情况修正相关标准
层次
Qunar的监控系统What’s up监控服务器存活状态监控URL存活状态Cacti监控服务器各项资源的使用情况丰富的pluginSquid/memcached/netapp保存历史记录,观察流量和各项资源的使用的关系要求ops每天都需要浏览cacti,每周全面审核
Qunar监控HypericJava开源丰富的plugin可用的报警机制所有的业务、系统相关指标都在hypericSmokepingMonitor机房到各省各个运营商的链路质量
经验
经验每次发布完,团队要对所有的监控指标和系统图形观察30分钟以后才算结束发布 ops团队每天早上会对关键应用的指标进行快速reviewOps团队每周会对监控指标做快速巡查90%以上的故障能通过监控系统发现
三、虚拟化在去哪儿的应用
Xen虚拟化70%以上的生产服务器跑在Xen上迁移方便部署、管理简单更高的使用率,平均cpu使用率从15%->45%OVM/Xen有基于web的管理界面剪裁比较好,300M
HardwareCPU2x4 coreRam32G or 16GDisk2x500G, Raid 0+1,有些有带电池写cache的raid卡NIC2x1G,1 for ilo
XenExample[david.wu@tools1.ops.cn1 ~]$ ssh l-ovms8.ops.cn1 'sudo /usr/sbin/xm list'Name                                        ID   Mem VCPUs      State   Time(s)112_tw6_f_cn1                                2  2200     4     r----- 3097120.3114_tw7_f_cn1                                3  2200     4     -b---- 3099024.2116_mem1_f_cn1                               1  1700     4     -b---- 267107.3118_sug1_f_cn1                              10  1200     4     -b----  58702.3430_twb2_f_cn1_ovms8                         9  2200     4     r----- 2283516.6434_askdb1_ovms8                            11  2200     4     -b----  60466.4Domain-0                                     0   668     8     r----- 1661065.3
问题性能RAM/Syscall(context switch)I/O performanceDisk performanceNetwork performance(not so important in web environment)管理Network structure(vlan tagging)VMM层Vm之间隔离
RAM/SyscallUnixbench scoreRaw 503Dom-0 397Dom-U 317
Unixbench score
Disk performance(with write buffer)Bonnie++
Disk performance(without write buffer)
Disk performance(Random seek)
Vlan tagging一个物理主机上要支持在多个vlan的虚拟机规模扩大,单个网段无法满足需求安全分区需求
XenIn the futureShare storage/Live migrationDevice pass-throughVMDq/VT-d/SR-IOVNetwork structure optimizationUpgrade to Xen 4.0 to improve the performance
四、Java开发的一些tips
JAVA开发的一些Tips善用jdk的命令JpsJstatJmapJstackjhat
tips内存OOMGC并不能杜绝内存泄露仔细计算内存的使用,内存是有限的,给内存的使用一个上限Jhat可以帮助你看到你的内存用在什么地方内存池化
tips线程线程数量是有限的所以减少线程数量是非常重要的减少数量意味着要缩短线程的长度线程池化,降低创建和销毁线程的开销
tipsCache和timeout是互联网永恒的主题数字,数字,数字监控对于工程师,相当于雷达对于战斗机还可以更简单吗??如果不知道未来,那就不要为未来做准备性能(速度)象海绵,挤一挤总会有的去掉一个部件远比增加一个部件功劳大并发安全是魔鬼
一点体会共享基础设施比代码重用更加重要保持状态是扩展性的天敌团队的背景很大程度决定了架构的采用“最好”vs“最合适”“解决现在的问题”vs“解决将来的问题”好的架构匹配好的运维任何一项技术/架构的引进都需要一个痛苦的过程
邮箱:  david.wu@qunar.com电话:  13701172202

去哪儿平台技术

Editor's Notes

  • #40 我们希望在不久将来,能为您服务。谢谢。