`
zzc1684
  • 浏览: 1223249 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

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最大连接数

Java代码  收藏代码
  1. 在/usr/local/etc/apache22/httpd.conf中加载MPM配置(去掉前面的注释):  
  2. # Server-pool management (MPM specific)  
  3. Include etc/apache22/extra/httpd-mpm.conf  
  4.   
  5. 修改d-mpm.conf中对应module如下  
  6. <IfModule mpm_prefork_module>  
  7.                 StartServers                      5  
  8.                 MinSpareServers                   5  
  9.                 MaxSpareServers                  10  
  10.                 ServerLimit                     3000  
  11.                 MaxClients                      2000  
  12.                 MaxRequestsPerChild               0  
  13. </IfModule>]  



一、benchmark测试方法
./ab -n 100000 -c 100 http://localhost/test
使用ab进行测试,当并发较高时,会出现以下错误
错误1:apr_socket_recv: Connection reset by peer (104)

Java代码  收藏代码
  1. apache2.2及以下版本  
  2. 修改support下面的ab.c源代码, 大概在  
  3. line 1369, 修改成  
  4. 1368                 return;  
  5. 1369             } else {  
  6. 1370                 //apr_err("apr_socket_recv", status);  
  7. 1371                 bad++;  
  8. 1372                 close_connection(c);  
  9. 1373                 return;  
  10. 1374             }  
  11. 然后编译安装  


错误2:Too many open files (24)

(PS;使用AJP协议和HTTP协议,多次进行测试,取测试结果较好的一次进行比较)

二、使用AJP后的benchmark

Java代码  收藏代码
  1. Benchmarking localhost (be patient)  
  2. Completed 10000 requests  
  3. Completed 20000 requests  
  4. Completed 30000 requests  
  5. Completed 40000 requests  
  6. Completed 50000 requests  
  7. Completed 60000 requests  
  8. Completed 70000 requests  
  9. Completed 80000 requests  
  10. Completed 90000 requests  
  11. Completed 100000 requests  
  12. Finished 100000 requests  
  13.   
  14.   
  15. Server Software:          
  16. Server Hostname:        localhost  
  17. Server Port:            80  
  18.   
  19. Document Path:          /test  
  20. Document Length:        347 bytes  
  21.   
  22. Concurrency Level:      100  
  23. Time taken for tests:   50.270 seconds  
  24. Complete requests:      100000  
  25. Failed requests:        0  
  26. Write errors:           0  
  27. Total transferred:      48712175 bytes  
  28. HTML transferred:       34708675 bytes  
  29. Requests per second:    1989.24 [#/sec] (mean)  
  30. Time per request:       50.270 [ms] (mean)  
  31. Time per request:       0.503 [ms] (mean, across all concurrent requests)  
  32. Transfer rate:          946.29 [Kbytes/sec] received  
  33.   
  34. Connection Times (ms)  
  35.               min  mean[+/-sd] median   max  
  36. Connect:        0   23  15.3     21     714  
  37. Processing:     2   27  19.8     24     724  
  38. Waiting:        1   22  15.4     20     714  
  39. Total:          9   50  25.3     44     747  
  40.   
  41. Percentage of the requests served within a certain time (ms)  
  42.   50%     44  
  43.   66%     49  
  44.   75%     53  
  45.   80%     55  
  46.   90%     64  
  47.   95%     73  
  48.   98%     87  
  49.   99%    101  
  50.  100%    747 (longest request)  



三、使用HTTP 后的benchmark

Java代码  收藏代码
  1. Benchmarking localhost (be patient)  
  2. Completed 10000 requests  
  3. Completed 20000 requests  
  4. Completed 30000 requests  
  5. Completed 40000 requests  
  6. Completed 50000 requests  
  7. Completed 60000 requests  
  8. Completed 70000 requests  
  9. Completed 80000 requests  
  10. Completed 90000 requests  
  11. Completed 100000 requests  
  12. Finished 100000 requests  
  13.   
  14.   
  15. Server Software:        Apache-Coyote/1.1  
  16. Server Hostname:        localhost  
  17. Server Port:            80  
  18.   
  19. Document Path:          /test  
  20. Document Length:        347 bytes  
  21.   
  22. Concurrency Level:      100  
  23. Time taken for tests:   55.392 seconds  
  24. Complete requests:      100000  
  25. Failed requests:        0  
  26. Write errors:           0  
  27. Total transferred:      51415934 bytes  
  28. HTML transferred:       34710757 bytes  
  29. Requests per second:    1805.32 [#/sec] (mean)  
  30. Time per request:       55.392 [ms] (mean)  
  31. Time per request:       0.554 [ms] (mean, across all concurrent requests)  
  32. Transfer rate:          906.47 [Kbytes/sec] received  
  33.   
  34. Connection Times (ms)  
  35.               min  mean[+/-sd] median   max  
  36. Connect:        0   24  10.1     24     185  
  37. Processing:     8   31  10.7     28     215  
  38. Waiting:        1   26  10.0     24     198  
  39. Total:         13   55  12.3     51     247  
  40.   
  41. Percentage of the requests served within a certain time (ms)  
  42.   50%     51  
  43.   66%     54  
  44.   75%     58  
  45.   80%     60  
  46.   90%     66  
  47.   95%     74  
  48.   98%     86  
  49.   99%     99  
  50.  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 一项有明显的区别。

分享到:
评论

相关推荐

    grizzly-http-ajp-1.9.42.zip

    【标题】"grizzly-http-ajp-1.9.42.zip" 是一个与开源项目相关的压缩包,其中包含了Grizzly HTTP...同时,对于银行和保险行业的风险评估流程,这涉及数据分析、信贷政策和保险精算,与IT技术虽然相关但属于不同领域。

    三个 工具类 的下载,AJP

    这三款工具的结合使用,可以构建一个强大的开发环境,支持从Web应用开发到后端服务的部署,再到数据处理和分析等一系列工作。无论是Java Web应用的开发和运行,还是Python程序的编写和执行,都需要这些基础工具的...

    AJP.zip_it

    标题"AJP.zip_it"暗示了这个压缩包可能包含与AJP(Apache JServ Protocol)相关的IT资源,这是一项用于Web服务器和应用服务器之间通信的协议。AJP主要被用于连接Apache HTTP服务器和Tomcat这样的Java应用服务器,以...

    AJP.rar_java programming

    7. **JVM优化**:学习JVM的运行原理,如类加载机制、编译优化(JIT)、垃圾收集策略,以及如何通过监控工具进行性能分析和调优。 8. **设计模式**:掌握23种经典设计模式,了解其应用场景和优缺点,提升代码的可...

    AJP:包含Java中套接字编程的源代码

    **四、AJP与HTTP比较** - **性能**:AJP通常比HTTP更快,因为它避免了HTTP的多层解析和封装。 - **安全性**:由于AJP协议的通信内容不加密,因此不如HTTPS安全。在需要加密传输时,通常会结合SSL/TLS进行。 - **...

    Apache-Tomcat从文件包含到RCE漏洞原理深入分析1

    HTTP Connector处理来自用户的HTTP请求,而AJP Connector则用于与其他Web服务器通信。 在AJP协议中,存在一个可以被攻击者操纵的参数,这导致了文件包含漏洞。由于AJP协议不直接暴露给最终用户,而是由Web服务器...

    CNVD-2020-10487-Tomcat-Ajp-lfi-master.zip

    CNVD(中国国家信息安全漏洞库)是专门负责收集、分析和发布网络安全漏洞信息的机构,而2020-10487是这个漏洞的特定编号。这个压缩包很可能是用于研究或测试此漏洞的资源集合。 【描述】中的“已整理”可能意味着这...

    TOMCAT源代码,包括转载得别人的分析

    Tomcat通过Connector组件与外部世界交互,实现不同协议(如HTTP/1.1, AJP等)的支持。Protocol Handlers是Connector的具体实现,负责接收和发送网络数据。 4. **ClassLoader机制**: Tomcat使用自定义的...

    tomcat-connectors-1.2.26-src.tar.gz

    总结,"tomcat-connectors-1.2.26-src.tar.gz"不仅是一个开源的软件包,更是学习和研究AJP协议、Apache Web服务器与Tomcat集成的关键资源。通过阅读和理解源码,开发者能够更好地掌握Web服务器与应用服务器间的交互...

    tomcat 与其它http服务器集成

    可以利用工具如Logstash、ELK Stack(Elasticsearch, Logstash, Kibana)或Graylog来收集、分析和展示来自Tomcat和HTTP服务器的日志数据,以便于故障排查和性能优化。 7. **性能优化**: 集成过程中,还需要关注...

    tomcat源码分析1

    - **AJP Connector**:基于AJP(Apache JServ Protocol)协议,专为Tomcat与其他HTTP服务器(如Apache)间通信设计,具有高速传输效率。 - **APR (Apache Portable Runtime) HTTP Connector**:C语言实现,通过JNI...

    tomcat 架构 分析

    在深入分析Tomcat的架构之前,需要了解Tomcat是Apache Jakarta项目中的一个核心项目,是一个免费的开源Servlet容器。它主要用于作为独立服务器或集成到Web服务器中,如Apache和IIS等。作为Web服务器,Tomcat负责解析...

    元器件应用中的HM系列HM514256AJP8集成电路实用检测数据

    通过精确的检测和数据分析,技术人员能够确保这款集成电路在健伍DP-R5080影碟机中以及其他应用中保持高效且可靠的性能。在日常的维护工作中,了解并掌握这类检测数据对于提升设备的稳定性和延长使用寿命具有重要意义...

    tomcat-connectors-1.2.40-src.zip

    Tomcat Connectors作为Tomcat与网络世界的桥梁,它主要包含两个部分:`Http11Protocol`(处理HTTP/1.1协议)和`Ajp13Protocol`(处理AJP/1.3协议)。这两个类实现了`Connector`接口,负责监听端口、接收请求并转发给...

    水晶球软件 CrystalBall-11124.850-32/64 pj

    水晶球软件CrystalBall是一款由Oracle公司开发的数据分析和模拟软件,旨在帮助用户对不确定性进行分析和模拟,以便更好地做出决策。软件支持多种类型的数据分析和模拟,包括回归分析、时间序分析、蒙特卡罗模拟等。 ...

    apache与tomcat整合方法.pdf

    - 配置Apache和Tomcat的日志记录,以便于故障排查和性能分析。 - 使用监控工具如Nagios、Zabbix等监控服务器状态,确保系统稳定运行。 通过上述步骤,你可以成功地整合Apache与Tomcat,实现一个高性能的Web服务...

    主流应用服务器对webContainer的配置对比分析new.doc

    Geronimo支持多种Tomcat连接器,包括HTTP、HTTPS、AJP和BIO/NIO模式,以及APR(Apache Portable Runtime)接口,这些连接器负责处理客户端请求和响应。此外,还有针对Web模块的具体配置。 Websphere的Web容器配置...

    apache+tomcat集群配置文件和文档

    同时,为每个Tomcat实例配置独立的访问日志,便于追踪和分析问题。 这份"apache+tomcat集群配置文件和文档"将涵盖以上所有要点,指导你逐步配置和测试Apache+Tomcat集群。按照文档操作,你将能够构建出一个高效且...

    tomcat-connectors-1.2.32-src.tar.gz

    总结,Apache Tomcat Connectors是Apache和Tomcat集成的关键组件,通过源码分析和Linux环境下的整合步骤,我们可以更好地理解和控制它们之间的交互,从而提升网站的性能和稳定性。在实际应用中,灵活配置和优化连接...

Global site tag (gtag.js) - Google Analytics