(静态资源处理)nginx 比tomcat强在哪
  rPA3Ng2J1rAZ 2023年11月12日 28 0


nginx有多牛逼

序言

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

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

(静态资源处理)nginx 比tomcat强在哪_nginx

安装

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

  • nginx 下载:​​sudo apt get nginx​
  • jmeter 下载 官网自行安装 解压完(​​sudo chomd -R 777 apache-jmeter-5.1.1​​)

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

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

  • 所有的配置文件都在/etc/nginx下
  • 程序文件在/usr/sbin/nginx
  • 日志放在了/var/log/nginx中
  • 并已经在/etc/init.d/下创建了启动脚本nginx

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

  • nginx -s reload :修改配置后重新加载生效
  • nginx -s reopen :重新打开日志文件
  • 关闭nginx:
    nginx -s stop :快速停止nginx
    quit :完整有序的停止nginx
  • 其他的停止nginx 方式:
    ps -ef | grep nginx
    kill -9 xxx

如果权限不足记得加上​​sudo​

反向代理

(静态资源处理)nginx 比tomcat强在哪_tomcat_02


对于nginx,很多人用nginx tomcat做负载均衡。提高系统并发量。

对于nginx的配置文件,在​​/etc/nginx/conf.d/​​​下新建​​proxy.conf​​(也可以在nginx/nginx.conf中配置)

就比如我想用我本地8081端口代理到本地的nginx上

-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 比tomcat强在哪_nginx_03

静态资源服务器

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

(静态资源处理)nginx 比tomcat强在哪_nginx_04

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 比tomcat强在哪_服务器_05

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左右
  4. (静态资源处理)nginx 比tomcat强在哪_jmeter_06

  5. 而nginx的结果明显要强,最大qps3000左右
  6. (静态资源处理)nginx 比tomcat强在哪_nginx_07

对服务器影响对比

  • 当20000个并发10s内请求时候。附上完成时的cpu状况 tomcat cpu达到21.6%。内存站到6.4%,也就是随着并发tomcat对服务器的cpu和内存造成不小压力
  • (静态资源处理)nginx 比tomcat强在哪_服务器_08

  • 而nginx在压测过程中内存几乎没变化,几乎不吃内存。而cpu占用也比tomcat少。
  • (静态资源处理)nginx 比tomcat强在哪_jmeter_09

总结:

指标

nginx

tomcat

响应中位数

0ms

1ms

前95%响应时间

4

5

前99%响应时间

7

16

qps(观察)

3000

2400

对内存影响

0%

6.4%

对cpu影响

21.6%

14%

其他

轻便强大

java吃点内存、速度慢点

(测量环境相对统一)

说在后面的话

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

同时,替自己公众号打啵广告。希望一起交流哈

  • 如果对​​后端、爬虫、数据结构算法​​​等感性趣欢迎关注我的个人公众号交流:​​bigsai​


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月12日 0

暂无评论

推荐阅读