memcached性能测试(arm环境 鲲鹏920)

1. 测试简介

memcached是一套分布式的高速缓存系统,由LiveJournal的Brad Fitzpatrick开发,但目前被许多网站使用以提升网站的访问速度,尤其对于一些大型的、需要频繁访问数据库的网站访问速度提升效果十分显著。这是一套开放源代码软件,以BSD license授权发布。
memaslap是一个用于memcached服务器的负载生成和基准测试工具。它生成可配置的工作负载,如线程、并发、连接、运行时、覆盖、丢失率、键大小、值大小、获取/设置比例、预期吞吐量等。此外,还对数据验证、过期验证、UDP、二进制协议、facebook测试、复制测试、多重获取和重连等进行了测试。

2. 前置条件

3. 测试环境说明

3.1. 服务器配置

鲲鹏920/64

配置型号
CPUKunpeng 920-6426 x2
主板型号TaiShan 200(Model 2280)
内存Samsung M393A4K40CB2-CTD DDR4 SDRAM 2666MT/s 32G x8 共 256G
硬盘
网卡

3.2. 操作系统

Kylin Linux Advanced Server release V10 (Tercel)

3.3. memcahe版本

1.6.12

4. 测试过程

4.1. 方案

使用两台服务器,一台安装测试工具作为客户机,另一台安装memcached作为服务机,在客户机上运行测试工具,对服务机进行压测。观察测试期间服务机的CPU、内存、网络IO和磁盘IO的消耗情况,并记录测试结果。

4.2. 步骤

  1. 服务机上安装memcache
wget http://memcached.org/files/memcached-1.6.12.tar.gz
tar -zxvf memcached-1.6.12.tar.gz
cd memcached-1.6.12/
yum install libevent-devel -y
./configure && make && make test && sudo make install
  1. 服务机上配置并启动服务
#运行memcache
memcached -d -p 11211 -m 102400 -c 20000 -u root

-d 表示后台运行
-p 指定端口
-m 表示使用多少内存用于存储Item,单位为mb
-c 表示支持的并发数
-t 线程数,默认为4

  1. 客户机上安装测试工具
wget https://launchpad.net/libmemcached/1.0/1.0.18/+download/libmemcached-1.0.18.tar.gz
tar -xzvf libmemcached-1.0.18.tar.gz
cd libmemcached-1.0.18/
./configure --enable-memaslap
vi Makefile
修改4708行,行尾添加-lpthread
vi clients/memflush.cc
修改42行和52行,由if (opt_servers == false)改为if (!opt_servers)
make && make install
  1. 运行测试
    编写测试配置文件
    vi config
#comments should start with '#'
#key
#start_len end_len proportion
#
#key length range from start_len to end_len
#start_len must be equal to or greater than 16
#end_len must be equal to or less than 250
#start_len must be equal to or greater than end_len
#memaslap will generate keys according to the key range
#proportion: indicates keys generated from one range accounts for the total
generated keys
#
#example1: key range 16~100 accounts for 80%
#          key range 101~200 accounts for 10%
#          key range 201~250 accounts for 10%
#          total should be 1 (0.8+0.1+0.1 = 1)
#
#          16 100 0.8
#          101 200 0.1
#          201 249 0.1
#
#example2: all keys length are 128 bytes
#
#          128 128 1
key
128 128 1
#value
#start_len end_len proportion
#
#value length range from start_len to end_len
#start_len must be equal to or greater than 1
#end_len must be equal to or less than 1M
#start_len must be equal to or greater than end_len
#memaslap will generate values according to the value range
#proportion: indicates values generated from one range accounts for the
total generated values
#
#example1: value range 1~1000 accounts for 80%
#          value range 1001~10000 accounts for 10%
#          value range 10001~100000 accounts for 10%
#          total should be 1 (0.8+0.1+0.1 = 1)
#
#          1 1000 0.8
#          1001 10000 0.1
#          10001 100000 0.1
#
#example2: all value length are 128 bytes
#
#          128 128 1
value
2048 2048 1
#cmd
#cmd_type cmd_proportion
#
#currently memaslap only testss get and set command.
#
#cmd_type
#set     0
#get     1
#
#example: set command accounts for 50%
#         get command accounts for 50%
#         total should be 1 (0.5+0.5 = 1)
#
#         cmd
#         0    0.5
#         1    0.5
cmd
0    0.1
1    0.9

执行测试

export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
ulimit -n 10240 #设置最大文件打开数
memaslap -s localhost:11211  -T 64  -c 64   -F config -x 10000000

-s 所要连接的memcache服务端
-T 线程数, better equal to CPU numbers
-c 并发数
-F 加载的配置文件
-x set/get数量,默认100w

结果输出

servers : localhost:11211
threads count: 25
concurrency: 50
execute number: 10000000
windows size: 10k
set proportion: set_prop=0.00
get proportion: get_prop=1.00
cmd_get: 10000000
cmd_set: 512000
get_misses: 0
written_bytes: 1938528000
read_bytes: 11744096000
object_bytes: 589824000

Run time: 149.2s Ops: 10512000 TPS: 70468 Net_rate: 87.5M/s

OPS表示总操作数
TPS表示每秒事务数,该指标作为性能关键指标
Net_rate网络吞吐量

测试场景

  • 单独读(1千万数据,50,100,200,400,600并发,key=128b,value=1024b)

对应配置文件

generated keys
key
128 128 1
total generated values
value
1024 1024 1
cmd
0    0
1    1
  • 单独写(1千万数据,50,100,200,400,600并发,key=128b,value=1024b)
generated keys
key
128 128 1
total generated values
value
1024 1024 1
cmd
0    1
1    0
  • 混合读写(9:1)(1千万数据,50,100,200,400,600并发,key=128b,value=1024b)
