nginx+tomcat集群下的压力测试
我现在在单机下尝试模拟nginx+tomcat集群的配置,开了3台虚拟机,1台作nginx服务器另外两台作tomcat服务器。
tomcat下的也设置了maxThreads和timeOut的值。
nginx配的是将所有请求全部转发给后端的两台tomcat。
最后再装了nginx的虚拟机上用ab进行压力测试,在 -n 10000 -c 1500的时候
去测试192.168.171.134:18082没有问题,而测用127.0.0.1测nginx的时候则报错了。
apr_socket_recv: Connection timed out (110)
这个错误去查了说是修改sysctl.conf的参数,关于内核的优化我也去改过了,不过没用。按理说如果是这个问题的话,测192.168.171.134的时候同样是1500并发也应该报错的,但只有测nginx的时候才会报错,而且如果不用nginx的proxy_pass,单单测nginx下的html页面也不会报错。
还有比较奇怪的是,为什么配了nginx做负载均衡后无论用ab还是webbench测试得到的结果都是加上nginx后更慢呢而且还容易fail,我用的是tomcat的主页index.jsp作的测试页面
那么是不是我nginx哪里配的不对呢,我一时想不明白,有人能帮助我吗?
nginx.conf
user nobody;
worker_processes 2;
worker_rlimit_nofile 204800;
events {
use epoll;
worker_connections 204800;
}
http {
include mime.types;
default_type application/octet-stream;
fastcgi_intercept_errors on;
charset utf-8;
server_names_hash_bucket_size 128;
client_header_buffer_size 4k;
large_client_header_buffers 4 32k;
client_max_body_size 300m;
sendfile on;
tcp_nopush on;
keepalive_timeout 60;
tcp_nodelay on;
client_body_buffer_size 512k;
proxy_connect_timeout 5;
proxy_read_timeout 60;
proxy_send_timeout 5;
proxy_buffer_size 16k;
proxy_buffers 4 64k;
proxy_busy_buffers_size 128k;
proxy_temp_file_write_size 128k;
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.1;
gzip_comp_level 2;
gzip_types text/plain application/x-javascript text/css application/xml;
gzip_vary on;
upstream abc {
server 192.168.171.4:8080 weight=1 max_fails=2 fail_timeout=30s;
server 192.168.171.134:18082 weight=1 max_fails=2 fail_timeout=30s;
}
server {
listen 80;
server_name localhost;
large_client_header_buffers 4 16k;
client_max_body_size 300m;
client_body_buffer_size 128k;
proxy_connect_timeout 6000;
proxy_read_timeout 6000;
proxy_send_timeout 6000;
proxy_buffer_size 64k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
location / {
proxy_next_upstream http_502 http_504 http_404 error timeout invalid_header;
proxy_pass http://abc;
}
}
}