在windows下作nginx负载均衡测试。

nginx的配置文件如下:

worker_processes  1;

events {

worker_connections  1024;

}

http {

include      
mime.types;

default_type  application/octet-stream;

upstream localhost {

server 127.0.0.1:8080  weight=1 max_fails=2
fail_timeout=30s;

server 127.0.0.1:8081  weight=1 max_fails=2
fail_timeout=30s;

}

sendfile       
on;

keepalive_timeout  65;

server
{

listen      
80;

server_name  localhost;

listen
80;

server_name
localhost;

location
/{

proxy_pass
http://localhost;

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For
$proxy_add_x_forwarded_for;

}

error_page   500 502 503
504  /50x.html;

location = /50x.html {

root   html;

}

}

}

遇到这个问题,搜索网络, 发现网上也有人遇到同样的问题, 问题描述如下:

用了nginx负载均衡后,在两台tomcat正常运行的情况下,访问http://localhost
速度非常迅速,通过测试程序也可以看出是得到的负载均衡的效果,但是我们试验性的把其中一台tomcat(server
localhost:8080)关闭后,再查看http://localhost,发现反应呈现了一半反映时间快,一半反映时间非常非常慢的情况,但是最
后都能得到正确结果。

然后我又把关闭的那吧tomcat实例恢复,此时再访问http://localhost,又可以很快的访问,负载均衡也运行正常了!郁闷!

分析怀疑可能是nginx将一半的左右的请求仍然发到了宕掉的tomcat实例上了,然后由于转发到宕掉的tomcat没有反映,nginx又重新分发到其它实例上处理。

但是这个时间也太长了。当有一台宕机后,访问http://localhost有时候会现了大概30s左右的响应时间,非常郁闷!

增加这么几个参数:

proxy_connect_timeout  
300;

proxy_send_timeout     
300;

proxy_read_timeout     
300;

问题解决,主要是proxy_connect_timeout  
这个参数, 这个参数是连接的超时时间。 我设置成1,表示是1秒后超时会连接到另外一台服务器。

现在贴出NGINX的配置如下,供后来人参考:

#user  nobody;

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 {

worker_connections  1024;

}

http {

include      
mime.types;

default_type  application/octet-stream;

upstream localhost {

#ip_hash;

server 127.0.0.1:8081;

server 127.0.0.1:8080;

}

#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  65;

#gzip  on;

server
{

listen      
80;

server_name  localhost;

listen
80;

server_name
localhost;

location
/{

proxy_pass
http://localhost;

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For
$proxy_add_x_forwarded_for;


   
proxy_connect_timeout      
1;

proxy_read_timeout         
1;

proxy_send_timeout         
1;

}

#charset koi8-r;

#access_log 
logs/host.access.log  main;

#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;

}

# proxy the PHP scripts to Apache listening on
127.0.0.1:80

#

#location ~ \.php$ {

#   
proxy_pass  
http://127.0.0.1;

#}

# pass the PHP scripts to FastCGI server listening on
127.0.0.1:9000

#

#location ~ \.php$ {

#   
root          
html;

#   
fastcgi_pass  
127.0.0.1:9000;

#   
fastcgi_index  index.php;

#   
fastcgi_param  SCRIPT_FILENAME 
/scripts$fastcgi_script_name;

#   
include       
fastcgi_params;

#}

# deny access to .htaccess files, if Apache's document
root

# concurs with nginx's one

#

#location ~ /\.ht {

#   
deny  all;

#}

}

# another
virtual host using mix of IP-, name-, and port-based
configuration

#

