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

apache的关键配置如下``` Timeout 180KeepAlive OnMaxKeepAliveRequests 100KeepAliveTimeout 60

StartServers         10ServerLimit          50MaxClients           1500MinSpareThreads      50MaxSpareThreads      200ThreadsPerChild      50MaxRequestsPerChild  10000
```bash
$ cat workers.properties# mod_jk(Apache Tomcat)
worker.list=local
```bash
worker.local.type=ajp13worker.local.host=localhostworker.local.port=7001worker.local.lbfactor=50worker.local.cachesize=100worker.local.cache_timeout=600worker.local.socket_keepalive=1worker.local.recycle_timeout=300

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;}
测试的结果表明对于普通的java应用,nginx的延迟会稍微地点,QPS会稍微能跑的高点点。

![nginx_httpd_1ms1](/picture/25d2e05f.png)

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

![nginx_httpd0](/picture/f1872f8f.png)

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

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

$ free -mtotal       used       free     shared    buffers     cachedMem:          2000       1401        598          0         11       1220-/+ buffers/cache:        169       1830Swap:         1953          4       1948