1、服务器基准测试,叶金荣 yejinrong http:/ 2012-11-30,写在最前面,非专业人士整理,有任何不正确的地方请指正 测试结果表格模板中的数据不准确,可以无视,概要,服务器是业务的基础单元,提供线上业务服务,存储着重要数据,如何保证服务器高性能、高可靠运行非常关键。对于服务器硬件一般关注几点: 和老一代产品对比,改变或优化的地方 和同档次其他厂商产品对比,优劣之处 服务器可靠性、性能表现 设计特点、功耗了解上述几点后,针对服务器的测试也就有了相应的方案。,大纲,技术指标对比 测试工具 性能基准测试 可靠性测试 模拟意外事件 长期极限高压 模拟恶劣环境 测试报告 附件下载,技术指
2、标对比,性能基准测试 关注点,何为基准 通过设计科学的测试方法、测试工具和测试系统,实现对一类测试对象的某项性能指标进行定量的和可对比的测试(百度百科) 重点关注 CPU:计算,尤其是浮点运算 内存:带宽、吞吐 磁盘:IOPS、响应时间 数据库:OLTP、OLAP、响应时间 注意事项 持续压力过大无法反应服务器真实最优表现 持续压力时间过短亦无法反应服务器真实最优表现,性能基准测试 关注点,CPU 简单素数计算、复杂浮点计算 thread分配 mutex性能关注信息 计算能力 多线程并发 mutex管理常地,随着计算机工艺的发展,大部分应用下,CPU几乎不再成为瓶颈。一般只关注不同品牌厂商、不
3、同工艺、不同主频下的不同表现,其他情况下,无需太多关注。,性能基准测试 关注点,内存 总带宽 读写效率 CPU对内存的管理分配关注信息 读写效率通常,内存越大越好,可有效减少磁盘物理IO。一般只关注不同品牌厂商、不同工艺、不同主频下的不同表现,其他情况下,无需太多关注。,性能基准测试 关注点,磁盘IOPS 读写效率 随机写性能关注信息 不同内核、文件系统下的IOPS 不同阵列级别、条带场景下的IOPS 和内存结合时的IOPS性能拐点 达到同样IOPS情景下,IO利用率差别 跑满IO以及IO压力较轻情景下,各自IO利用率差别 sar -d:tps、svctm、%util通常,磁盘物理IO是这个计
4、算机体系里最容易成为瓶颈的环节,也是最难优化的,因此最需要关注。随着SSD、Fusion-IO出现,磁盘IOPS获得了巨大提升,和内存相比,差距在不断缩小。,性能基准测试 关注点,OLTP/OLAP TPS、QPS、 响应延迟/分析、吞吐效率关注信息 不同内核、文件系统下的TPS 不同阵列级别、条带场景下的TPS 和内存结合时的TPS性能拐点 达到同样TPS情景下,IO负载差别 TPS满负荷、低负荷情景下,各自IO利用率差别 sar -d:tps、svctm、%util通常,数据总量超过物理内存后,OLTP的TPS性能和磁盘IOPS成正比关系。因此,只有不断提高内存,减少物理IO,并且不断提升
5、IOPS性能。,性能基准测试 关键因素,硬件 CPU、内存、阵列卡(BBU、CACHE、条带、读写策略)、硬盘 系统 内核参数、文件系统、IO调度器 文件 块大小、访问模式 其他 网络环境对over lan请求测试影响大 每完成一轮测试后要净化环境 每轮测试一般至少持续1小时,测试工具,sysbench Primarily for MySQL OLTP benchmarking,By MySQL AB cpu、threads、mutex、memory、fileio、oltp iozone filesystem benchmark tool tpcc-mysql Primarily for My
6、SQL OLTP benchmarking,By Percona tpch Primarily for OLAP benchmarking 其他 OLTP:mysqlslap、sql-bench IOPS:bonnie、orion、 iometer 综合:stress,测试工具 - sysbench,安装 ./configure -with-mysql-includes=path -with-mysql-libs=path & make & make install支持其他数据库 with-pgsql with-oracle运行 sysbench -test=mode other_option
7、s prepare sysbench -test=mode other_options run sysbench -test=mode other_options cleanup,测试工具 - sysbench,通用基准 最大请求数:5,000,000 并发线程数:8 512基准 - cpu cpu-max-prime=500,000基准 - threads thread-yields=5,000,000 thread-locks=8512,测试工具 - sysbench,基准 - mutex mutex-num=5,000,000 mutex-loops=100,000 mutex-lock
8、s=100,000基准 - fileio file-num=100 file-total-size=物理内存 物理内存的8倍 mode=seqwr/seqrewr/seqrd/rndrd/rndwr/rndrw,测试工具 - sysbench,基准 - memory mode=complex engine=innodb oltp-table-size=100,000,000基准 OLTP mode=complex engine=innodb oltp-table-size=100,000,000,测试工具 - sysbench,fileio modeOLTP mode,测试工具 - iozon
9、e,安装 make linux-AMD64运行 iozone -R -E -s 3200M -l 10 -r 4k,测试工具 - iozone,基准 - fileio file-block-size=4k 8k 16k 32k 64k file-num=1 2 4 8 16 file-size=1G 2G 4G 8G 16G mode=seqwr/seqrewr/seqrd/rndrd/rndwr/rndrw,测试工具 - tpcc mysql,安装 下载 bzr branch lp:percona-dev/perconatools/tpcc-mysql 直接make即可 create_tab
10、le.sql - 创建数据表 add_fkey_idx.sql 创建索引及外键初始化加载数据 tpcc_load db_host db_name db_user db_passwd db_warehouse_num 例如:tpcc_load localhost tpcc1000 user passwd 1000运行OLTP测试 ./tpcc_start -h localhost -d tpcc1000 -u root -p xx -w 1000 -c 32 -r 120 -l 3600 -f ./tpcc_mysql_20120314,测试工具 - tpcc mysql,基准 - OLTP w
11、arehouse = 1000 max connection = 8 512 warm up = 120(s) run time/duration = 3600(s),测试工具 tpch,安装 cp makefile.suite makefile 编辑 makefile 文件 CC = gcc DATABASE = MYSQL MACHINE = LINUX WORKLOAD = TPCH 编辑tpcd.h,增加宏定义 #ifdef MYSQL #define GEN_QUERY_PLAN “ #define START_TRAN “START TRANSACTION“ #define END
12、_TRAN “COMMIT“ #define SET_OUTPUT “ #define SET_ROWCOUNT “limit %d;n“ #define SET_DBASE “use %s;n“ #endif,测试工具 tpch,初始化 初始化测试表数据: ./dbgen -s 100 生成测试数据:mysql -f tpch dss.ddl 默认的初始化模式无主键、无索引 LOAD DATA INFILE导入数据 注意max_binlog_cache_size限制,需要切分文件导入 执行修改主键/外键/额外索引脚本 数据表名全部改成小写,适应TPC-H测试SQL脚本 运行qgen生成测试S
13、QL 修改部分SQL语句 拆分完成测试SQL脚本成23个测试SQL运行 执行23个测试脚本,记录运行时长,测试工具 tpch,基准 - tpch warehouse = 100 单进程 tpch侧重OLAP模型,而MySQL并不适合OLAP,因此warehouse设定较小,测试报告,cpu - sysbench,测试报告,memory - sysbench,测试报告,fileio - sysbench,测试报告,fileio - iozone,测试报告,oltp - sysbench,测试报告,oltp - tpcc,测试报告,olap tpch,可靠性测试,模拟意外事件 断电(硬件冷重启) RESET(硬件热重启) 阵列卡掉线 磁盘掉线 REBOOT(系统重启) 正常关闭服务(kill -TERM) 异常关闭服务(kill -9) 磁盘空间满 删除文件 破坏性修改已打开文件 ,可靠性测试,长期极限高压 持续数小时、数天、数周运行高负载计算、IO任务 考验服务器在高压下的性能波动情况 考验硬件设备在高压下的稳定性表现模拟恶劣环境 供电不稳 通风冷却不好 湿气大、灰尘多,附件下载,整合sysbench测试脚本 下载 整合iozone测试脚本 下载 整合tpcc-mysql测试脚本 下载 整合tpch测试脚本 下载 汇总下载 下载 测试结果表格模板 下载,