东方通应用服务器TongWeb

2016-11-15 00:31:44
刘佳俊
634
最后编辑:大黄鱼 于 2016-11-22 16:57:45

东方通应用服务器TongWeb


国产化整机适配-红旗Power CPU Linux测试

北京东方通科技股份有限公司标准产品服务部

2015-8

概述

背景介绍

红旗软件公司基于IBM开放的OpenPower平台发布了RedFlagPowerLinux操作系统,这次主要在该平台下测试了TongWeb产品的兼容性以及在该一体机上进行初步的探索性性能测试。

测试范围和项目目标

测试范围

  • 最新发布的TongWeb5.0.3.1和TongWeb6.0.3.0进行产品安装、启动测试。
  • Haproxy、nginx、Apache、keepalive、memcached、jk插件的安装和编译测试。
  • 通过部署测试应用对Ibm针对powercpu发布的jdk和红旗集成的openjdk进行初步的对比压力测试

测试目的

  • 软件产品适配
  • 负载均衡软件的适配
  • Jdk初步对比

环境描述

系统部署和网络拓扑图

Dft-yyfwq-tongweb-1.png

在测试环境中,通过路由器将笔记本和目标测试服务器进行内网连接。

服务器硬件配置

测试环境中,各服务器的配置如下:

  • redpower服务器
服务器

Device

PowerNV DDR3 MEM RISER

IP Address

192.168.80.56

CPU

128 processor POWER8 (raw), altivec supported @ 3000.000000MHz

Memory

65G

NIC

千兆

OS

Linux redpower


  • 笔记本压力机
服务器

IP Address

IP DHCP内网分配地址

CPU

2 core Intel(R) Core(TM) CPU i5-3230M @ 2.60GHz @2.6GHz

Memory

4 GB

NIC

百兆

OS

Win10 64位操作系统


服务器软件配置

应用服务器

应用服务器

名称

TongWeb5.0.3.1

版本

TongWeb5.0.3.1

其他

License信息

产品版本: 企业版

License类型: 试用版

License到期时间: 2015-10-27


名称

TongWeb6.0.3.0

版本

TongWeb6.0.3.0

其他

永久license,测试完毕未在测试机上保留


测试工具及监控工具

负载生成工具

LoadRunner 11

性能监控

数据采集工具

只通过linux的命令来进行监控








系统参数设置

TongWeb 应用配置信息

序号

参数名

参数配置

1

JDK Version

Openjdk 1.7.0_79

(Rhel-2.5.5.1.axs7-ppc64le u79-b14)


JVM Heap Size

512m(默认配置)


workthread

200(默认配置)

2

JDK Version

ibmjdk1.7.0

Linux ppc64le-64


JVM Heap Size

512m(默认配置)


workthread

200(默认配置)




适配安装测试

TongWeb5 适配说明

通过对TongWeb5.0.3.1发布的最新版本在redpower上进行安装和启动测试,并未发现不兼容问题,能够正常安装正常启动。

TongWeb6 适配说明

通过对TongWeb6.0.3.0发布的最新版本在redpower上进行安装和启动测试,并未发现不兼容问题,能够正常安装正常启动。

常见负载软件适配说明

Apache&JK 插件

redpower在操作系统已经集成Apache,因此并未再去手动编译和安装Apache,但是jk插件需要手动进行编译配置。下面为编译过程记录:

首先通过命令 rpm –ql httpd进行Apache安装目录的查看,来找到编译jk插件时依赖的Apache的apxs模块位置

其次通过解压缩jk插件,然后进入到native目录之后configure命令指定的目录为

./configure --with-apxs=/usr/bin/apxs

最后make && make install之后生成的mod_jk.so 拷贝到的目录为/usr/lib64/httpd/modules/

HAproxy 的安装

并无特殊之处与其他linux相比,直接执行下列命令就可以安装成功

make TARGET=linux26 PREFIX=/home/tongtech/haproxy

make install PREFIX=/home/tongtech/haproxy

Memcached 的编译安装

