`

Memcached for移动互联网:mcperf压测1k~10k数据笔记

 
阅读更多

移动互联网场景中随着人机交互方式的改变,用户数据也发生了比较大的改变。从以1k以下的文本为主数据,变为1k~10k的音频占很大比例的数据。响应的后端服务的队列、存储、缓存也需要做一系列针对性调整。这里就简单记录一下maoyidao对Memcached的压测情况。

1. 压测工具:mcperf

mcperf使用简单,输出报告清晰。最初是twitter为了证明其Twemcache在特定场景下(需要自动调节slab大小的场景下)比memcached强悍而开发的基准压测工具。比如在Random Eviciton vs Slab Automove(https://github.com/twitter/twemcache/wiki/Random-Eviciton-vs-Slab-Automove)一文中,就使用了mcperf作为基准压测工具。

1.1 安装

下载tar包,执行autoreconf


# git clone git://github.com/twitter/twemperf.git
# cd twemperf
# autoreconf -fvi

 

我得到了一个错误,autoconf版本太低,需要升级。先看一下本机版本,然后下载安装2.65版本的autoconf。


# rpm -qf /usr/bin/autoconf
# wget http://ftp.gnu.org/gnu/autoconf/autoconf-2.65.tar.gz
# tar -xzvf autoconf-2.65.tar.gz
# cd autoconf-2.65
# ./configure --prefix=/usr
# make
# make install
# /usr/bin/autoconf -V

 

安装完毕,通过help命令看一下版本号。


# CFLAGS="-ggdb3 -O0" ./configure --enable-debug
# make
# src/mcperf -h

1.2 压测命令

src/mcperf -s 172.16.138.88 -p 11211 --linger=0 --timeout=5 --conn-rate=1000 --call-rate=1000 --num-calls=10000 --num-conns=100 --sizes=u1024,10240


--num-conns=100是并发建立100个连接;--num-calls=10000是在一个连接上发1w个请求;--sizes是数据大小在1k和10k之间称正态分布;-conn-rate=1000是1秒钟建立1000个连接

 

2. 压测环境

2.1 启动Memcached

/usr/local/bin/memcached -d -m 1024 -p 11211 -u root


查看一下Memcached设置,主要关注:growth_factor、maxconns和evictions:


[maoyidao@yf03701 ~]$ printf "stats settings\r\n" | nc 172.16.138.123 11212

STAT maxbytes 0

STAT maxconns 4096

STAT tcpport 11212

STAT udpport 11211

STAT inter 172.16.138.123

STAT verbosity 0

STAT oldest 0

STAT evictions on

STAT domain_socket NULL

STAT umask 700

STAT growth_factor 1.25

STAT chunk_size 48

STAT num_threads 5

STAT stat_key_prefix :

STAT detail_enabled no

STAT reqs_per_event 20

STAT cas_enabled yes

STAT tcp_backlog 1024

STAT binding_protocol auto-negotiate

END

 

2.2 Memcached性能监控

下面介绍2个广泛使用的Memcached性能监控工具,在MC的实际使用中起到极大作用,每个使用MC的同学都应该熟练掌握。

2.2.1 memcached-tool

主要用于查看slab分配的情况,evction的情况。

https://github.com/memcached/memcached/blob/master/scripts/memcached-tool


[root@yf08801 maoyidao]# ./memcache-tool localhost:11211

  #  Item_Size  Max_age   Pages   Count   Full?  Evicted Evict_Time OOM

 19     5.5K      2080s      63   11587     yes     1791      710    0

 20     6.9K      2080s     234   34388     yes     5143      710    0

 21     8.7K      2080s     365   43057     yes     6600      710    0

 22    10.8K      2080s     365   34294     yes     5501      710    0

 

2.2.2 memcache-top

主要用于查看吞吐和hits情况。

http://code.google.com/p/memcache-top/


./memcache-top-v0.6 --instance 172.16.138.123,172.16.138.124 --port 11211


memcache-top v0.6       (default port: 11211, color: on, refresh: 3 seconds)


INSTANCE                USAGE   HIT %   CONN    TIME    EVICT/s READ/s  WRITE/s

172.16.138.123:11411    13.4%   96.1%   871     671.8ms 0.0     16.9K   39.4K

172.16.138.124:11411    13.3%   96.1%   865     660.6ms 0.0     20.8K   49.7K


AVERAGE:                13.4%   96.1%   868     666.2ms 0.0     18.9K   44.6K


TOTAL:          0.5GB/  4.0GB           1736    1.33s   0.0     37.8K   89.1K

 

3. 压测结果

3.1 总结

1,即使对于5k~10k大数据,mc的吞吐和延时表现也令人感到满意。

2,连接数需要控制,100个并发连接的延时是1000个并发连接的1%,吞吐也高了3倍。

3,大量的eviction对mc本身影响不大,但在这个场景显然需要预热。因为大数据会迅速占据所有slab空间,导致后面的小数据无内存可分,如下面的统计:

[root@yf08801 maoyidao]# ./memcache-tool localhost:11211

  #  Item_Size  Max_age   Pages   Count   Full?  Evicted Evict_Time OOM

 12     1.2K      3043s       1     885     yes     7837        5    0

 13     1.4K      3047s       1     708     yes    31336        1    0

 14     1.8K      3047s       1     564     yes    40180        1    0

 15     2.3K      3047s       1     451     yes    49471        1    0

 16     2.8K      3048s       1     361     yes    63140        0    0

 17     3.5K      3048s       1     288     yes    78878        0    0

 18     4.4K      3048s       1     230     yes    98750        0    0

 19     5.5K      3043s      63   11592     yes   117272        5    0

 20     6.9K      3037s     234   34398     yes   131097       11    0

 21     8.7K      3037s     365   43070     yes   163339       11    0

 22    10.8K      3037s     365   34310     yes   132305       11    0

 

3.2 原始数据摘要

数据大小:5k~10k,set 10w次;

1000个连接:3436.0 rsp/s;Response time [ms]: avg 178.0 min 0.0 max 2244.1 stddev 0.22

100个连接:9909.9 req/s;Response time [ms]: avg 0.6 min 0.1 max 2.4 stddev 0.00

 

1
3
分享到:
评论

相关推荐

    memcached for win32

    "memcached for win32" 指的是 Memcached 数据库缓存系统的一个版本,专为在 Windows 32 位操作系统上运行而设计。Memcached 是一个广泛使用的开源分布式内存对象缓存系统,它能够提高 Web 应用程序的性能,通过在...

    Memcached1.4.13 For Windows 32/64

    这是 memcached 在 Windows 系统下的 x86/x64 版本。 命令提示符下运行 安装: memcached -d install memcached -d start net start "Memcached Server" 卸载: memcached -d stop memcached -d remove sc delete ...

    memcached安装及java应用使用memcached

    Memcached是一个高性能、轻量级的分布式内存对象缓存系统,用于在Web应用中加速动态数据访问。 **描述分析:** 虽然描述部分是空的,但我们可以推测文章可能涵盖了安装memcached的基本步骤,以及Java开发者如何...

    hibernate-memcached包

    **hibernate-memcached包** 是一个专为Hibernate框架设计的扩展,目的是将流行的分布式内存缓存系统Memcached整合到Hibernate中,作为其二级缓存解决方案。在大型分布式应用中,缓存技术是提高性能的关键,特别是...

    MySQL与Memcached的强强联合:加速数据库性能

    MySQL是一个流行的开源关系型数据库管理系统(RDBMS),广泛用于Web应用程序的后端数据存储。它基于结构化查询语言(SQL)来管理数据,并且是LAMP(Linux, Apache, MySQL, PHP/Python/Perl)技术栈的一部分,这个...

    spring整合memcached

    在IT行业中,Spring框架是Java领域最常用的轻量级应用框架之一,而Memcached则是一种高性能、分布式的内存对象缓存系统。这篇文章将详细介绍如何将Spring与Memcached整合,帮助新手入门这一技术栈。 首先,我们需要...

    memcached for windows

    **memcached for Windows** Memcached是一款高性能、分布式内存对象缓存系统,用于减轻数据库负载,提高网站或应用程序的性能。它最初是为Unix系统设计的,但随着时间的推移,也逐渐支持了Windows操作系统。本篇...

    memcached for windows source

    "memcached for windows source" 这个标题指的是 Memcached 数据库系统在 Windows 操作系统上的源代码版本。Memcached 是一个高性能、分布式内存对象缓存系统,通常用于减轻数据库负载,提高 Web 应用程序的响应速度...

    memcached for window32

    **Memcached for Windows 32位系统** Memcached是一款高性能、分布式内存对象缓存系统,最初设计用于加速动态Web应用程序,通过将数据存储在内存中,以减少对数据库的访问来提高性能。这款软件通常在Linux环境下...

    Memcached For ASP

    2. **无长度限制**:与传统ASP中的缓存解决方案相比,Memcached for ASP不受数据长度的限制,可以处理大容量的数据存储需求。 3. **高效稳定**:这个客户端经过优化,确保在ASP环境中能够高效且稳定地运行,减少了...

    Memcached原理和使用详解.docx

    * 社交媒体网站:Memcached可以用于缓存用户数据,提高网站的速度 * 电子商务网站:Memcached可以用于缓存商品信息,提高网站的速度 * 博客网站:Memcached可以用于缓存博客文章,提高网站的速度 Memcached类似的...

    memcached for java client 例子

    "memcached for java client 例子" 指的是一个使用Java语言编写的客户端库,用于与memcached缓存系统进行交互。Memcached是一种高性能、分布式内存对象缓存系统,常用于减轻数据库负载,提升Web应用的响应速度。 **...

    memcached For NET 3.5

    memcached 是一个高性能、分布式内存对象缓存系统,它广泛用于加速动态Web应用,通过在内存中缓存数据和对象来减少数据库访问,从而提高性能。 **描述分析:**描述中的"memcached For NET 3.5"进一步强调了这是针对...

    java_memcached-release_2.5.1.jar Memcache java jar 包

    Java Memcached是一个流行的Java客户端库,用于与Memcached缓存系统进行交互。Memcached是一种分布式内存对象缓存系统,常用于减轻数据库负载,提高Web应用的性能。在本例中,我们关注的是`java_memcached-release_...

    最新版Memcached for windows + 源码

    Memcached是一款高性能、分布式内存对象缓存系统,它广泛应用于Web应用中,用来减轻数据库的负载,通过将数据存储在内存中,实现快速访问。这款软件最初由Danga Interactive开发,现已成为开源社区中的热门项目,...

    memcached-笔记资料

    【标题】"memcached-笔记资料"涉及到的核心知识点是分布式内存缓存系统——Memcached,它是一个高性能、轻量级的缓存解决方案,主要用于减轻数据库的负载,提高Web应用的性能。 【描述】"memcached-笔记资料"暗示了...

    Memcached For PHP Windows版 带Memcache扩展和安装使用说明

    Memcached的安装步骤: 1.下载memcached的windows稳定版,解压放某个盘下面,比如在c:\memcached 2.在终端(也即cmd命令界面)下输入'c:\memcached\memcached.exe -d install'安装 3.再输入:'c:\memcached\...

Global site tag (gtag.js) - Google Analytics