LoaRunner性能测试系统学习教程:MPM调优(6)( 二 )


的值除以ThreadsPerChild的值 。
但实际过程中客户端的请求可能难达到
MaxRequestWorkers的值
因为在整个过程中子进程可能会被终止 。
通常我们会设置成以下设置来来最大请求最大化 。

  • MaxConnectionsPerChild的值设置为零 。
  • MaxSpareThreads的值设置为与MaxRequestWorkers的值一致 。
相对于prefork来说 , worker主要是提高了我们的并发能力 。 但是其它最大的缺点:
  • 由于同一个子进程生成的线程是共享相同的内存的 , 所以如果有某个线程出现异常时 , 会导致父子进程出现异常 。
  • 如果某线程出现长连接等待时 , 其它的线程必须也是在长时间等待 。
【LoaRunner性能测试系统学习教程:MPM调优(6)】3)event模块
event模块工作原理如图所示 。
LoaRunner性能测试系统学习教程:MPM调优(6)文章插图
event工作原理是:
1.当apache启动时 , apache服务器会生成一个主进程 , 这个主进程是由root来生成的 。
2.依靠主进程生成多子进程 , 至于能生成多少子进程是取决于startserver和serverlimt 。
3.每子进程会生成多个线程 , 以及一个侦听器线程 , 该侦听器会侦听所在当活动的套接字以及套接字整个处理请求和数据的过程中 。
至于每个进程能生成多少线程是取决于ThreadsPerChild 。
4.每个线程同时只能处理一个HTTP请求 。
event模块会尝试去修复HTTP中的
“keepaliveproblem” 。
当完成第一个请求后 , 会将连接一直保持着 , 接下来会使用同一个套接字发送其它的请求 。 这样可以节约大量创建TCP连接的时间 。
但是这个有一个问题 , ApacheHTTPServer会一直保留着子进程或线程来等待客户端的数据 。 所以会有一个专门的侦听器 , 来侦听所有套接字以及剩余的需要处理的数据 。