SPECweb2009调优指南

飞腾开发者 2024-07-01 13:33:02 阅读 97

 【写在前面】

飞腾开发者平台是基于飞腾自身强大的技术基础和开放能力,聚合行业内优秀资源而打造的。该平台覆盖了操作系统、算法、数据库、安全、平台工具、虚拟化、存储、网络、固件等多个前沿技术领域,包含了应用使能套件、软件仓库、软件支持、软件适配认证四大板块,旨在共享尖端技术,为开发者提供一个涵盖多领域的开发平台和工具套件。

点击这里开始你的技术升级之旅吧

image.png

本文分享至飞腾开发者平台《SPECweb2009调优指南》

1 介绍

SPECweb2009 是衡量 Web 服务器性能和能效的标准化基准,可以对 Web 服务器的并发数进行性能测试,评测 Web 服务器能够支持的最大同时连接数的客户端/服务器(每秒能够响应的最大请求数)。为充分利用服务器性能,提升SPECweb2009测试结果,可通过增大系统进程数、优化服务器软件参数、绑核以及优化参数等。

2 环境要求

测试时使用的全部具体环境要求如下表所示。

项目 说明
机器类型 被测端:飞腾腾云S2500服务器、测试端:X86服务器
被测端操作系统 CentOS Linux release 7.9.2009 (AltArch)
被测端内核版本 4.19.5l
测试端操作系统 CentOS Linux release 7.6.1810 (Core)
测试端内核版本 4.19.5
Apache 2.4.51

3 测试拓扑图

本次测试中,以飞腾腾云S2500服务器作为Web服务器端,Client端和Besim端均部署在X86服务器上,网卡均使用Mellonx 10G网卡。拓扑图如下图所示。本文调优基于Apache服务器软件,故Web服务器上使用的是Apache软件。

image.png

4 测试调优手段

4.1 参数调优

4.1.1 增大系统最大进程数

原理:修改系统的最大进程数,可以提高测试的并发数;

调优方式可以如下表所示:

参数 修改方式
/etc/security/limits.conf 在文件尾部添加如下内容:

* hard nproc 65536

* soft nproc 65536

* hard nfile 65536

* soft nfile 65536

* soft stack unlimited

* soft core unlimited

* hard core unlimited

* - nofile 65536

vm.max_map_count(client 节点) sysctl -w vm.max_map_count=131060
4.1.2 优化web服务器软件参数(依据所使用的web服务器软件而定)

原理:优化web服务器软件参数,可以充分利用和整合该软件的资源,如线程、生存期处理请求数等,提升处理性能。

调优方式:本次测试使用Apache的Worker多进程处理模式,在测试端和被测端均修改/usr/local/apache2/conf/extra/httpd-mpm.conf文件,修改参考如下

找到<IfModule mpm_worker_module>,将其他模式全注释。将worker模式修改如下:

StartServers 6 //初始进程数

ServerLimit 60 //表示服务器允许开启的最大进程数

ThreadLimit 600 //每个子进程可配备的线程数上限

MaxClients 36000 //允许同时伺服的最大接入请求数量,数值等于ServerLimit* ThreadLimit

MinSpareThreads 25 //空闲线程数,若总的空闲线程数太少,子进程将产生新的空闲线程

MaxSpareThreads 650 //最大空闲线程数,若空闲线程数太多,将杀死多余空闲线程

ThreadsPerChild 600 //每个子进程建立的常驻线程数

MaxRequestWorkers 20000 //代表最大请求数(因为在Worker MPM模块中,一个请求数对应一个线程,故也可以理解为最大线程数。理论上,最大线程数不能超过最大进程数与每个进程可创建的线程数的乘积)

MaxRequestsPerChild 0 //设置每个子进程在其生存期内允许伺服的最大请求数量

4.1.3 优化测试参数

增大java的初始堆和最大堆大小。修改参考如下表所示。

修改文件 建议值
start_client.sh $JAVA -Xms16384m -Xmx16384m -classpath bin/specweb2009.jar:bin/check.jarspecwebclient
start_prime_client.sh $JAVA -Xms16384m -Xmx16384m –classpath bin/specweb2009.jar:bin/check.jar:lib/jcommon-1.0.15.jar:lib/jfreechart-1.0.12.jar specweb
4.1.4 绑核

原理:将进程和中断进行绑核,可避免频繁地核间调度带来的性能损耗。

调优方式参考如下:在绑核中进行三方面的绑核,首先进行httpd进程的绑核,在server端和Besim端分别对httpd进程进行绑核,本次调优的httpd进程绑定在0-63上,可根据具体情况调整。httpd进程绑核可查考如下脚本:

#!/bin/bash

NUM=`ps aux | grep -i httpd | grep -v grep | wc -l`

for i in $(seq 1 $NUM)

do

