系统环境:
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 一项有明显的区别。
分享到:
相关推荐
【标题】"grizzly-http-ajp-1.9.42.zip" 是一个与开源项目相关的压缩包,其中包含了Grizzly HTTP...同时,对于银行和保险行业的风险评估流程,这涉及数据分析、信贷政策和保险精算,与IT技术虽然相关但属于不同领域。
这三款工具的结合使用,可以构建一个强大的开发环境,支持从Web应用开发到后端服务的部署,再到数据处理和分析等一系列工作。无论是Java Web应用的开发和运行,还是Python程序的编写和执行,都需要这些基础工具的...
标题"AJP.zip_it"暗示了这个压缩包可能包含与AJP(Apache JServ Protocol)相关的IT资源,这是一项用于Web服务器和应用服务器之间通信的协议。AJP主要被用于连接Apache HTTP服务器和Tomcat这样的Java应用服务器,以...
7. **JVM优化**:学习JVM的运行原理,如类加载机制、编译优化(JIT)、垃圾收集策略,以及如何通过监控工具进行性能分析和调优。 8. **设计模式**:掌握23种经典设计模式,了解其应用场景和优缺点,提升代码的可...
**四、AJP与HTTP比较** - **性能**:AJP通常比HTTP更快,因为它避免了HTTP的多层解析和封装。 - **安全性**:由于AJP协议的通信内容不加密,因此不如HTTPS安全。在需要加密传输时,通常会结合SSL/TLS进行。 - **...
HTTP Connector处理来自用户的HTTP请求,而AJP Connector则用于与其他Web服务器通信。 在AJP协议中,存在一个可以被攻击者操纵的参数,这导致了文件包含漏洞。由于AJP协议不直接暴露给最终用户,而是由Web服务器...
CNVD(中国国家信息安全漏洞库)是专门负责收集、分析和发布网络安全漏洞信息的机构,而2020-10487是这个漏洞的特定编号。这个压缩包很可能是用于研究或测试此漏洞的资源集合。 【描述】中的“已整理”可能意味着这...
Tomcat通过Connector组件与外部世界交互,实现不同协议(如HTTP/1.1, AJP等)的支持。Protocol Handlers是Connector的具体实现,负责接收和发送网络数据。 4. **ClassLoader机制**: Tomcat使用自定义的...
总结,"tomcat-connectors-1.2.26-src.tar.gz"不仅是一个开源的软件包,更是学习和研究AJP协议、Apache Web服务器与Tomcat集成的关键资源。通过阅读和理解源码,开发者能够更好地掌握Web服务器与应用服务器间的交互...
可以利用工具如Logstash、ELK Stack(Elasticsearch, Logstash, Kibana)或Graylog来收集、分析和展示来自Tomcat和HTTP服务器的日志数据,以便于故障排查和性能优化。 7. **性能优化**: 集成过程中,还需要关注...
- **AJP Connector**:基于AJP(Apache JServ Protocol)协议,专为Tomcat与其他HTTP服务器(如Apache)间通信设计,具有高速传输效率。 - **APR (Apache Portable Runtime) HTTP Connector**:C语言实现,通过JNI...
在深入分析Tomcat的架构之前,需要了解Tomcat是Apache Jakarta项目中的一个核心项目,是一个免费的开源Servlet容器。它主要用于作为独立服务器或集成到Web服务器中,如Apache和IIS等。作为Web服务器,Tomcat负责解析...
通过精确的检测和数据分析,技术人员能够确保这款集成电路在健伍DP-R5080影碟机中以及其他应用中保持高效且可靠的性能。在日常的维护工作中,了解并掌握这类检测数据对于提升设备的稳定性和延长使用寿命具有重要意义...
Tomcat Connectors作为Tomcat与网络世界的桥梁,它主要包含两个部分:`Http11Protocol`(处理HTTP/1.1协议)和`Ajp13Protocol`(处理AJP/1.3协议)。这两个类实现了`Connector`接口,负责监听端口、接收请求并转发给...
水晶球软件CrystalBall是一款由Oracle公司开发的数据分析和模拟软件,旨在帮助用户对不确定性进行分析和模拟,以便更好地做出决策。软件支持多种类型的数据分析和模拟,包括回归分析、时间序分析、蒙特卡罗模拟等。 ...
- 配置Apache和Tomcat的日志记录,以便于故障排查和性能分析。 - 使用监控工具如Nagios、Zabbix等监控服务器状态,确保系统稳定运行。 通过上述步骤,你可以成功地整合Apache与Tomcat,实现一个高性能的Web服务...
Geronimo支持多种Tomcat连接器,包括HTTP、HTTPS、AJP和BIO/NIO模式,以及APR(Apache Portable Runtime)接口,这些连接器负责处理客户端请求和响应。此外,还有针对Web模块的具体配置。 Websphere的Web容器配置...
同时,为每个Tomcat实例配置独立的访问日志,便于追踪和分析问题。 这份"apache+tomcat集群配置文件和文档"将涵盖以上所有要点,指导你逐步配置和测试Apache+Tomcat集群。按照文档操作,你将能够构建出一个高效且...
总结,Apache Tomcat Connectors是Apache和Tomcat集成的关键组件,通过源码分析和Linux环境下的整合步骤,我们可以更好地理解和控制它们之间的交互,从而提升网站的性能和稳定性。在实际应用中,灵活配置和优化连接...