generated keys
key
128 128 1
total generated values
value
1024 1024 1
cmd
0    0.1
1    0.9

调优
1、 绑定核
查看numa信息

numactl --hardware

绑定cpu

numactl -N 1 -m 1  memcached -d -p 11211 -t 64 -u root -m 40960 -c 200000
numactl -N 0 -m 0 memaslap -s localhost:11211  -T 25  -c 800   -F config -x 10000000

不论是服务端还是压力测试工具都进行cpu绑定,目前发现服务端不设置cpu绑定的读性能会更好,但对写性能相反
2、 开启huge page(忽略)
3、 增加memcached线程数
使用-t参数设置较大的memcached线程数,比如64

5. 测试结果

1. 读测试
基准结果(未设置调优参数)

并发数50100200400600
tps156713160085173450191104203727

调优结果

并发数50100200400600
tps

2. 写测试
基准结果(未设置调优参数)

并发数50100200400600
tps121051100408102853111839103012

调优结果

并发数50100200400600
tps

3. 混合测试

并发数50100200400600
tps131791129575137695139405128539

6. 结果分析

目前看到memcached的读性能瓶颈,受限于网络带宽(增加并发数后,网络吐吞量几乎达到10Gbps网卡上限)。通过增加memcahced的线程数和进行cpu绑定可以大幅度提高Memcache性能。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 性能测试数据库调优可以从以下几个方面入手: 1. 硬件调优:包括增加CPU、内存、硬盘等硬件资源,以提高数据库的运行效率。 2. SQL 语句优化:通过优化 SQL 语句,减少查询的时间,提高数据库的响应速度。具体的优化方法包括:使用索引、避免使用子查询和联合查询、避免全表扫描等。 3. 数据库参数调优:通过修改数据库的参数设置,提高数据库的性能表现。具体的调优方法包括:修改缓存大小、调整连接数、优化 I/O 策略等。 4. 数据库结构优化:通过优化数据库的结构,提高数据库的性能表现。具体的优化方法包括:拆分大表、分区表、数据压缩等。 5. 系统性能优化:通过优化操作系统的性能,提高数据库的性能表现。具体的优化方法包括:优化文件系统、调整网络参数等。 需要注意的是,在进行性能测试数据库调优时,需要根据实际情况进行优化,不同的数据库、不同的应用场景可能需要采用不同的优化方法,需要针对性地进行调优。 ### 回答2: 性能测试数据库的调优是为了提高数据库的性能和响应速度,保证系统能够在高负载情况下正常工作。下面是调优性能测试数据库的一些常见步骤和方法: 1. 确定性能指标:首先需要明确性能测试的指标,如响应时间、吞吐量和并发数等。这些指标将有助于评估和优化数据库的性能。 2. 建立基准:在进行任何调优之前,需要先建立一个基准测试,记录数据库在正常工作情况下的性能水平。这样可以作为后续调优的对比基准。 3. 优化SQL查询:性能测试数据库的调优常常涉及对SQL查询的优化。可以通过优化查询语句、选择合适的索引、避免全表扫描等方式提高查询效率。 4. 调整数据库参数:各个数据库系统提供了一系列的参数调整选项,可以根据实际情况调整这些参数来优化性能。例如,可以调整内存缓存区大小、并发连接数以及日志记录等参数。 5. 数据库分区和分片:如果数据量庞大,可以考虑使用数据库分区和分片技术来提高性能。分区可以根据数据范围或其他关键字段将数据分散到多个表空间中,分片将数据水平分散到多个数据库实例中。 6. 优化数据库结构:合理的数据库结构设计有助于提高性能。可以根据实际需求进行表的分解和合并,避免多余的关联和重复数据,以及合理地设计索引等。 7. 定期维护和监控:性能调优不是一次性的工作,需要定期维护和监控数据库的性能。可以通过定期清理无用数据、备份和恢复数据、监控数据库性能指标等方式来保持数据库的良好状态。 总而言之,性能测试数据库的调优需要综合考虑多个方面,包括SQL查询优化、数据库参数调整、数据库结构优化和监控等。通过不断的优化和维护,可以提高数据库的性能,确保系统在高压力环境下的可靠性和稳定性。 ### 回答3: 性能测试是为了评估数据库在负载条件下的性能和稳定性,以确保它在生产环境中能够满足需求。在进行性能测试时,可以通过以下几个方面对数据库进行调优。 首先,优化查询语句。查询语句是数据库性能的瓶颈之一,可以通过优化查询语句的编写,减少数据访问的次数和数据量,减轻数据库的负载。例如,使用合适的索引、避免使用不必要的连接和子查询,以及使用合理的查询条件等方法,都可以提高查询效率。 其次,通过调整数据库参数来优化性能。数据库提供了各种参数用于配置其行为,可以根据负载情况调整这些参数,以优化性能。例如,可以调整并发连接数、缓冲区大小、日志写入频率等参数,以提高数据库的吞吐量和响应速度。 然后,可以进行硬件优化。可以考虑增加硬件资源,例如数据库服务器的内存、磁盘空间和CPU等,以提高数据库处理能力。此外,使用高性能硬盘或使用磁盘阵列等技术,还可以提高数据库的读写性能。 最后,可以进行数据库架构的优化。数据库架构的设计对于性能有很大影响,可以通过合理划分表和索引、分区和分表技术等来提高数据库的性能。此外,还可以考虑使用数据库缓存技术,例如Redis或Memcached等,来减轻数据库的负载。 总之,性能测试数据库的调优需要综合考虑查询优化、参数优化、硬件优化和架构优化等方面,根据具体情况采取相应的措施,以提高数据库的性能和稳定性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值