nginx和apache在java应用上的对比

今天有专门测试对比了一下nginx和apache在jboss上次代理的性能。apache是通过jk模块使用ajp协议把请求转给java,nginx的测试是直接把jboss上开启一个HTTP 1.1端口服务进行测试。找开发写了一个简单的页面,对页面的处理就是sleep 4ms,jboss里配置的都是最多能启动400个线程。

apache的关键配置如下
[text]
Timeout 180
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 60

<IfModule worker.c>
StartServers 10
ServerLimit 50
MaxClients 1500
MinSpareThreads 50
MaxSpareThreads 200
ThreadsPerChild 50
MaxRequestsPerChild 10000
</IfModule>

$ cat workers.properties
# mod_jk(Apache Tomcat)

worker.list=local

worker.local.type=ajp13
worker.local.host=localhost
worker.local.port=7001
worker.local.lbfactor=50
worker.local.cachesize=100
worker.local.cache_timeout=600
worker.local.socket_keepalive=1
worker.local.recycle_timeout=300
[/text]
nginx的配置如下:

[text]
upstream jboss {
server 127.0.0.1:7002;
keepalive 10;
}
server {
listen 1080;
server_name localhost;
charset gbk;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-By $server_addr:$server_port;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Connection "";
proxy_http_version 1.1;
location / {
rewrite ^/?$ /index.html permanent;
index index.html index.htm;
proxy_pass http://jboss;
proxy_intercept_errors on;
proxy_connect_timeout 5s;
proxy_read_timeout 10s;
proxy_send_timeout 5s;
proxy_buffer_size 16k;
proxy_buffers 8 64k;
proxy_busy_buffers_size 128k;
}
[/text]

测试的结果表明对于普通的java应用,nginx的延迟会稍微地点,QPS会稍微能跑的高点点。
nginx_httpd_1ms1

但是整体来说,性能的瓶颈点还是在后端的java上面,使用nginx的整体性能上提升不大,不过因为nginx使用的非阻塞IO模型,nginx的不会像apache一样因为总体的连接数达到上线而不能处理。后来又单独测试了一下nginx和apache在处理一个普通的静态页面时对比,为了不使得测试的受限制于带宽,页面大小搞了个663字节的,不过最后的结果我觉得还是因为把虚拟机的带宽快跑满了。

nginx_httpd0

nginx的峰值大概时26588.81/s,带宽用了130Mbps左右。从图书可以看出随着并发数的增加nginx的响应时间也有所提升,不过不大,apache的就飙的很夸张了,QPS大幅度下降,延迟飙升特别大。

机器配置:
processor : 0
model name : Intel(R) Xeon(R) CPU E5620 @ 2.40GHz
processor : 1
model name : Intel(R) Xeon(R) CPU E5620 @ 2.40GHz
processor : 2
model name : Intel(R) Xeon(R) CPU E5620 @ 2.40GHz
processor : 3
model name : Intel(R) Xeon(R) CPU E5620 @ 2.40GHz

$ free -m
total used free shared buffers cached
Mem: 2000 1401 598 0 11 1220
-/+ buffers/cache: 169 1830
Swap: 1953 4 1948

此条目发表在nginx分类目录。将固定链接加入收藏夹。

发表回复