Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1959430
  • 博文数量: 1000
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 7921
  • 用 户 组: 普通用户
  • 注册时间: 2013-08-20 09:23
个人简介

storage R&D guy.

文章分类

全部博文(1000)

文章存档

2019年(5)

2017年(47)

2016年(38)

2015年(539)

2014年(193)

2013年(178)

分类: 服务器与存储

2015-07-09 10:41:31

最近工作需要找一个能使用磁盘存储数据,对写要求比较苛刻,需要每秒达100000TPS,读的时候需要能10000TPS左右,不能占用太多内存。单节点满足这个要求的常见有Redis、Memcached等,但是这个东西太费内存了,代价比较高,不太合适。找来找去,找到Leveldb这个神器了,在写的时候对内存要求不高,读的时候根据性能要求的不同需要对应的内存,如果使用SSD就是完美搭配了。

         目前主要测试写入性能,发现Leveldb还是使用单线程插入最为高效,但是写入性能非常惊人。

         测试数据:

         key=timeline+【0,20亿】

         value=128字节

        测试环境:

        CPU:16核,Mem:32G  磁盘:SSD   

       写入客户端:

        leveldbjni+1Java thread ,write_buffer_size=512MB

      插入20亿条数据的统计数据如下:

         插入数据过程中,CPU消耗比较小,多的时候在160%,少的时候在80%左右,插入过程中对内存消耗比较小,与设定的512MB比较接近,没有大的变化,load小于1;

         插入完成之后,磁盘文件总个数为14913个,占用磁盘存储空间31G。

         全局的avgTps=149594,以插入500W条数据的时候,阶段性的minTps=84631,maxTps=234796。



      插入50亿条数据的统计数据如下:

         插入数据过程中,CPU消耗比较小,多的时候在160%,少的时候在80%左右,插入过程中对内存消耗比较小,与设定的512MB比较接近,没有大的变化,load小于1;

         插入完成之后,磁盘文件总个数为32318个,占用磁盘存储空间77G。

         全局的avgTps=158272,以插入1000W条数据的为基准阶段性的minTps=100000,maxTps=232558。



     附注(1) :以下为插入20亿条数据,以每插入500W记录为周期统计的消耗时长、阶段性TPS

 time=1350637138963;value length=128;threadcount=1;writeBufferSize=536870912 userId=105000000;time=28702;tps=174203
userId=110000000;time=22627;tps=220974
userId=115000000;time=22378;tps=223433

阅读(799) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~