Nginx+Tomcat 集配置
Nginx对处理静态文件(如html、jpg等)的性能十分优异,具有高并发、占用资源低、扩展性强的特点。Nginx的这个特点,对于专注于处理java的tomcat来说,可以说是个完美的搭档。生产环境下,已经取代早期的apache+tomcat,并且还可以使用Nginx结合jvm_router这个国人开发的扩展,做下tomcat的集。
配置环境
两台服务器:192.168.0.239  192.168.0.240
操作系统:CentOS 6.3
Jdk:jdk-6u35-linux-x64.bin
Tomcat :6.0.35
Nginx :nginx-1.2.4
安装jdk
在第一台机器,192.168.0.239(以后称为A)安装JDK
1. 使用命令 chmod +x jdk-6u35-linux-x64.bin 赋予jdk执行权限。
2. 安装jdk,使用命令:  ./jdk-6u35-linux-x64.bin
3. 配置环境变量,拷贝jdk的目录到/usr下,/etc/profile文件的末尾添加如下:
export JAVA_HOME=/usr/jdk
export PATH=$PATH:$JAVA_HOME/bin
exportCLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
4. 使用命令:source /etc/profile ,使配置即刻生效。然后测试jdk是否成功:java  -version
5. 第二台服务器同上安装jdk
安装Tomcat
1. 下载apache-tomcat-6.0.,解压到/usr目录下,并重命名为tomcat
2. 进入/usr/tomcat的bin目录下,使用命令 chmod +x  ./*  给bin目录下的文件,赋予可执行权利。
3. 进入/usr/tomcat/conf目录下,编辑l文件,增加admin管理员,并加入manager组。效果如下:
4. 编辑tomcat下conf目录下的l文件,编辑Connector,更改端口为:8090,并调优线程数,具体如下:
<Connector port=”8090″
maxThreads=1500
minSpareThreads=100
maxSpareThreads=500
acceptCount=1000
enableLookups=”false”
redirectPort=”8443″
connectionTimeout=”20000″/>
注释:
maxThreads:最大线程数,将其中的maxThreads=”150″ 修改为maxThreads=”1500″ ,即可以最大承载1500个并发事务。一个用户基本上请求一次服务需要二个线程进行支持(一个是request,一个是response)。这样IGRP就可以承载最高750个用户的完全并发。maxThreads默认tomcat配置为200个。
minSpareThreads: 最小备用线程数tomcat启动时的初始化的线程数,默认是25.这个要根据负载情况自行调整了。太小了就影响反应速度,太大了白白占用资源
maxSpareThreads:最大备用线程数,一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket
acceptCount:当tomcat起动的线程数达到最大时,接受排队的请求个数,默认值为100,一般是设置的跟maxThreads一样大,这个值应该是主要根据应用的访问峰值与平均值来权衡配置的。如果设的较小,可以保证接受的请求较快相应,但是超出的请求可能就直接被拒绝;如果设的较大,可能就会出现大量的请求超时的情况,因为我们系统的处理能力是一定的。
enableLookups:置为“false”来关闭DNS 查询。如果为true,则可以通过调用RemoteHost()进行DNS查询来得到远程客户端的实际主机名,若为false则不进行DNS查询,而是返回其ip地址。
5. 在catalina.sh中,设置JAVA_OPTS='-Xms1024m–Xmx1512m'
注释设置JAVA_OPTS='-Xms256m -Xmx512m',表示初始化内存为256MB,可以使用的最大内存为512MB。置。当应用程序需要的内存超出堆的最大值时虚拟机就会提示内存溢出,并且导致应用服务崩溃。因此一般建议堆的最大值设置为可用内存的最大值的80%
6. 修改l文件的Engine部分,增加jvmRoute,此处为nginx负载时候使用。此处为mycat1,第二台设置为mycat2
7. 在另一台服务器192.168.0.240做如上同样设置
安装Nginx
1. 使用命令tar -zxvf nginx-1.2. 解压nginx,并把解压后的目录拷贝到/usr下,重名为nginx
2. 下载pcre-8.,解压缩后,进入pcre目录,使用命令  ./configure --prefix=/usr/local/pcre &&make &&make install 编译并安装。
3. 下载 nginx-upstream-jvm-route-0. ,解压后,拷贝目录到/usr下。
4. 进入/usr/nginx 目录,使用命令:patch -p0 < ../nginx_upstream_jvm_route/jvm_route.patch
5. 创建用户www及用户组www。编译、安装nginx:
./configure --prefix=/usr/local/nginx  --with-http_stub_status_module --with-http_ssl_module--with-pcre=/home/yanzi/pcre-8.20 --add-module=../nginx_upstream_jvm_route/ --user=www --group=www
make
make install
*标红部分为pcre的源目录,切记
配置Nginx
1. 更改f的events部分,修改后如下:
2. 修改f,增加upstream段,此处为集服务器。
  upstream mybackend {     
    server 192.168.0.239:8090 srun_id=mycat1;       
server 192.168.0.240:8090 srun_id=mycat2;
jvm_route $cookie_JSESSIONID|sessionid reverse;
}
在http段内,增加如下设置:
sendfile        on;
keepalive_timeout  65;
include      pes;
default_type  application/octet-stream;
charset  utf-8;
server_names_hash_bucket_size 128;
client_header_buffer_size 32k;
large_client_header_buffers 4 32k;
client_max_body_size 300m;
tcp_nopush    on;
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;
3 增加server段,对于静态文件如html、js、jpg由nginx处理,jsp转向tomcat处理。
server {
        listen      80;
        server_name  192.168.0.239;
        charset utf-8;
        #access_log  logs/host.access.log  main;
        location / {
            root  /web;
            index  index.html index.htm;
        }
        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 ~ \.jsp$ {
              proxy_set_header Host  $host;
              proxy_set_header X-Forwarded-For  $remote_addr;
              proxy_pass  mybackend;
jsessionid        }
  }

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。