#server
{

#   
listen      
8000;

#   
listen      
somename:8080;

#   
server_name  somename 
alias  another.alias;

#    location /
{

#       
root   html;

#       
index  index.html index.htm;

#    }

#}

# HTTPS
server

#

#server
{

#   
listen      
443;

#   
server_name  localhost;

#   
ssl                 
on;

#   
ssl_certificate     
cert.pem;

#   
ssl_certificate_key  cert.key;

#   
ssl_session_timeout  5m;

#   
ssl_protocols  SSLv2 SSLv3 TLSv1;

#   
ssl_ciphers 
ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;

#   
ssl_prefer_server_ciphers  
on;

#    location /
{

#       
root   html;

#       
index  index.html index.htm;

#    }

#}

}

windows tomcat nginx session(当一台tomcat关闭后)的更多相关文章

  1. Tomcat集群,Nginx集群,Tomcat+Nginx 负载均衡配置,Tomcat+Nginx集群

    Tomcat集群,Nginx集群,Tomcat+Nginx 负载均衡配置,Tomcat+Nginx集群 >>>>>>>>>>>> ...

  2. Windows下nginx的启动,重启,关闭功能

    @echo off rem 提供Windows下nginx的启动,重启,关闭功能 echo ==================begin======================== cls :: ...

  3. redis+tomcat+nginx session共享

    http://www.cnblogs.com/zhrxidian/p/5432886.html系列课程 简洁明了 http://blog.csdn.net/grhlove123/article/det ...

  4. Windows server 2012 R2开机进入cmd,关闭后黑屏问题

    原因分析: 因为自己在卸载IIS的时候,不小心卸载了.net framework,系统没有了图形界面(由完整模式Full变为了核心模式core),需要重新恢复.net framework4.5. 解决 ...

  5. Redis+Tomcat+Nginx集群实现Session共享,Tomcat Session共享

    Redis+Tomcat+Nginx集群实现Session共享,Tomcat Session共享 ============================= 蕃薯耀 2017年11月27日 http: ...

  6. tomcat中session在两个webapp中实现共享

    现在遇到一个需求就是要求完成简单的单点登录,通过在一个tomcat实例中放置两个webapps应用ROOT应用和CEO应用来完成在ROOT应用登录后,在CEO可以直接使用,而未在ROOT应用登录时,不 ...

  7. 高级运维(五):构建memcached服务、LNMP+memcached、使用Tomcat设置Session、Tomcat实现session共享

    一.构建memcached服务 目标: 本案例要求先快速搭建好一台memcached服务器,并对memcached进行简单的添.删.改.查操作: 1> 安装memcached软件,并启动服务d ...

  8. tomcat redis session共享

    编译redis所需要的序列化包 安装 gradle Linux & MacOS users Configure your PATH environment variable to includ ...

  9. Tomcat学习总结(10)——Tomcat多实例冗余部署

    昨天在跟群友做技术交流的时候,了解到,有很多大公司都是采用了高可用的,分布式的,实例沉余1+台.但是在小公司的同学也很多,他们反映并不是所有公司都有那样的资源来供你调度.往往公司只会给你一台机器,因为 ...

随机推荐

  1. JDBC连接池和DBUtils

    本节内容: JDBC连接池 DBUtils 一.JDBC连接池 实际开发中“获得连接”或“释放资源”是非常消耗系统资源的两个过程,为了解决此类性能问题,通常情况我们采取连接池技术,来共享连接Conne ...

  2. Retrofit + RxJava + OkHttp 让网络请求变的简单-基础篇

    https://www.jianshu.com/p/5bc866b9cbb9 最近因为手头上的工作做完了,比较闲,想着做一些优化.看到以前用的那一套网络框架添加一个请求比较麻烦,并且比较难用,所以想改 ...

  3. PCA(Principal Component Analysis)主成分分析

    PCA的数学原理(非常值得阅读)!!!!   PCA(Principal Component Analysis)是一种常用的数据分析方法.PCA通过线性变换将原始数据变换为一组各维度线性无关的表示,可 ...

  4. Ionic Js十九:加载动画

    ion-spinner ionSpinner 提供了许多种旋转加载的动画图标.当你的界面加载时,你就可以呈现给用户相应的加载图标. 该图标采用的是SVG.  实例 HTML 代码 <ion-c ...

  5. Hadoop整理二(Hadoop分布式存储系统HDFS)

    一.背景 当数据集的大小超过一台独立物理计算机的存储能力时,就有必要对它进行分区(partition) 并存储到若干台单独的计算机上.管理网络中跨多台计算机存储的文件系统称为分布式文件系统 (dist ...

  6. 提高django model效率的几个小方法

    django的model效率不是很高,特别是在做大量的数据库操作的时候,如果你只用django来开企业站或者外包项目的话,那可以小跳过下,而你恰巧是效率狂或者说是对程序的效率要求比较高的话,那就要注意 ...

  7. [ 原创 ] Java基础1--Java中super和this的用法和区别

    许多同学在学习Java时分不清楚this和super的用法和区别,今天偶然发现一片加精的博文,看完内容准备自己也写下来积累一下 1.如果想在子类的构造方法中调用父类的构造方法,必须在子类的构造方法中使 ...

  8. windows下thrift的使用(python)

    1.下载thrift,下载地址:http://archive.apache.org/dist/thrift/0.9.3/ 2.在编写python的thrift代码时,需要先安装thrift modul ...

  9. JavaScript基础 :学习javascript的原因

    JavaScript是世界上最流行的脚本语言,因为你在电脑.手机.平板上浏览的所有的网页,以及无数基于HTML5的手机App,交互逻辑都是由JavaScript驱动的. 简单地说,JavaScript ...

  10. 【贪心】【后缀自动机】Gym - 101466E - Text Editor

    题意:给你两个串A,B,以及一个整数K,让你找到B的一个尽可能长的前缀,使得其在A串中出现的次数不小于K次. 对A串建立后缀自动机,然后把B串放在上面跑,由于每到一个结点,该结点endpos集合的大小 ...