windows tomcat nginx session(当一台tomcat关闭后)
在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关闭后)的更多相关文章
- Tomcat集群,Nginx集群,Tomcat+Nginx 负载均衡配置,Tomcat+Nginx集群
Tomcat集群,Nginx集群,Tomcat+Nginx 负载均衡配置,Tomcat+Nginx集群 >>>>>>>>>>>> ...
- Windows下nginx的启动,重启,关闭功能
@echo off rem 提供Windows下nginx的启动,重启,关闭功能 echo ==================begin======================== cls :: ...
- redis+tomcat+nginx session共享
http://www.cnblogs.com/zhrxidian/p/5432886.html系列课程 简洁明了 http://blog.csdn.net/grhlove123/article/det ...
- Windows server 2012 R2开机进入cmd,关闭后黑屏问题
原因分析: 因为自己在卸载IIS的时候,不小心卸载了.net framework,系统没有了图形界面(由完整模式Full变为了核心模式core),需要重新恢复.net framework4.5. 解决 ...
- Redis+Tomcat+Nginx集群实现Session共享,Tomcat Session共享
Redis+Tomcat+Nginx集群实现Session共享,Tomcat Session共享 ============================= 蕃薯耀 2017年11月27日 http: ...
- tomcat中session在两个webapp中实现共享
现在遇到一个需求就是要求完成简单的单点登录,通过在一个tomcat实例中放置两个webapps应用ROOT应用和CEO应用来完成在ROOT应用登录后,在CEO可以直接使用,而未在ROOT应用登录时,不 ...
- 高级运维(五):构建memcached服务、LNMP+memcached、使用Tomcat设置Session、Tomcat实现session共享
一.构建memcached服务 目标: 本案例要求先快速搭建好一台memcached服务器,并对memcached进行简单的添.删.改.查操作: 1> 安装memcached软件,并启动服务d ...
- tomcat redis session共享
编译redis所需要的序列化包 安装 gradle Linux & MacOS users Configure your PATH environment variable to includ ...
- Tomcat学习总结(10)——Tomcat多实例冗余部署
昨天在跟群友做技术交流的时候,了解到,有很多大公司都是采用了高可用的,分布式的,实例沉余1+台.但是在小公司的同学也很多,他们反映并不是所有公司都有那样的资源来供你调度.往往公司只会给你一台机器,因为 ...
随机推荐
- appium+python 【Mac】Android夜神模拟器
1.官网下载地址:https://www.yeshen.com/ 2.具体的夜神模拟器的介绍请自查 3.下载安装后夜神模拟器后,打开模拟器,进行相应的配置如下: 4. (1).找到android-sd ...
- 一步一步学习IdentityServer3 (12) 授权模式
Idr3中的授权模式也是基于OAuth2 来看看例子中的说明 // // 摘要: // OpenID Connect flows. public enum Flows { // // 摘要: // a ...
- CCF CSP 201403-3 命令行选项
CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201403-3 命令行选项 问题描述 请你写一个命令行分析程序,用以分析给定的命令行里包含哪些 ...
- bzoj 3926 转换+广义后缀自动机
思路:重点在于叶子节点只有20个,我们把叶子节点提到根,把20个trie图插入后缀自动机,然后就是算有多少个本质不同的字串. #include<bits/stdc++.h> #define ...
- JavaScript中正则的使用(1)
通过例子学习正则中的常见语法(1) $num javascript var a = 'javascript'; var b = a.replace(/(java)(script)/gi, '$2-$1 ...
- Ionic Js二十:选项卡栏操作
ion-tabs ion-tabs 是有一组页面选项卡组成的选项卡栏.可以通过点击选项来切换页面. 对于 iOS,它会出现在屏幕的底部,Android会出现在屏幕的顶部(导航栏下面). 用法 < ...
- OneDrive开发入门
OneDrive API提供了对存储在OneDrive上文件的访问能力,大多数API都遵循REST模式,少部分的API可以通过简单的函数来调用 在使用OneDrive API之前要先了解两个简单的概念 ...
- Stringbuilder & Stringbuffer
StringBuilder和StringBuffer的父类都是继承了 AbstractStringBuilder, 他们各自的append方法都是调用了 super.append(str), 但是一个 ...
- JAVAEE——宜立方商城06:Redis安装、数据类型和持久化方案、Redis集群分析与搭建、实现缓存和同步
1. 学习计划 1.首页轮播图展示 2.Redis服务器搭建 3.向业务逻辑中添加缓存. 4.使用redis做缓存 5.缓存同步. 2. 首页轮播图动态展示 2.1. 功能分析 根据分类id查询内容列 ...
- 为什么要使用String
最近在培训课期间指导初学者.任务之一就是要大家完成一个类,要求这个类对key为String类型的map执行dwarwle操作.其中一位学员完成的类中,有如下方法: void dwarwle(HashM ...