PID=`ps aux | grep httpd | grep -v grep | awk '{print $2}' | sed -n "$i"p`

echo $PID

echo ""

taskset -pc $1 $PID

done

然后,进行中断绑核,本次调优将Mellonx网卡中断绑定在0-7上,可根据具体情况调整。

最后在Client端进行对测试进程进行绑核,修改start_client.sh和start_prime_client.sh文件,修改如下:

#vim start_client.sh

taskset -ac CPU java -Xms16384m -Xmx16384m -classpath bin/specweb2009.jar:bin/check.jar

specwebclient

#vim start_prime_client.sh

taskset -ac CPU java -Xms16384m -Xmx16384m –classpath

bin/specweb2009.jar:bin/check.jar:lib/jcommon-1.0.15.jar:lib/jfreechart-1.0.12.jar specweb

5 问题分析

5.1 运行期间遇到SocketTimeoutException

5.1.1 问题描述和分析

当遇到SocketTimeoutException问题时,可能是你的服务器的session已超载,或者你的httpd的配置出现问题。出错如图下图所示。

image.png

5.1.2 解决办法

原先mpm_worker_module中的MaxRequestWorkers值只有400,导致测4000 session出错,增大/usr/local/apache2/conf/extra/httpd-mpm.conf 中的MaxRequestWorkers的值,然后重启httpd服务。

5.2 报错404

5.2.1 问题描述和分析

当出现报错404时,表示访问的页面没找到,这可能是准备的资源数量少于访问的session数量。出错截图如下图所示。

image.png

5.2.2 解决办法

增大web服务器端和Besim服务器端support_downloads_props.rc 和 support_image_props.rc文件中的SIMULTANEOUS_SESSIONS 值,重新执行如下命令:

#cd /web2009-1.20/Wafgen

#./Wafgen.sh unix/support_downloads_props.rc

#./Wafgen.sh unix/support_image_props.rc

6 调优结果

6.1 测试命令

首先生成测试所需的资源,先修改Client端和web server端/web2009-1.20/Wafgen/unix/目录下的support_downloads_props.rc和support_image_props.rc中SIMULTANEOUS_SESSIONS值,参考值大小为18000,接着执行如下命令:

#cd /web2009-1.20/Wafgen

#./Wafgen.sh unix/support_downloads_props.rc

#./Wafgen.sh unix/support_image_props.rc

最后到Client端的/web2009-1.20/Client和/web2009-1.20/Prime_Client下分别执行以下命令:

# ./start_client.sh //先在Client目录下执行此命令

# ./start_prime_client.sh

6.2 结果比较

开始时,未经过调优,当Test.config中的SIMULTANEOUS_SESSIONS值为300时,测试结果为48671 requests, 79.1% good;调优后 SIMULTANEOUS_SESSIONS的值可以增至9000,测试结果为1607377 requests, 99.78% good。调优后具体每个不同 SIMULTANEOUS_SESSIONS结果如表所示。测试结果部分截图如下图所示。

SIMULTANEOUS_SESSIONS 总请求数 请求Good比例
4000 713671 99.96%
5000 892886 99.94%
9000 1607377 99.78%

未调优SIMULTANEOUS_SESSIONS为300的结果

image.png

调优后SIMULTANEOUS_SESSIONS为9000的结果

image.png

推荐阅读

基于飞腾腾云S2500的SPECWeb2009部署指南SPDK的本地环境搭建和本地测试方法

欢迎广大开发者来飞腾开发者平台获取更多前沿技术文档及资料

如开发者在使用飞腾产品有任何问题可通过在线工单联系我们


版权所有。飞腾信息技术有限公司 2023。保留所有权利。

未经本公司同意,任何单位、公司或个人不得擅自复制,翻译,摘抄本文档内容的部分或全部,不得以任何方式或途径进行传播和宣传。

商标声明

Phytium和其他飞腾商标均为飞腾信息技术有限公司的商标。

本文档提及的其他所有商标或注册商标,由各自的所有人拥有。

注意

本文档的内容视为飞腾的保密信息,您应当严格遵守保密任务;未经飞腾事先书面同意,您不得向任何第三方披露本文档内容或提供给任何第三方使用。

由于产品版本升级或其他原因,本文档内容会不定期进行更新。除非另有约定,本文档仅作为使用指导,飞腾在现有技术的基础上尽最大努力提供相应的介绍及操作指引,但飞腾在此明确声明对本文档内容的准确性、完整性、适用性、可靠性的等不作任何明示或暗示的保证。

本文档中所有内容,包括但不限于图片、架构设计、页面布局、文字描述,均由飞腾和/或其关联公司依法拥有其知识产权,包括但不限于商标权、专利权、著作权等。非经飞腾和/或其关联公司书面同意,任何人不得擅自使用、修改,复制上述内容。



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。