系统相关
首页 > 系统相关> > nginx牛逼tomcat弱鸡探索之道

nginx牛逼tomcat弱鸡探索之道

作者:互联网

nginx牛逼解密


序言

图片

对于常用的服务器,大家可能更多的知道apache,tomcat,lls等服务器。我们跟多的了解到nginx常常用于反向代理。而实质是nginx也是一个高性能服务器。常用于前端页面资源静态化和负载均衡的反向代理。

下面就由博主带你认识nginx。以及nginx的反向代理、资源静态化,和压测对比。

安装

笔者环境是ubuntu18.04.所以下载东西是非常简单。centos 的yum源也有nginx。对于window。直接下载使用即可。

这样,一些基本的工具就下载完成啦。直接nginx或者sudo nginx访问localhost就有hello nginx 就是安装成功,对于jmeter 如果安装可以到官网进行安装。

对于nginx安装后的一些路径,都在

还有nginx的一些常用关闭命令

如果权限不足记得加上sudo

反向代理


对于nginx,很多人用nginx+tomcat做负载均衡。提高系统并发量。
对于nginx的配置文件,在/etc/nginx/conf.d/下新建proxy.conf(也可以在nginx/nginx.conf中配置)
就比如我想用我本地8081端口代理到本地的nginx上

  upstream tomcat-server{

  server 47.100.58.250:8080 ;
 }
 server{
        listen 8081;
        server_name localhost;
        location / {
          proxy_pass http://tomcat-server;
          root html;
          index index.html;
        }
}

对于nginx/nginx.conf我进行了修改去掉一些暂时用不到的。

user root;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;

events {
   worker_connections 1024;
}

http {
   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  /var/log/nginx/access.log  main;

   client_max_body_size 20m;
   sendfile            on;
   tcp_nopush          on;
   tcp_nodelay         on;
   keepalive_timeout   65;
   types_hash_max_size 2048;

   include             /etc/nginx/mime.types;
   default_type        application/octet-stream;

   # Load modular configuration files from the /etc/nginx/conf.d directory.
   # See http://nginx.org/en/docs/ngx_core_module.html#include
   # for more information.
   include /etc/nginx/conf.d/*.conf;
}

这样,你在本地就可以代理访问服务器地址http://localhost:8081/
当然,如果有多个server可以在upstream中进行配置,还可配置各个节点的权重等等。具体就不介绍了。

静态资源服务器

在前后端分离流行的当今。nginx被许多前端爱好者接受。通过nginx能够简单的将静态资源部署,从而达到动静分离的效果。
图片

nginx配置静态资源服务器很简单
在上述同级文件conf.d/下新建static.conf

server {
   listen    8082;
   server_name localhost;

   location / {
     root  /home/tomcat9/webapps/ROOT/;
     autoindex on;
   }
 }

其中root为tomcat的绝对路径(可以随便配置),我事先对tomcat的首页的index.jsp跑起来存成index.html文件。

那么现在我们已经完成两件事8081端口负载均衡(反向代理到我服务器)8082端口制成本地tomcat的静态文件服务器

那么开启tomcat。左面是nginx做服务器返回静态
图片

nginx vs tomcat压测对比

并发结果对比

  1. 我们先前下载的jmeter可以上场了。针对同一个静态页面。nginx路径为http://localhost:8082/,tomcat为http://localhost:8080/.

  2. 添加线程组。先测试15000个线程1s内同时请求主页。线程组中添加http请求。ip:localhost。port:8080
    在添加->监听器添加自己喜欢数据格式(需要qps的可以找插件)

  3. 对比
    其中tomcat,最大qps2400左右

    而nginx的结果明显要强,最大qps3000左右

对服务器影响对比

测压总结:

指标nginxtomcat
响应中位数0ms1ms
前95%响应时间45
前99%响应时间716
qps(观察)30002400
对内存影响0%6.4%
对cpu影响14%21.6%
其他轻便强大java吃点内存、速度慢点

(测量环境相对统一)

说在后面的话

通过系列对比,发现nginx的强大之处。负载均衡和静态资源服务器能够为并发减轻压力。而nginx的学问依然很多。还需要细细研究才行。并且nginx的牛B之处远不止这些,还需要深入学习才行!


标签:http,log,tomcat,弱鸡,nginx,conf,服务器
来源: https://blog.51cto.com/15018708/2618726