Nginx +tomcat做动静分离访问慢

xyjfx 发布于 2014/12/10 12:05
阅读 2K+
收藏 1

@红薯 你好,想跟你请教个问题:

我用Nginx +tomcat做动静分离,部署的web项目,访问html等静态资源速度很快,但是访问.jsp、.action访问速度时慢时正常,知道是什么问题吗?我配置的nginx.conf不正确?

nginx.conf 如下:

#user  nobody;
#工作进程,根据硬件调整,大于等于cpu核数
worker_processes 1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;

events {
#工作进程的最大连接数量,根据硬件调整,和前面工作进程配合起来用,尽量大,但是别把cpu跑到100%就行
    worker_connections  20480;
    accept_mutex off;
}

#设定http服务器,利用它的反向代理功能提供负载均衡支持
http {
    
    include       mime.types;
    default_type  application/octet-stream;


    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;
    sendfile        on;
    #tcp_nopush     on;


    #keepalive_timeout  0;
    keepalive_timeout  185;


    tcp_nodelay on;  
  
    gzip  on;
    gzip_min_length  1k;  
  gzip_buffers     4 16k;  
  gzip_http_version 1.0;  
  gzip_comp_level 4;  
  gzip_types text/html,application/x-javascript,text/css;  
  gzip_vary on;

    upstream localhost {  
      #根据ip计算将请求分配各那个后端tomcat,许多人误认为可以解决session问题,其实并不能。  
      #同一机器在多网情况下,路由切换,ip可能不同  
      #ip_hash;   
      server localhost:8081;  
      #server localhost:8082;  
     } 
    server {
        listen       81;
        server_name  localhost;

# 开启服务器读取文件的缓存, 
open_file_cache max=200 inactive=2h; 
open_file_cache_valid 3h; 
open_file_cache_errors off; 

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            proxy_pass http://localhost;


   proxy_redirect off; 
proxy_set_header Host $host; 
proxy_set_header X-Real-IP $remote_addr; 
proxy_set_header REMOTE-HOST $remote_addr; 
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
client_max_body_size 50m; 
client_body_buffer_size 256k; 
proxy_connect_timeout 1; 
proxy_send_timeout 30; 
proxy_read_timeout 60; 
proxy_buffer_size 256k; 
proxy_buffers 4 256k; 
proxy_busy_buffers_size 256k; 
proxy_temp_file_write_size 256k; 
proxy_next_upstream error timeout invalid_header http_500 http_503 http_404; 
proxy_max_temp_file_size 128m;
        }


location ~ .*\.(html|js|css|png|gif|jpg|jpeg|ico|woff|ttf|svg|eot)$ {  
root D:/WebServer/sources/SeedSoft_Cloud;
expires 5d;  


location ~ .*\.(jsp|action)$ {
proxy_pass http://localhost;
}

        #error_page  404              /404.html;
        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}


加载中
0
dedenj
dedenj
很简单,不通过nginx访问看看速度,直接访问tomcat的地址
xyjfx
xyjfx
我把当前的conf配置换成nginx安装包中自带的默认+简单的配置。访问动态资源貌似不卡了,我再继续测试看看
dedenj
dedenj
回复 @xyjfx : 试试用最简单的配置文件看看速度,单机单tomcat,其他设置全部去掉。这个conf先备注,从安装包里搞个最基础的改下看看
xyjfx
xyjfx
不通过nginx访问,速度很流畅。 通过nginx访问的话,问题就来了:访问动态页面很慢,间隔一般要3~4分钟,偶尔瞬间却很流畅。
2
红薯
红薯

Nginx 不会提升动态页面的访问速度,这个关键在于你的应用程序本身的性能

时间行者GX
时间行者GX
lz的问题是访问速度变慢了,不是提升速度
0
朱宏青
朱宏青
1楼说的很有道理
0
xyjfx
xyjfx
不通过nginx的端口访问,直接访问对应的端口的应用,.jsp/.action的速度是正常的,但通过nginx的端口访问html也是正常的,访问jsp等页面就慢下来了,没有直接访问的快。感觉是卡住了一样,得等3、4分钟才能访问到,偶尔访问却是正常的,目前是测试环境,没有访问压力的问题。
0
xyjfx
xyjfx

网上也有遇到同样的问题的,有的解决了,说是nginx配置的问题,但没有说具体。
我部署到服务器上,通过外网访问,会产生我上述我说的问题,如果在服务器上用localhost访问,是正常的速度,不卡。有的说是防火墙的问题,可是我把防火墙关了,问题照旧。

0
0
xyjfx
xyjfx

各位大侠,我知道nginx不会提升动态页面的访问速度,但是现状是:降低了动态页面的访问速度,还不如直接访问动态页面快。谢谢大家响应~
补充说明:目前是window环境。

0
xyjfx
xyjfx

当前的最小配置如下(红色为修改的内容),还没有加动静分离:
   upstream localhost {
      server localhost:8081;
   }    

server {
      listen       81;
        server_name  localhost;

        location / {
            root   html;
            index  index.html index.htm;
            proxy_connect_timeout   3;  
            proxy_send_timeout      30;  
            proxy_read_timeout      30;  
            proxy_pass http://localhost;  
        }

0
p2ng
p2ng

1.纯tomcat运行,响应时间

2.如上利用nginx反向代理访问,响应时间

3.静态目录nginx处理,其余tomcat处理,响应时间

本地,内网,外网看效果如何...

xyjfx
xyjfx
可以啊,网上虽然有很多相关资料,多数也只限于配置通过,没有处理一些遇到的问题。我这里把功能测试稳定后,再写吧。
p2ng
p2ng
回复 @xyjfx : 过后可以发偏技术分享,,,share一下成果如何,学习学习...
xyjfx
xyjfx
对,目前就是这样做的,谢谢支持
0
iSea
iSea

应该是这里配置有问题

proxy_set_header Host $host; 
proxy_set_header X-Real-IP $remote_addr; 
proxy_set_header REMOTE-HOST $remote_addr; 
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
client_max_body_size 50m; 
client_body_buffer_size 256k; 
proxy_connect_timeout 1; 
proxy_send_timeout 30; 
proxy_read_timeout 60; 
proxy_buffer_size 256k; 
proxy_buffers 4 256k; 
proxy_busy_buffers_size 256k; 
proxy_temp_file_write_size 256k; 
proxy_next_upstream error timeout invalid_header http_500 http_503 http_404; 
proxy_max_temp_file_size 128m;

xyjfx
xyjfx
谢谢支持,我把这段配置去掉了,用@dedenj的方法,从原始最少配置内容开始,逐步添加,观察哪里错了。猜想可能是localion路径配置有问题
返回顶部
顶部