Qihoo 360的MongoDB实践:从千万到百亿级数据的挑战与优化

需积分: 10 1 下载量 87 浏览量 更新于2024-07-26 收藏 881KB PDF 举报
"本次报告主要聚焦于2013年中国数据库大会中关于MongoDB在奇虎360的应用实践,由王超分享了MongoDB在不同数据规模下的挑战及解决方案,涉及高性能、可扩展性和无模式特性。" 在2013年的中国数据库技术大会上,MongoDB在奇虎360的使用案例被详细阐述,展示了这个NoSQL数据库系统在应对不同数据规模时的性能和挑战。演讲者王超介绍了MongoDB在Qihoo 360的发展历程,从千万级别的数据规模到亿级乃至百亿级的跨越。 在初涉阶段,MongoDB2.0.2被部署,采用2个mongos,3个mongod以及3个配置服务器的架构,每个mongod包含一个主节点、一个副节点和一个仲裁器,全部运行在Xen虚拟化环境的3台服务器上,每台配备32GB RAM和SAS 15K RPM硬盘组成的RAID5存储。尽管数据量保持在内存中,但查询吞吐量(QPS)低于500,读写比例约为4:1,操作计数器不超过2000万次,文档数量不到5000万。 然而,随着数据规模的增长,问题逐渐显现。每天有一万多条超时错误(3秒),通过分析发现,这是由于syncdelay设置不合理导致的。默认的syncdelay为60秒,但过长的延迟会导致频繁的I/O操作,进而影响性能。为解决这个问题,将syncdelay缩短至5秒,显著减少了60%的超时问题。此外,发现慢查询经常与chunk迁移(moveChunk)操作同时发生,通过调整balancer的启动时间,避免在业务高峰期进行chunk迁移,进一步优化了系统性能。 同时,还遇到了Mongos连接池和版本管理器的bug,偶尔导致超时。虽然这些问题得到了一定程度的缓解,但超时问题仍然存在,暗示着更深入的调优和监控需求。 MongoDB因其高吞吐量、可扩展性和无模式的特性,在Qihoo 360的实践中展现出了强大的潜力。然而,随着数据规模的扩大,对数据库性能的要求也随之提高,这需要对数据库配置、系统架构以及运维策略进行持续优化,以应对日益增长的数据挑战。此次分享揭示了MongoDB在大型互联网公司中的实际应用情况,对于理解分布式数据库在大数据环境下的运维和优化具有重要的参考价值。