Nginx与Tomcat作为前端服务器的性能比较
Nginx与Tomcat作为前端服务器的性能比较
摘要
最近总遇到使用tomcat还是使用nginx进行前端文件访问的争论
想着出差周末在酒店, 可以自己进行一下简单的测试.
希望能够对未来的工作进行一些指导.
测试脚本
30KB 文件测试
ab -c 1000 -n 50000 -k http://127.0.0.1:5201/index.html
7.5MB 文件测试
ab -c 1000 -n 50000 -k http://127.0.0.1:5201/zhaobsh.html
简要测试结果
TPS的比较, 值越大越好
| 文件大小 | tomcat-TPS | nginx-TPS |
|---|---|---|
| 20KB | 44094 | 66418 |
| 7.5MB | 585 | 672 |
响应时间的比较, 值越小越好
| 文件大小 | tomcat-RT | nginx-RT |
|---|---|---|
| 20KB | 22.679 | 15.056 |
| 7.5MB | 1708.946 | 1488.010 |
测试结果简要分析
Nginx在处理静态文件 在比较零散时 应该至少比tomcat要好 50%
但是如果有网络瓶颈时, 可能不会有这样的效果
但是同时发现. java会开启大量的http线程进行相应
内存占用会比较高, 一个线程至少1MB的栈区.
同时发现JVM几乎不会有堆区GC的现象.
另外nginx在进行压测时CPU的使用量是很低. 压测java时CPU是能到 30%
但是nginx的CPU使用量比较低.
详细结果信息
说明: 配置相同
tomcat: 采用产品直接运行的界面进行测试
nginx: 采用将文件放到 html目录下面进行测试
测试说明 30KB小文件和 7.5MB的大文件.
直接在物理机器上面进行测试
使用tomcat直接进行测试
1000个连接 五万个请求时
30KB测试结果
ab -c 1000 -n 50000 -k http://127.0.0.1:5201/index.html
Document Path: /index.html
Document Length: 30877 bytes
Concurrency Level: 1000
Time taken for tests: 1.134 seconds
Complete requests: 50000
Failed requests: 0
Keep-Alive requests: 49999
Total transferred: 1569699971 bytes
HTML transferred: 1543850000 bytes
Requests per second: 44094.08 [#/sec] (mean)
Time per request: 22.679 [ms] (mean)
Time per request: 0.023 [ms] (mean, across all concurrent requests)
Transfer rate: 1351845.32 [Kbytes/sec] received
7.5MB测试结果
ab -c 1000 -n 50000 -k http://127.0.0.1:5201/zhaobsh.html
Document Path: /zhaobsh.html
Document Length: 7693835 bytes
Concurrency Level: 1000
Time taken for tests: 85.447 seconds
Complete requests: 50000
Failed requests: 0
Keep-Alive requests: 50000
Total transferred: 384717700000 bytes
HTML transferred: 384691750000 bytes
Requests per second: 585.16 [#/sec] (mean)
Time per request: 1708.946 [ms] (mean)
Time per request: 1.709 [ms] (mean, across all concurrent requests)
Transfer rate: 4396872.91 [Kbytes/sec] received
使用nginx进行测试
nginx 采用 auto 的woker线程数
ab -c 1000 -n 50000 -k http://127.0.0.1:5300/index.html
30KB测试结果
Document Path: /index.html
Document Length: 30877 bytes
Concurrency Level: 1000
Time taken for tests: 0.753 seconds
Complete requests: 50000
Failed requests: 56
(Connect: 0, Receive: 0, Length: 28, Exceptions: 28)
Keep-Alive requests: 49972
Total transferred: 1554678892 bytes
HTML transferred: 1542985444 bytes
Requests per second: 66418.88 [#/sec] (mean)
Time per request: 15.056 [ms] (mean)
Time per request: 0.015 [ms] (mean, across all concurrent requests)
Transfer rate: 2016797.47 [Kbytes/sec] received
7.5MB测试结果
ab -c 1000 -n 50000 -k http://127.0.0.1:5300/zhaobsh.html
Document Path: /zhaobsh.html
Document Length: 7693835 bytes
Concurrency Level: 1000
Time taken for tests: 74.401 seconds
Complete requests: 50000
Failed requests: 64
(Connect: 0, Receive: 0, Length: 32, Exceptions: 32)
Keep-Alive requests: 49968
Total transferred: 384457439664 bytes
HTML transferred: 384445547280 bytes
Requests per second: 672.04 [#/sec] (mean)
Time per request: 1488.010 [ms] (mean)
Time per request: 1.488 [ms] (mean, across all concurrent requests)
Transfer rate: 5046292.27 [Kbytes/sec] received
非本机测试
tomcat 30KB的结果为:
Document Path: /index.html
Document Length: 30877 bytes
Concurrency Level: 1000
Time taken for tests: 13.396 seconds
Complete requests: 50000
Failed requests: 0
Write errors: 0
Keep-Alive requests: 50000
Total transferred: 1569700000 bytes
HTML transferred: 1543850000 bytes
Requests per second: 3732.34 [#/sec] (mean)
Time per request: 267.928 [ms] (mean)
Time per request: 0.268 [ms] (mean, across all concurrent requests)
Transfer rate: 114426.95 [Kbytes/sec] received
nginx 30KB的结果为:
Document Path: /index.html
Document Length: 30877 bytes
Concurrency Level: 1000
Time taken for tests: 13.469 seconds
Complete requests: 50000
Failed requests: 0
Write errors: 0
Keep-Alive requests: 50000
Total transferred: 1555550000 bytes
HTML transferred: 1543850000 bytes
Requests per second: 3712.25 [#/sec] (mean)
Time per request: 269.379 [ms] (mean)
Time per request: 0.269 [ms] (mean, across all concurrent requests)
Transfer rate: 112784.93 [Kbytes/sec] received
tomcat的压测情况
压测之前:
- Thread (reserved=242MB, committed=242MB)
(thread #241)
(stack: reserved=241MB, committed=241MB)
(malloc=1MB #1210)
压测时:
- Thread (reserved=390MB, committed=390MB)
(thread #387)
(stack: reserved=387MB, committed=387MB)
(malloc=1MB #1940)
(arena=1MB #769)
注意 这是 tomcat 的配置事项:
tomcat:
threads:
max: 500
accept-count: 1000
max-connections: 20000
connection-timeout: 60000
但是需要注意, 仅使用前端, 几乎不会带来GC的现象.
线程会有所增加, 应该是提高了 http的工作线程.
Nginx与Tomcat作为前端服务器的性能比较的更多相关文章
- 排查nginx、tomcat内存和服务器负载之后
最近客户现在提出系统访问非常慢,需要优化提升访问速度,在排查了nginx.tomcat内存和服务器负载之后,判断是数据库查询速度慢,进一步排查发现是因为部分视图和表查询特别慢导致了整个系统的响应时间特 ...
- 踩坑纪实----tomcat部署前端服务器不能访问中文文件夹或中文文件名问题
修改tomcat的server.xml文件(解决含有中文的文件.图片的不能下载.显示的问题): 找到下列配置信息在xml文件中的位置,添加黑体字部分的参数即可(disableUploadTimeout ...
- Tomcat结合Apache、Nginx实现高性能的web服务器
一.Tomcat为什么需要与apache.nginx一起结合使用? Tomcat虽然是一个servlet和jsp容器,但是它也是一个轻量级的web服务器.它既可以处理动态内容,也可以处理静态内容.不过 ...
- Nginx 服务器 之Nginx与tomcat实现负载均衡
本文讲解我们如何使用Nginx做反向带服务器,实现nginx与tomcat服务器集群做负载均衡. 一.nginx与tomcat实现负载均衡 1.在/usr/local/ngnix/conf 创建 ...
- virtualbox搭建ubuntu server nginx+mysql+tomcat web服务器1 (未完待续)
virtualbox搭建ubuntu server nginx+mysql+tomcat web服务器1 (未完待续) 第一次接触到 linux,不知道linux的确很强大,然后用virtualbox ...
- centos搭建https协议的tomcat和apache服务器以及nginx服务器,mysql php
Apache HTTP Server(简称 Apache)是 Apache 软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛使用,是最流行的 Web ...
- nginx+keepalived+tomcat之tomcat性能调优
body{ font-family: Nyala; font-size: 10.5pt; line-height: 1.5;}html, body{ color: ; background-color ...
- 修改Linux内核参数提高Nginx服务器并发性能
当linux下Nginx达到并发数很高,TCP TIME_WAIT套接字数量经常达到两.三万,这样服务器很容易被拖死.事实上,我们可以简单的通过修改Linux内核参数,可以减少Nginx服务器 的TI ...
- 项目部署问题:xftp无法连接服务器、Nginx403 Forbidden解决、nginx反向代理解决前端跨域问题
一.xftp无法连接服务器 在xftp中配置正确的ip,用户名和密码后,居然无法连接 解决方案:将协议里面的FTP换成SFTP,注意换成SFTP后端口就默认换成22,要还是原来的21就还是连不上的哈 ...
- Apache 后台服务器(主要处理php及一些功能请求 如:中文url) Nginx 前端服务器(利用它占用系统资源少得优势来处理静态页面大量请求) Lighttpd 图片服务器 总体来说,随着nginx功能得完善将使他成为今后web server得主流。
Apache 后台服务器(主要处理php及一些功能请求 如:中文url) Nginx 前端服务器(利用它占用系统资源少得优势来处理静态页面大量请求) Lighttpd 图片服务器 总体来说,随着ngi ...
随机推荐
- Java PDF文档转换 — PDF转Excel、SVG转PDF
概述 Spire.PDF for Java支持将PDF文档高质量地转换为XPS.图片.SVG.Word.HTML和PDF/A格式,以及支持将XPS.HTML文档转换为PDF格式.本文将通过代码演示来介 ...
- 基于Serverless的端边云一体化媒体网络
摘要:视频在边缘的创新方向在哪?下一代视频云平台什么样? 本文分享自华为云社区<探讨视频云与边缘云平台的竞争力--基于Serverless的端边云一体化媒体网络>,作者/卢志航,整理 / ...
- Taro架构构析(2):Taro 设计思想及架构
从之前微信公众号的开发经验来说,以及腾讯开放平台的接入 等经验来看,一直对腾讯的开放文档 有心理阴影. 微信小程序从文件组织上看,一个小程序页面或组件,需要同时包含 4 个文件:脚本逻辑.样式.模板以 ...
- Spring 太肥、太慢?你受不了?那 Solon Java Framework 就是你的西施
Solon 是什么? Java 生态型应用开发框架.它从零开始构建,有自己的标准规范与开放生态(历时五年,已有全球第二级别的生态规模).与其他框架相比,它解决了两个重要的痛点:启动慢,费内存.2023 ...
- Java 项目工程搭建 --创建子模块(依赖父工程)
Java 项目工程搭建 --创建父工程 Java 项目工程搭建 --创建子模块(依赖父工程) 这个建方比较干净,不会生成乱七八糟的东西,(建完以后,其它模块可以 Copy 改名字) 选择 Mave ...
- # 0x54 动态规划-树形DP
A.没有上司的舞会 基础树形DP emmm,蒟蒻发现自己的DP太辣鸡了...所以来练练DP,这题的话实际上应该算是树DP的入门题吧,转移还是挺好想的. 每次在每个节点都会有个选择,就是选还是不选,如果 ...
- 创新推出 | Serverless 调试大杀器:端云联调
背景 说起当前最火一个技术, 不可避免地讨论到一个概念: Serverless.作为一种新型的应用架构,Serverless 让我们摆脱了维护基础设施的繁琐,只需要上传代码包或者镜像, 即可得到一个弹 ...
- 一、java发送http的各类请求
导航 一.java发送http的各类请求 二.java发送https的各类请求 java开发中需要调用其他服务的对外提供的http请求可以参考如下代码: 注:调用的主类比较简单就不写了. pom.xm ...
- C#设计模式04——工厂方法的写法
1. What是C#工厂方法?C#工厂方法是一种设计模式,它通过创建具有相同基类的对象来实现代码的重用和灵活性. 2. Why使用C#工厂方法?使用C#工厂方法有以下好处:- 降低了代码的耦合性,让代 ...
- idea导入maven项目结构不全
本文为博主原创,转载请注明出处 将本地的项目导入idea中,其操作第一步为: File->open->选中导入maven项目的pom文件,正常情况通过该步骤项目就会导入到idea中. 通过 ...