zoukankan      html  css  js  c++  java
  • mongodb日志服务器方案

    描述

    目前要做的是多台服务器上的程序日志(如订购日志,交易日志,接口是否成功等)汇总到1个mongodb服务器,每日大约1亿的量,然后有图表实时展现,和报表展现日志信息

    注意:

                没有把所有日志放入1张表里面,因为日志插入很频繁会导致锁表,二是量大了影响查询速度。没有考虑用分片,因为针对我们的业务查询,分片没得分表效率高。用上了mongodb的副本集来保证服务器稳定运行 和 主从库读写分离来提高效率。

    方案

     1:简化入库,使用log4j配置把log4j日志以统一的json格式直接存入到mogodb

     2:建立4张表

       a:总表(全部日志)【单独建个库来保存,这样防止写入全局锁影响查询】

       b:小时临时表:

                     格式:2013122106 注:2013年12月21日6时log4j写入的日志汇总

             小时表:(crontab或者quartz定时统计前一小时临时表的业务所需数据,如某小时交易总量,成功率,各种聚合值等)

       c:建立固定集合来存放最近2小时的数据。大小固定,效率高,自动会替换老的数据【随时在插入数据,所以会影响查询,建议放到mongodb的内存数据库和固定集合,提升效率】

       d:天表(小时表的汇总)

     业务处理

          1小时内图标实时展现(固定集合能满足)

          当天图表实时展现(小时表+固定集合能满足)

         表报统计(小时表或者天表,有需求+月表或者年表)


    遇到问题

       mongodb使用import导入数据速度不稳定,所以如果导入数据有时间要求的话,建议使用程序批导入,

       mongodb对插入会出现锁表,locked集合,影响集合查询, 不要把log4j的日志直接写入总表,在统计小时业务聚合信息,因为总表数量大了,效率很慢。建议log4j按小时写入的临时集合,在临时集合中统计小时业务数据到小时表

       


  • 相关阅读:
    性能测试二十四:环境部署之Redis多实例部署
    性能测试二十三:环境部署之Redis安装和配置
    性能测试二十二:环境部署之Nginx
    性能测试二十一:环境部署之mysql
    性能测试二十:环境部署之Tomcat多实例部署+日志监控
    性能测试十九:jmeter参数优化+排错
    Zookeeper学习
    Zookeeper学习
    Zookeeper学习
    Hadoop Balancer源码解读
  • 原文地址:https://www.cnblogs.com/weipeng/p/4256059.html
Copyright © 2011-2022 走看看