• mongo


    mongo
    1.在数据迁移的过程中,写入量每秒达到1000次,在这个量级下,memcache会一直占用内存不释放。
    原因:mongo是异步写入,收到写入请求之后,先放入内存,然后异步写入,
    解决方案
    (1)用closeAllDataBase,释放内存,3.0之后命令已经不支持了
    (2)用ulimited在mongo启动的时候,指定mongo占用的内存
    (3)用linux的drop_cache命令释放内存
    使用方案:
    (1)这3种都没有用,因为这3种方案都是在迁移过程中用到。在思考了业务模型之后,发现新时景的数据是有冷热之分的,即图片的实时性很强,那么获取图片点赞列表的实时性也很强,而且250个G的点赞,真正能用到的可能不足10%,所以就使用一种方案,写了一套rpc服务。
    (2)当请求点赞列表时,先查询其赞数是否为0,图片是否为老时景的图片,点赞列表是否为空,如果同时满足这3个条件,那么说明图片
    的点赞列表没有迁移,就调用rpc服务,查询全部的点赞列表,第一页返给客户端,然后异步插入mongo。下次请求从新mongo请求即可

    (3)通过观察,实时迁移量不是很大,每天有几百个请求

    2.mongoDB
    (1)mongoDB使用的是 内存映射 存储引擎 ,它会把数据文件映射到内存中。如果是读操作,内存中的数据起到缓冲作用;
    如果是写操作,内存还可以把随机的写操作转换成顺序的写操作,大幅度提升性能。

    (2)mongoDB不干涉内存的管理工作,而是把这些管理交给操作系统去管理,好处是简化了mongoDB的工作,坏处是没有办法很方便去控制内存,致使mongoDB有时候占内存过多。

    (3)mongoDB连接数过多的话,会拖类性能,每个连接者是一个线程,需要一个stack(栈),linuxt每个栈的大小默认10240K,所以连接数过多的话,会消耗过多的内存,从而拖累性能

    (4)mongoDB应分配的内存大小:内存 > 索引 + 热数据
    http://www.cnblogs.com/foxracle/p/3421893.html

  • 相关阅读:
    为什么你需要升级 pip
    将py文件封装为exe
    Kafka原理分析之基础篇
    顶象验证码破解与研究
    优秀学员学习总结分享(三)
    优秀学员学习总结分享(二)
    ES6数组的扩展--Array.from()和Array.of()
    ES6核心特性
    优秀学员学习总结分享(一)
    JavaScript常见的六种继承方式
  • 原文地址:https://www.cnblogs.com/fubaizhaizhuren/p/7544288.html
Copyright © 2020-2023  润新知