Memcached的安装与在其他平台安装需要添加两个参数来指定CPU的类型

./configure --prefix=/home/tongtech/memcached --target=powerpc64le --build=ppc64le




./configure--prefix=/home/tongtech/memcached --with-libevent=/home/tongtech/memcached --target=powerpc64le --build=ppc64le

并且在执行完memcached的make之后会报出如下error

memcached.c: In function ‘complete_incr_bin’:

memcached.c:1022:16: error: dereferencing type-punned pointer will break strict-aliasing rules [-Werror=strict-aliasing]

                c->binary_header.request.cas == ITEM_get_cas(it))) {

                ^

memcached.c:1043:13: error: dereferencing type-punned pointer will break strict-aliasing rules [-Werror=strict-aliasing]

             c->cas = ITEM_get_cas(it);

             ^

memcached.c:1060:17: error: dereferencing type-punned pointer will break strict-aliasing rules [-Werror=strict-aliasing]

                 c->cas = ITEM_get_cas(it);

                 ^

memcached.c: In function ‘process_bin_get’:

memcached.c:1192:9: error: dereferencing type-punned pointer will break strict-aliasing rules [-Werror=strict-aliasing]

         rsp->message.header.response.cas = htonll(ITEM_get_cas(it));

         ^

memcached.c: In function ‘process_bin_update’:

memcached.c:1888:5: error: dereferencing type-punned pointer will break strict-aliasing rules [-Werror=strict-aliasing]

     ITEM_set_cas(it, c->binary_header.request.cas);

     ^

memcached.c:1904:5: error: dereferencing type-punned pointer will break strict-aliasing rules [-Werror=strict-aliasing]

     if (ITEM_get_cas(it) != 0) {

     ^

memcached.c: In function ‘process_bin_append_prepend’:

memcached.c:1948:5: error: dereferencing type-punned pointer will break strict-aliasing rules [-Werror=strict-aliasing]

     ITEM_set_cas(it, c->binary_header.request.cas);

     ^

memcached.c: In function ‘process_bin_delete’:

memcached.c:2013:9: error: dereferencing type-punned pointer will break strict-aliasing rules [-Werror=strict-aliasing]

         if (cas == 0 || cas == ITEM_get_cas(it)) {

         ^

memcached.c: In function ‘do_store_item’:



memcached.c:2126:9: error: dereferencing type-punned pointer will break strict-aliasing rules [-Werror=strict-aliasing]

         else if (ITEM_get_cas(it) == ITEM_get_cas(old_it)) {

         ^

memcached.c:2126:9: error: dereferencing type-punned pointer will break strict-aliasing rules [-Werror=strict-aliasing]

memcached.c:2143:25: error: dereferencing type-punned pointer will break strict-aliasing rules [-Werror=strict-aliasing]

                         (unsigned long long)ITEM_get_cas(old_it),

                         ^

memcached.c:2144:25: error: dereferencing type-punned pointer will break strict-aliasing rules [-Werror=strict-aliasing]

                         (unsigned long long)ITEM_get_cas(it));

                         ^

memcached.c:2157:13: error: dereferencing type-punned pointer will break strict-aliasing rules [-Werror=strict-aliasing]

             if (ITEM_get_cas(it) != 0) {

             ^

memcached.c:2159:17: error: dereferencing type-punned pointer will break strict-aliasing rules [-Werror=strict-aliasing]

                 if (ITEM_get_cas(it) != ITEM_get_cas(old_it)) {

                 ^

memcached.c:2159:17: error: dereferencing type-punned pointer will break strict-aliasing rules [-Werror=strict-aliasing]

memcached.c:2201:13: error: dereferencing type-punned pointer will break strict-aliasing rules [-Werror=strict-aliasing]

             c->cas = ITEM_get_cas(it);

             ^

memcached.c:2213:9: error: dereferencing type-punned pointer will break strict-aliasing rules [-Werror=strict-aliasing]

         c->cas = ITEM_get_cas(it);

         ^

memcached.c: In function ‘process_get_command’:

memcached.c:2591:45: error: dereferencing type-punned pointer will break strict-aliasing rules [-Werror=strict-aliasing]

                                             (unsigned long long)ITEM_get_cas(it));

                                             ^

memcached.c: In function ‘process_update_command’:

memcached.c:2750:5: error: dereferencing type-punned pointer will break strict-aliasing rules [-Werror=strict-aliasing]

     ITEM_set_cas(it, req_cas_id);

     ^



memcached.c: In function ‘do_add_delta’:

memcached.c:2869:9: error: dereferencing type-punned pointer will break strict-aliasing rules [-Werror=strict-aliasing]

         ITEM_set_cas(it, (settings.use_cas) ? get_cas_id() : 0);

         ^

memcached.c: In function ‘main’:

memcached.c:4629:13: error: variable ‘udp_port’ set but not used [-Werror=unused-but-set-variable]

         int udp_port;

             ^

cc1: all warnings being treated as errors

make[2]: *** [memcached-memcached.o] Error 1

make[2]: Leaving directory `/home/tongtech/TongWeb5031NOVM/Memcached/memcached-1.4.4'

make[1]: *** [all-recursive] Error 1

make[1]: Leaving directory `/home/tongtech/TongWeb5031NOVM/Memcached/memcached-1.4.4'

make: *** [all] Error 2

此问题需要将memcached所在文件夹的Makefile文件中如下标红参数去掉(redpower的孙经理说此问题可以不用管它,只是一个校验规则的严密性程度不同而已)

CFLAGS = -g -O2 -pthread -Wall -Werror -pedantic -Wmissing-prototypes -Wmissing-declarations -Wredundant-decls



性能测试

用例选取说明

为了能够初步对比下Tongweb在redpower上集成的openjdk与ibmjdk的性能差别

选取了较常作为测试的Apache的tomcat提供的servletexamples来作为本次初步测试的压测应用,分别部署到安装的针对两款不同jdk发布的Tongweb(原生参数)上,并且通过笔记本的loadrunner来进行测试脚本的录制和在不同并发下这两款jdk的表现来进行初步记录。

场景设计策略

并发策略

在对系统的并发压力测试中,将采取由低到高的并发策略,来验证系统的性能和硬件资源消耗之间的关系(看了下服务器的硬件资源消耗极低,并不构成任何瓶颈点,因此主要以笔记本的压力机能抗住为主),对数据进行记录整理 。并发测试中并发量从10并发开始,到100并发结束。

停止执行策略

测试执行过程中,在出现压力机网络带宽持续占满,loadrunner生成的预定vuser不能正常初始化,并且执行,中止测试。

评测场景说明

评测重点:

  1. 并发场景下执行表单提交响应时间性能;
  2. 并发场景下执行表单提交点击率和事务数。

场景描述:

  1. 并发用户数:10,20,100,
  2. 每个用户执行5分钟;
  3. 初始每1s上一个vuser,停止每1s停一个vuser
  4. 忽略think time;
  5. 关闭日志;
  6. Initialize all Vusers before Run.

评测前准备工作:


操作过程及评测数据:

操作过程:运行test脚本

参数化:无

性能监控:

  1. 运行过程GC情况
  2. 压力机硬件资源情况


测试结果汇总

现将压测三组结果关键参数说明如下,并附概要对比截图,因为此次只是做初步测试,并未做调优,因此对测试结果不做分析,并且此测试结果只说明在特定环境和特定应用下的测试结果,不能作为官方评测数据对外提供。

IBMJDK10并发

Dft-yyfwq-tongweb-2.png













IBMJDK20并发

Dft-yyfwq-tongweb-3.png





















IBMJDK100并发

Dft-yyfwq-tongweb-4.png





















OPENJDK10并发

Dft-yyfwq-tongweb-5.png





















OPENJDK20并发

Dft-yyfwq-tongweb-6.png





















OPENJDK100并发

Dft-yyfwq-tongweb-7.png


发表评论
评论通过审核后显示。