这一个月内,nginx与tomcat结合部署,始终有一个问题困惑着我!我在论坛上也发布过该问题,但始终没有具体答案,不过到现在我又发现一个问题,所以再将这个问题,发布出来,然后大家讨论,先说下公司服务情况:公司服务硬件情况是:
服务器:HP 刀片
内存:32GB
CPU:32核
服务器软件情况:
系统:红旗Asianux SP3 x86_64系统
JAVA环境:jrockit-1.6_24-x86_64
应用:共发布6个tomcat,端口号分别为,2080、2081、2082、8080、8888、8081等,每个tomcat部署多个java应用,tomcat独立运行
数据库:mongodb数据库,第三方服务等
服务器资源使用情况:
内存:剩余12-20G
CPU:0.0%us 4.3%sy 87.0%id ........
负载:1.50 1.89 0.82
随着公司业务的增多,服务tomcat也增加了一个,使用一段时间后,java总是crashing,不管是停止tomcat,还是启动tomcat,报不能提交4G到heap里,我找了多个方法,但发现如果tomcat启动了,再启动其他的应用时,就报内存溢出,比如启动mongodb数据库时,就因为内存溢出启不起来,但是剩余的内存很大啊,始终搞不懂,好,这个问题先放一边,当然,如果哪位大牛,知道怎么解决,还请多指教!!!
于是我想用tomcat与nginx结合,降低tomcat内存使用量,但在这里也遇到了一个问题,并有两点发现,因为楼主没有用过nginx,因此感觉相当棘手。
现在我将问题贴出来,希望大家给个建议:
server
{
listen 8080;
server_name 10.0.0.199;
index QSConsole.html index.html index.jsp default.jsp;
root /opt/tomcat_8080/webapps; 我tomcat写的是8080,但server.xml里配置的是9088
location ~ .*\.(jsp|jspx|do|action)?$ {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://10.0.0.199:9088 ;
}
location ~ .*\.(htm|ico|txt|css|gif|jpg|jpeg|png|bmp|swf|html)$
{
root /opt/tomcat_8080/webapps;
expires 30d;
proxy_redirect off;
proxy_set_header Host $host;
proxy_cache_valid 200 302 1h;
proxy_cache_valid 301 1d;
proxy_cache_valid any 1m;
}
location /
{
proxy_next_upstream http_502 http_504 error timeout invalid_header;
expires 3d;
proxy_pass http://10.0.0.199:9088 ;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location ~ .*\.(js|css)?$
{
expires 1h;
}
location ~(favicon.ico)
{
log_not_found off;
expires 30d;
break;
}
}
我若这样配置的话,访问http://ip:8080/QuadServer的时候,报如下错误:
报2014/01/20 10:47:07 [error] 28813#0: *1 open() "/opt/tomcat_8080/webapps/favicon.ico" failed (2: No such file or directory), client: 10.0.0.17, server: 10.0.0.199:9088, request: "GET /favicon.ico HTTP/1.1", host: "10.0.0.199:8080"
但是我若将配置改成如下:
server
{
listen 80;
server_name 10.0.0.199:8080;
index QSConsole.html index.html index.jsp default.jsp;
root /opt/tomcat_8080/webapps;
charset utf-8;
access_log /opt/tomcat_8080/logs/catalina.out;
#location ~ ^/QuadServer/*
location /
{
proxy_next_upstream http_502 http_504 error timeout invalid_header;
expires 3d;
proxy_pass http://10.0.0.199:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location ~(favicon.ico)
{
log_not_found off;
expires 30d;
break;
}
}
}
或者改成如下也可以,如:
server
{
listen 8080;
server_name 10.0.0.199:80;
index QSConsole.html index.html index.jsp default.jsp;
root /opt/tomcat_8080/webapps;
charset utf-8;
access_log /opt/tomcat_8080/logs/catalina.out;
#location ~ ^/QuadServer/*
location /
{
proxy_next_upstream http_502 http_504 error timeout invalid_header;
expires 3d;
proxy_pass http://10.0.0.199:80;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location ~(favicon.ico)
{
log_not_found off;
expires 30d;
break;
}
}
}
若是这两种配置的话,那么访问http://ip/QuadServer或者http://ip:8080/QuadServer那么服务都可以正常访问,所以,我就郁闷了,不知道该怎样配置nginx基于端口来发布服务器上的多个tomcat???大家讨论讨论
服务器:HP 刀片
内存:32GB
CPU:32核
服务器软件情况:
系统:红旗Asianux SP3 x86_64系统
JAVA环境:jrockit-1.6_24-x86_64
应用:共发布6个tomcat,端口号分别为,2080、2081、2082、8080、8888、8081等,每个tomcat部署多个java应用,tomcat独立运行
数据库:mongodb数据库,第三方服务等
服务器资源使用情况:
内存:剩余12-20G
CPU:0.0%us 4.3%sy 87.0%id ........
负载:1.50 1.89 0.82
随着公司业务的增多,服务tomcat也增加了一个,使用一段时间后,java总是crashing,不管是停止tomcat,还是启动tomcat,报不能提交4G到heap里,我找了多个方法,但发现如果tomcat启动了,再启动其他的应用时,就报内存溢出,比如启动mongodb数据库时,就因为内存溢出启不起来,但是剩余的内存很大啊,始终搞不懂,好,这个问题先放一边,当然,如果哪位大牛,知道怎么解决,还请多指教!!!
于是我想用tomcat与nginx结合,降低tomcat内存使用量,但在这里也遇到了一个问题,并有两点发现,因为楼主没有用过nginx,因此感觉相当棘手。
现在我将问题贴出来,希望大家给个建议:
server
{
listen 8080;
server_name 10.0.0.199;
index QSConsole.html index.html index.jsp default.jsp;
root /opt/tomcat_8080/webapps; 我tomcat写的是8080,但server.xml里配置的是9088
charset utf-8;
access_log /opt/tomcat_8080/logs/catalina.out;
location ~ .*\.(jsp|jspx|do|action)?$ {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://10.0.0.199:9088 ;
}
location ~ .*\.(htm|ico|txt|css|gif|jpg|jpeg|png|bmp|swf|html)$
{
root /opt/tomcat_8080/webapps;
expires 30d;
proxy_redirect off;
proxy_set_header Host $host;
proxy_cache_valid 200 302 1h;
proxy_cache_valid 301 1d;
proxy_cache_valid any 1m;
}
location /
{
proxy_next_upstream http_502 http_504 error timeout invalid_header;
expires 3d;
proxy_pass http://10.0.0.199:9088 ;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location ~ .*\.(js|css)?$
{
expires 1h;
}
location ~(favicon.ico)
{
log_not_found off;
expires 30d;
break;
}
}
我若这样配置的话,访问http://ip:8080/QuadServer的时候,报如下错误:
报2014/01/20 10:47:07 [error] 28813#0: *1 open() "/opt/tomcat_8080/webapps/favicon.ico" failed (2: No such file or directory), client: 10.0.0.17, server: 10.0.0.199:9088, request: "GET /favicon.ico HTTP/1.1", host: "10.0.0.199:8080"
但是我若将配置改成如下:
server
{
listen 80;
server_name 10.0.0.199:8080;
index QSConsole.html index.html index.jsp default.jsp;
root /opt/tomcat_8080/webapps;
charset utf-8;
access_log /opt/tomcat_8080/logs/catalina.out;
#location ~ ^/QuadServer/*
location /
{
proxy_next_upstream http_502 http_504 error timeout invalid_header;
expires 3d;
proxy_pass http://10.0.0.199:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location ~(favicon.ico)
{
log_not_found off;
expires 30d;
break;
}
}
}
或者改成如下也可以,如:
server
{
listen 8080;
server_name 10.0.0.199:80;
index QSConsole.html index.html index.jsp default.jsp;
root /opt/tomcat_8080/webapps;
charset utf-8;
access_log /opt/tomcat_8080/logs/catalina.out;
#location ~ ^/QuadServer/*
location /
{
proxy_next_upstream http_502 http_504 error timeout invalid_header;
expires 3d;
proxy_pass http://10.0.0.199:80;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location ~(favicon.ico)
{
log_not_found off;
expires 30d;
break;
}
}
}
若是这两种配置的话,那么访问http://ip/QuadServer或者http://ip:8080/QuadServer那么服务都可以正常访问,所以,我就郁闷了,不知道该怎样配置nginx基于端口来发布服务器上的多个tomcat???大家讨论讨论