【写在前面】 飞腾开发者平台是基于飞腾自身强大的技术基础和开放能力,聚合行业内优秀资源而打造的。该平台覆盖了操作系统、算法、数据库、安全、平台工具、虚拟化、存储、网络、固件等多个前沿技术领域,包含了应用使能套件、软件仓库、软件支持、软件适配认证四大板块,旨在共享尖端技术,为开发者提供一个涵盖多领域的开发平台和工具套件。 点击这里开始你的技术升级之旅吧
本文分享至飞腾开发者平台《SPECweb2009调优指南》
SPECweb2009 是衡量 Web 服务器性能和能效的标准化基准,可以对 Web 服务器的并发数进行性能测试,评测 Web 服务器能够支持的最大同时连接数的客户端/服务器(每秒能够响应的最大请求数)。为充分利用服务器性能,提升SPECweb2009测试结果,可通过增大系统进程数、优化服务器软件参数、绑核以及优化参数等。
测试时使用的全部具体环境要求如下表所示。
项目 | 说明 |
---|---|
机器类型 | 被测端:飞腾腾云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 |
本次测试中,以飞腾腾云S2500服务器作为Web服务器端,Client端和Besim端均部署在X86服务器上,网卡均使用Mellonx 10G网卡。拓扑图如下图所示。本文调优基于Apache服务器软件,故Web服务器上使用的是Apache软件。
原理:修改系统的最大进程数,可以提高测试的并发数;
调优方式可以如下表所示:
参数 | 修改方式 |
---|---|
/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 |
原理:优化web服务器软件参数,可以充分利用和整合该软件的资源,如线程、生存期处理请求数等,提升处理性能。
调优方式:本次测试使用Apache的Worker多进程处理模式,在测试端和被测端均修改/usr/local/apache2/conf/extra/httpd-mpm.conf文件,修改参考如下
找到
StartServers 6 //初始进程数 ServerLimit 60 //表示服务器允许开启的最大进程数 ThreadLimit 600 //每个子进程可配备的线程数上限 MaxClients 36000 //允许同时伺服的最大接入请求数量,数值等于ServerLimit* ThreadLimit MinSpareThreads 25 //空闲线程数,若总的空闲线程数太少,子进程将产生新的空闲线程 MaxSpareThreads 650 //最大空闲线程数,若空闲线程数太多,将杀死多余空闲线程 ThreadsPerChild 600 //每个子进程建立的常驻线程数 MaxRequestWorkers 20000 //代表最大请求数(因为在Worker MPM模块中,一个请求数对应一个线程,故也可以理解为最大线程数。理论上,最大线程数不能超过最大进程数与每个进程可创建的线程数的乘积) MaxRequestsPerChild 0 //设置每个子进程在其生存期内允许伺服的最大请求数量
增大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 |
原理:将进程和中断进行绑核,可避免频繁地核间调度带来的性能损耗。
调优方式参考如下:在绑核中进行三方面的绑核,首先进行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
当遇到SocketTimeoutException问题时,可能是你的服务器的session已超载,或者你的httpd的配置出现问题。出错如图下图所示。
原先mpm_worker_module中的MaxRequestWorkers值只有400,导致测4000 session出错,增大/usr/local/apache2/conf/extra/httpd-mpm.conf 中的MaxRequestWorkers的值,然后重启httpd服务。
当出现报错404时,表示访问的页面没找到,这可能是准备的资源数量少于访问的session数量。出错截图如下图所示。
增大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
首先生成测试所需的资源,先修改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
开始时,未经过调优,当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的结果
调优后SIMULTANEOUS_SESSIONS为9000的结果
推荐阅读
欢迎广大开发者来飞腾开发者平台获取更多前沿技术文档及资料
如开发者在使用飞腾产品有任何问题可通过在线工单联系我们
版权所有。飞腾信息技术有限公司 2023。保留所有权利。
未经本公司同意,任何单位、公司或个人不得擅自复制,翻译,摘抄本文档内容的部分或全部,不得以任何方式或途径进行传播和宣传。
商标声明
Phytium和其他飞腾商标均为飞腾信息技术有限公司的商标。
本文档提及的其他所有商标或注册商标,由各自的所有人拥有。
注意
本文档的内容视为飞腾的保密信息,您应当严格遵守保密任务;未经飞腾事先书面同意,您不得向任何第三方披露本文档内容或提供给任何第三方使用。
由于产品版本升级或其他原因,本文档内容会不定期进行更新。除非另有约定,本文档仅作为使用指导,飞腾在现有技术的基础上尽最大努力提供相应的介绍及操作指引,但飞腾在此明确声明对本文档内容的准确性、完整性、适用性、可靠性的等不作任何明示或暗示的保证。
本文档中所有内容,包括但不限于图片、架构设计、页面布局、文字描述,均由飞腾和/或其关联公司依法拥有其知识产权,包括但不限于商标权、专利权、著作权等。非经飞腾和/或其关联公司书面同意,任何人不得擅自使用、修改,复制上述内容。