Web服务请求异步化测试

发表于:2014-8-15 11:21

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:cenwenchu79    来源:51Testing软件测试网采编

  Web服务异步化:
  包括两部分,数据传输层异步化(大家已经熟知的NIO),Http业务请求异步化(continuations,servlet3.0)。服务异步处理我将会有一个详细的说明文档(服务异步化的概念,服务异步化的几种标准实现,服务异步化容器的特点),后续给出。
  Web服务异步化测试原因:
  TOP应用特殊性:
  1.自身服务能力由后端的服务能力决定。(对同步Web请求的转发)
  2.后端服务部署等同性,但要求服务互不影响。
  第一点导致TOP无法预估自身服务能力(不同后端服务处理速度下的TOP有不一样的支持能力),同时也无法应对在后端服务异常的情况下,整体的服务质量。
  第二点导致TOP只有在物理上分隔不同服务提供者所对应的TOP集群(资源浪费,同时无法动态调整资源来满足服务变化情况)。
  因此需要对TOP实施web服务异步处理的测试。这里简单的说一下服务异步化的使用场景需要满足的几个特点:
  1. 处理耗时大多消耗在于对后端或者外部服务资源的请求上。
  2. 后端或者外部资源在更多的流量下不会成为瓶颈。
  拿TOP来解释一下:TOP自身处理主要包括路由,安全,流控等,但是最耗时的是在请求后端各个淘宝团队的服务。其次当前后端服务能力尚未达到真实的处理高峰,因此很多请求被堵在TOP平台,特别是当某些服务异常的时候,另一些服务就会被拖累无法得到充分利用。(当然我们有流控,发现后端服务能力已经成为瓶颈的时候可以对单独服务作限制)。
  长话短说,上测试结果……
  环境说明:
  Linux 2.6.9-55.ELsmp
  4 Core
  4 G Memory
  JDK 1.6.0_07
  测试工具:loadRunner 9.5
  测试涉及到了四种容器部署:后面都会用缩写在测试结果上注明
  1.       Apache + modjk + Jboss(后面缩写为Jboss):
  此模式Apache配置如下:
<IfModule mpm_worker_module>
ServerLimit          80
ThreadLimit          128
StartServers         10
MaxClients           10240
MinSpareThreads      64
MaxSpareThreads      800
ThreadsPerChild      128
MaxRequestsPerChild 10000
</IfModule>
  Jboss的web容器配置如下:
  <Connector port="8009" address="${jboss.bind.address}" connectionTimeout="8000" protocol="AJP/1.3" maxThreads="500" minSpareThreads="40" maxSpareThreads="75" maxPostSize="512000" acceptCount="300" bufferSize="16384" emptySessionPath="false" enableLookups="false" redirectPort="8443" URIEncoding="utf-8"/>
  Jboss的web部分以APR模式启动。
  2.       Tomcat6(APR)
  关键配置如下:
  <Executor name="topThreadPool" namePrefix="top-exec-"
  maxThreads="500" minSpareThreads="40"/>
  <Connector port="7777" protocol="HTTP/1.1"
  executor="topThreadPool" connectionTimeout="20000" acceptCount="1000"
  redirectPort="8444" />
  3.       Tomcat7 RC 4(APR)
  关键配置如下:
  <Executor name="topThreadPool" namePrefix="top-exec-"
  maxThreads="500" minSpareThreads="4"/>
  <Connector executor="topThreadPool" port="3333" protocol="HTTP/1.1"
  connectionTimeout="20000" acceptCount="1000"
  redirectPort="6443" />
  4.       Jetty7
  关键配置如下:
<Set name="ThreadPool">
<!-- Default queued blocking threadpool -->
<New class="org.eclipse.jetty.util.thread.QueuedThreadPool">
<Set name="minThreads">10</Set>
<Set name="maxThreads">500</Set>
</Set>
<Call name="addConnector">
<Arg>
<New class="org.eclipse.jetty.server.nio.SelectChannelConnector">
<Set name="host"><SystemProperty name="jetty.host" /></Set>
<Set name="port"><SystemProperty name="jetty.port" default="6060"/></Set>
<Set name="maxIdleTime">300000</Set>
<Set name="Acceptors">2</Set>
<Set name="statsOn">false</Set>
<Set name="confidentialPort">8443</Set>
<Set name="lowResourcesConnections">20000</Set>
<Set name="lowResourcesMaxIdleTime">5000</Set>
</New>
</Arg>
</Call>
21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号