AJP与HTTP比较和分析
系统环境:
OS:Ubuntu 10.10 (2G)
Servlet Container:tomcat-tomcat-7.0.23 (最大内存:default 256M maxThreads:500)
Web server: apache2.2 (maxClient:250)
设置apache最大连接数
- 在/usr/local/etc/apache22/httpd.conf中加载MPM配置(去掉前面的注释):
- # Server-pool management (MPM specific)
- Include etc/apache22/extra/httpd-mpm.conf
- 修改d-mpm.conf中对应module如下
- <IfModule mpm_prefork_module>
- StartServers 5
- MinSpareServers 5
- MaxSpareServers 10
- ServerLimit 3000
- MaxClients 2000
- MaxRequestsPerChild 0
- </IfModule>]
一、benchmark测试方法
./ab -n 100000 -c 100 http://localhost/test
使用ab进行测试,当并发较高时,会出现以下错误
错误1:apr_socket_recv: Connection reset by peer (104)
- apache2.2及以下版本
- 修改support下面的ab.c源代码, 大概在
- line 1369, 修改成
- 1368 return;
- 1369 } else {
- 1370 //apr_err("apr_socket_recv", status);
- 1371 bad++;
- 1372 close_connection(c);
- 1373 return;
- 1374 }
- 然后编译安装
错误2:Too many open files (24)
(PS;使用AJP协议和HTTP协议,多次进行测试,取测试结果较好的一次进行比较)
二、使用AJP后的benchmark
- Benchmarking localhost (be patient)
- Completed 10000 requests
- Completed 20000 requests
- Completed 30000 requests
- Completed 40000 requests
- Completed 50000 requests
- Completed 60000 requests
- Completed 70000 requests
- Completed 80000 requests
- Completed 90000 requests
- Completed 100000 requests
- Finished 100000 requests
- Server Software:
- Server Hostname: localhost
- Server Port: 80
- Document Path: /test
- Document Length: 347 bytes
- Concurrency Level: 100
- Time taken for tests: 50.270 seconds
- Complete requests: 100000
- Failed requests: 0
- Write errors: 0
- Total transferred: 48712175 bytes
- HTML transferred: 34708675 bytes
- Requests per second: 1989.24 [#/sec] (mean)
- Time per request: 50.270 [ms] (mean)
- Time per request: 0.503 [ms] (mean, across all concurrent requests)
- Transfer rate: 946.29 [Kbytes/sec] received
- Connection Times (ms)
- min mean[+/-sd] median max
- Connect: 0 23 15.3 21 714
- Processing: 2 27 19.8 24 724
- Waiting: 1 22 15.4 20 714
- Total: 9 50 25.3 44 747
- Percentage of the requests served within a certain time (ms)
- 50% 44
- 66% 49
- 75% 53
- 80% 55
- 90% 64
- 95% 73
- 98% 87
- 99% 101
- 100% 747 (longest request)
三、使用HTTP 后的benchmark
- Benchmarking localhost (be patient)
- Completed 10000 requests
- Completed 20000 requests
- Completed 30000 requests
- Completed 40000 requests
- Completed 50000 requests
- Completed 60000 requests
- Completed 70000 requests
- Completed 80000 requests
- Completed 90000 requests
- Completed 100000 requests
- Finished 100000 requests
- Server Software: Apache-Coyote/1.1
- Server Hostname: localhost
- Server Port: 80
- Document Path: /test
- Document Length: 347 bytes
- Concurrency Level: 100
- Time taken for tests: 55.392 seconds
- Complete requests: 100000
- Failed requests: 0
- Write errors: 0
- Total transferred: 51415934 bytes
- HTML transferred: 34710757 bytes
- Requests per second: 1805.32 [#/sec] (mean)
- Time per request: 55.392 [ms] (mean)
- Time per request: 0.554 [ms] (mean, across all concurrent requests)
- Transfer rate: 906.47 [Kbytes/sec] received
- Connection Times (ms)
- min mean[+/-sd] median max
- Connect: 0 24 10.1 24 185
- Processing: 8 31 10.7 28 215
- Waiting: 1 26 10.0 24 198
- Total: 13 55 12.3 51 247
- Percentage of the requests served within a certain time (ms)
- 50% 51
- 66% 54
- 75% 58
- 80% 60
- 90% 66
- 95% 74
- 98% 86
- 99% 99
- 100% 247 (longest request)
四、结论
If integration with the native webserver is needed for any reason,
an AJP connector will provide faster performance than proxied HTTP.
前端apache,后端tomcat,通过ajp协议访问性能优于http协议,随着并发量的提升,效果会更加趋于明显。可以从吞吐率和总时间开销上观察。
(吞吐率:单位时间内计算机的处理请求来描述其并发处理能力)
可以参考下ajp协议的设计 http://httpd.apache.org/docs/2.2/mod/mod_proxy_ajp.html
原因总结如下:
1、ajp使用长连接保持webServer和servlet Container的通信,减少了建立tcp连接的开销。可以通过观察tomcat/manager 下serverStatus,ajp建立的连接都处于keepalive的状态。
2、ajp使用一定的协议格式,减少了传递的报文数据大小,节省了带宽。可以通过观察ajp和http 的benchmark报告重看到,Total transferred 一项有明显的区别。
AJP与HTTP比较和分析的更多相关文章
- Tomcat AJP 文件包含漏洞复现(CVE-2020-1938)
漏洞原理 Tomcat配置了两个Connecto,它们分别是HTTP和AJP. HTTP默认端口为8080,处理http请求:AJP默认端口8009,用于处理 AJP 协议的请求. AJP比http更 ...
- Tomcat配置(三):tomcat处理连接的详细过程
*/ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...
- Tomcat(三):tomcat处理连接的详细过程
Tomcat系列文章:http://www.cnblogs.com/f-ck-need-u/p/7576137.html tomcat可以处理静态资源的请求,也可以通过servlet处理动态资源的请求 ...
- AJP协议总结与分析
Tomcat服务器通过Connector连接器组件与客户程序建立连接,Connector组件负责接收客户的请求,以及把Tomcat服务器的响应结果发送给客户.默认情况下,Tomcat在server.x ...
- tomcat源码分析(三)一次http请求的旅行-从Socket说起
p { margin-bottom: 0.25cm; line-height: 120% } tomcat源码分析(三)一次http请求的旅行 在http请求旅行之前,我们先来准备下我们所需要的工具. ...
- tomcat源码分析(一)从tomcat架构说起
p { margin-bottom: 0.25cm; line-height: 120% }
- Tomcat源码分析
前言: 本文是我阅读了TOMCAT源码后的一些心得. 主要是讲解TOMCAT的系统框架, 以及启动流程.若有错漏之处,敬请批评指教! 建议: 毕竟TOMCAT的框架还是比较复杂的, 单是从文字上理解, ...
- Tomcat处理HTTP请求源码分析(上)(转)
转载自:http://www.infoq.com/cn/articles/zh-tomcat-http-request-1 很多开源应用服务器都是集成tomcat作为web container的,而且 ...
- 服务器程序源代码分析之三:gunicorn
服务器程序源代码分析之三:gunicorn 时间:2014-05-09 11:33:54 类别:网站架构 访问: 641 次 gunicorn是一个python web 服务部署工具,类似flup,完 ...
随机推荐
- [BZOJ4540][HNOI2016]序列 莫队
4540: [Hnoi2016]序列 Time Limit: 20 Sec Memory Limit: 512 MB Description 给定长度为n的序列:a1,a2,…,an,记为a[1:n ...
- Classical Binary Search
Find any position of a target number in a sorted array. Return -1 if target does not exist. 与题目 Firs ...
- 前端基础----JavaScript基础
一.JavaScript概述 1,JavaScript的历史 1992年Nombas开发出C-minus-minus(C--)的嵌入式脚本语言(最初绑定在CEnvi软件中).后将其改名ScriptEa ...
- struts2 - View页面中获取Action的成员变量
struts2 - View页面中获取Action的成员变量 2016年03月02日 11:04:44 IT男青年 阅读数:1074 View页面中获取Action的成员变量 按照Struts的设 ...
- chrome插件控制台
在manifest.json中添加下面的几行 "background": { "scripts": ["background.js"] }, ...
- 使用无线网卡搭建虚拟wifi
1.首先以管理员身份运行命令提示符 开始->搜索框输入cmd,出来的cmd.exe上右键管理员身份运行,或者win+R打开运行提示框,输入cmd并回车. 2.设置“虚拟Wifi网卡”模式 敲入命 ...
- Qt ------ stylesheet 样式
1.所有的窗口组件都可以用 setStyleSheet() 设置样式 2.使用样式,显示效果可以不受平台影响,比如保证window 7 和 linux 显示效果是一样的 QVariant 如果 sty ...
- 「Django」rest_framework学习系列-解析器
满足两个要求,request.Post中才有值 1.请求头要求:请求头中的Content-Type为application/x-www-form-urlencoded 2.数据格式要求 name=x& ...
- AES和RSA混合加密技术在网络数据传输中的应用
原文:http://www.fx361.com/page/2017/0110/519967.shtml 摘要:文章通过分析和比较AES加密算法和RsA加密算法的实现过程和各自的特点, ...
- sqlserver 2008备份与还原
一.SQL数据库的备份: 1.依次打开 开始菜单 → 程序 → Microsoft SQL Server 2008 → SQL Server Management Studio → 数据库:Dside ...