码迷,mamicode.com
首页 > Web开发 > 详细

web服务器并发优化(nginx+多实例tomcat负载均衡并发5000左右)

时间:2015-07-02 22:36:55      阅读:438      评论:0      收藏:0      [点我收藏+]

标签:nginx+多实例tomcat负载均衡   web服务器并发优化   nginx负载均衡   

前言:
  我之前在服务器方面不太懂,经过此次的配置让我的技术有了很大的进步,写此给大家共享一下,如有错误之处欢迎指正
  配置这个初衷是为了给java(s2sh框架)写的app接口提供大的并发量支持 ,并且是https的接口
   (淘宝买的 http://item.taobao.com/item.htm?spm=a1z09.2.9.69.zvqUo9&id=39486787932&_u=21mb264ebe80   卖家人不错,我说配tomcat  给的jsk文件,几天后我配nginx给了我的crt和key文件,我就当给他打个广告吧

一、服务器配置
       2.20GHZ;6核心 4CPU 4G内存  CentOS系统
     
二、web架构设计图示
技术分享
   
    1.有两台服务器,暂且叫做服务器a和服务器b;
    2.服务器a部署是单tomcat两个实例  
        注:之前是配置了3个tomcat(注:实际只启动了两个tomcat,多出一个是为了测试几个tomcat并发量最大),端口分别是 444  555
   3.服务器b部署了nginx和https的测试工具siege

三、nginx配置...

   1. 原料:nginx-0.7.63.tar.gz  pcre-8.37.tar.gz

技术分享 技术分享

   2.  安装:
1、上传nginx-0.7.63.tar.gz至/usr/local 
 2、执行如下命令解压nginx:
1.#cd /usr/local
  2.#tar zxvf  nginx-0.7.63.tar.gz

3、编译安装nginx
1.#cd nginx-0.7.63
2.#./configure --with-http_stub_status_module --with-http_ssl_module  #启动server状态页和https模块(红色部分配https必需加上,否则后面坑死人)

执行完后会提示一个错误,说缺少PCRE library 这个是HTTP Rewrite 模块,也即是url静态化的包
可上传pcre-7.9.tar.gz,输入如下命令安装:
1.#tar zxvf pcre-7.9.tar.gz
2.#cd pcre-7.9
3.#./configure
4.#make
5.#make install
安装pcre成功后,继续安装nginx
1.#cd nginx-0.7.63
2.#./configure --with-http_stub_status_module --with-http_ssl_module
3.#make
4.#make install
4、nginx安装成功后的安装目录为/usr/local/nginx  
(千万别搞错了/usr/local/目录下会有两个nginx的目录,分别是nginx-0.7.65和nginx;曾经搞错了,填了很久的坑)

3. 配置:
    编辑安装目录下conf文件夹中的nginx.conf
    备份原来的nginx.conf文件,将原来的内容用下面完整的复制进去

#-------------------内容开始--------------------------
worker_processes  5;
events {
  use epoll;
  worker_connections 65535;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
upstream aa{
        ip_hash;  #轮询形式分配下面
        server www.xxx.com.cn:444;(www.xxx.com.cn是tomcat部署的服务器域名)
        server www.xxx.com.cn:555;
    }
         server {
          listen       80; 
          server_name  localhost;
               location / {
                   root   html;
                   index  index.html index.htm;
                   proxy_pass   http://aa; (与上面同深红保持一致)
                   proxy_redirect    off;
                   proxy_set_header   Host $host;
                   proxy_set_header   X-Real-IP $remote_addr;
                   proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
                   client_max_body_size   10m;
                   client_body_buffer_size   128k;
                   proxy_connect_timeout   15;
                   proxy_send_timeout   15;
                   proxy_read_timeout   15;
                   proxy_buffer_size   8k;
                   proxy_buffers   4 64k;
                   proxy_busy_buffers_size   128k;
                   proxy_temp_file_write_size  128k;
               }
               error_page   500 502 503 504  /50x.html;
               location = /50x.html {
                   root   html;
               }
         }

            server {
          listen  443 ;
          server_name  localhost;
          ssl on;
          ssl_certificate  /usr/local/nginx/conf/server.crt;  #淘宝买的ssl证书 
          ssl_certificate_key  /usr/local/nginx/conf/server.key;#
         

               location / {
                   root   html;
                   index  index.html index.htm;
                   proxy_pass   https://aa;
                   proxy_redirect    off;
                   proxy_set_header   Host $host;
                   proxy_set_header   X-Real-IP $remote_addr;
                   proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
                   client_max_body_size   10m;
                   client_body_buffer_size   128k;
                   proxy_connect_timeout   15;
                   proxy_send_timeout   15;
                   proxy_read_timeout   15;
                   proxy_buffer_size   8k;
                   proxy_buffers   4 64k;
                   proxy_busy_buffers_size   128k;
                   proxy_temp_file_write_size  128k;
               }
               error_page   500 502 503 504  /50x.html;
               location = /50x.html {
                   root   html;
               }
         }
}
#-------------------内容结束--------------------------

4. nginx常用命令:

5、修改/usr/local/nginx/conf/nginx.conf配置文件后,请执行以下命令检查配置文件是否正确:
1.#/usr/local/nginx/sbin/nginx -t
如果屏幕显示以下两行信息,说明配置文件正确:
1.the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
2.the configuration file /usr/local/nginx/conf/nginx.conf was tested successfully
如果提示unknown host,则可在服务器上执行:ping www.baidu.com如果也是同样提示unknown host则有两种可能:
    a、服务器没有设置DNS服务器地址,查看/etc/resolv.conf下是否设置,若无则加上
    b、防火墙拦截 

(对了别忘了给444和555端口在防火墙添加例外让外部能够访问,什么,你不会!!!  那百度去吧!!!) 

 6、启动nginx的命令
1.#/usr/local/nginx-0.7.65/objs/nginx如果启动提示nginx 服务提示98: Address already in use 查看80端口占用情况ps -ef|grep 80 然后杀进程即可
7、停止nginx的命令
1.#/usr/local/nginx-0.7.65/objs/nginx -s stop
附配置好的nginx.conf文件:技术分享
 
深入了解nginx参考资料:
四、tomcat配置
       1.原料:
         apache-tomcat-6.0.28  jdk-6u45-linux-x64-rpm.bin
              技术分享
       2.安装:见文档
           
                 技术分享
       3.配置:
           1.给单个tomcat配置多个实例
               教程在如下链接中
                   1、安装好tomcat

2、在tomcat根目录新建app1和app2两目录

3、拷贝 conf、logs、 temp、 webapps、 work目录到app1和app2,并分别删除webapps内的所有文件

4、分别修改conf内的server.xml文件的<server>和<Connector port="8088" protocol="HTTP/1.1"两个端口不相互冲突。如果使用集群方式还要修改<Connector port="8099" protocol="AJP/1.3"端口不相互冲突。
修改的文件如下: 
  1. web.xml最后几行配置了:每次强制使用https 
  2. server.xml
       a. 开启了tomcat的NIO( New I/O)特性
         b.增加了tomcat的连接池配置(此方法提高并发超级给力)
         c.指定了端口 app1我指定了444端口
         d.指定了项目路径我的项目为Personal3C
         e.配置了了https的密钥 .jks
          app1
            技术分享 技术分享 技术分享
app2的
              技术分享   

5、新建两个启动文件startApp1.sh、 startApp2.sh,内容分别为:
 (注意:配置startApp.sh时不能有空格和回车,我被坑过)

cat startApp1.sh 

export CATALINA_BASE=$CATALINA_HOME/app1

sh $CATALINA_HOME/bin/startup.sh -Dcatalina.base

cat startApp1.sh

export CATALINA_BASE=$CATALINA_HOME/app2

sh $CATALINA_HOME/bin/startup.sh -Dcatalina.base 

6、chmod 777 startApp1.sh和startApp2.sh文件为可动行状态。

7、分别向app1和app2的webapps内放入web工程

8、分别启动startApp1.sh和startApp2.sh启动实例,进行测试。
               
               单tomcat多实例参考资料:
                   http://www.zhengdazhi.com/archives/655
                   http://elain.blog.51cto.com/3339379/621663   
              tomcat配置优化参考资料:
                   http://liaojuncai.iteye.com/blog/2001621

           2.bin目录下catalina.sh文件增加jvm的内存设置 添加红色部分
                    技术分享

              JAVA_OPTS="-Xms1400m -Xmx1400m -Xss256K -XX:PermSize=256m -XX:MaxPermSize=256m"

五、https测试工具
        

http://blog.sina.com.cn/s/blog_475429950101a4o4.html



压力测试工具siege的用法

Siege是linux下的一个web系统的压力测试工具,支持多链接,支持get和post请求,可以对web系统进行多并发下持续请求的压力测试。

安装 Siege

#wget  http://download.joedog.org/siege/siege-latest.tar.gz  (最好下载下来安装)
#tar -xzvf siege-latest.tar.gz 
#./configure    -prefix=/usr/local/siege   -with-ssl=/usr/include/openssl(安装目录:/usr/local/siege
#make                                                                                                  #make install
如果第三步报错configure: error: no acceptable C compiler found in $PATH      则执行
#yum install gcc

Siege命令常用参数

-c 200 指定并发数200
-r 5 指定测试的次数5
-f urls.txt 制定url的文件
-i internet系统,随机发送url
-b 请求无需等待 delay=0
-t 5 持续测试5分钟
-r和-t一般不同时使用

常用的siege命令举例

200个并发对http://www.google.com发送请求100次

siege -c 200 -r 100 http://www.google.com

在urls.txt中列出所有的网址

siege -c 200 -r 100 -f urls.txt

随机选取urls.txt中列出所有的网址

siege -c 200 -r 100 -f urls.txt -i

delay=0,更准确的压力测试,而不是功能测试

siege -c 200 -r 100 -f urls.txt -i -b

指定http请求头 文档类型

siege -H &quot;Content-Type:application/json&quot; -c 200 -r 100 -f urls.txt -i -b

Siege输出结果说明

Transactions: 总共测试次数
Availability: 成功次数百分比
Elapsed time: 总共耗时多少秒
Data transferred: 总共数据传输
Response time: 等到响应耗时
Transaction rate: 平均每秒处理请求数
Throughput: 吞吐率
Concurrency: 最高并发
Successful transactions: 成功的请求数
Failed transactions: 失败的请求数

Siege使用的一些总结


1,发送post请求时,url格式为:http://www.xxxx.com/ POST p1=v1&p2=v2
2,如果url中含有空格和中文,要先进行url编码,否则siege发送的请求url不准确



    
   

版权声明:本文为博主原创文章,未经博主允许不得转载。

web服务器并发优化(nginx+多实例tomcat负载均衡并发5000左右)

标签:nginx+多实例tomcat负载均衡   web服务器并发优化   nginx负载均衡   

原文地址:http://blog.csdn.net/nevergiveuplzl/article/details/46731093

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!