SPECweb2009调优指南

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

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
Apache2.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比例
400071367199.96%
500089288699.94%
9000160737799.78%

  未调优SIMULTANEOUS_SESSIONS为300的结果

image.png

  调优后SIMULTANEOUS_SESSIONS为9000的结果

image.png

推荐阅读

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

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


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

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

商标声明

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

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

注意

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

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

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

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!