memcached优化使用

1、memcached开始支持多线程

 

2、使用自己的内存分配策略,而不是系统的malloc方法。目的减少内存碎片。

    系统的malloc分配等尺寸的内存片,必将导致内存浪费,从而出现碎片。(题外话,这个分配方案可以作为操作系统的磁盘空间分配方案,现在windows系统使用等尺寸的最小单元存储,经常性产生碎片,磁盘利用率低)。

      将内存切割为大小相等的slab,每个slab中划分大小不等的trunk,当客户端请求save数据时,系统会从这些trunk中找一个尺寸与其最接近的trunk保存。

 

3、memcached存储的一个Item的最尺寸有上限,超过这个上限不是不能存储,而是将导致性能打折扣严重。读取一个数据需要搜索两个trunk。

 

4、存储ByteCode还是序列化对象?

      在java体系同,可以将基本类型的信息用bytecode形式保存在cache中,也可以用java的对象形式保存在cache中。int i=4 需要4个字节,而其对象需要64个字节,节约16倍内存。为什么有这样的差别呢?因为cache保存对象时,首先要调用Java系统的序列话过程,它将整个对象信息用bytecode表示,显然其占用空间比只有表达值的bytecode多很多。

    实现上面逻辑的方法就是实现对象的外部序列化,只需要用bytecode表示值。不使用系统自己的序列化方法(序列化对象)。

     有一个minix项目使用该技术优化前占用memcached内存为1.152G,优化后,空间只需要144M,可见这样的优化效果非常的理想,节约了宝贵的资源(虽然内存已经很便宜,但是在高并发系统中,内存还是非常珍贵的)。

 

5、memcached的进程监控

    我们经常会发现有些时候memcached会因为一些原因停止工作工具可以监控进程,当进程将死、意外退出,他会即时重新启动memcached进程,从而减少应用中断时间,减少系统性能抖动,减少故障恢复时间。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值