HTTPS下tomcat与nginx的前端性能比较

https,tomcat,nginx,前端,性能,比较 · 浏览次数 : 185

小编点评

## HTTPS 下Tomcat 与 Nginx 前端性能比较摘要 以下是您对两个 web server 性能比较的摘要: **Nginx:** * 性能更优,提升 50% 以上。 * 支持长连接,提升性能。 * 8线程并发性能比 Tomcat 高,1860 线程吞吐量1128.08,错误率低。 **Tomcat:** * 性能略低于 Nginx,但仍然优于 HTTP。 * 支持长连接,但性能不如 Nginx。 * 1000并发请求时出现大量的 SSL handshake failed。 **主要原因:** * **前端性能:** Nginx 由于支持长连接,可以将多个请求合并到一个连接中,提升性能。 * **并发性能:** 8 线程的并发性能比 Tomcat 高,1860 线程吞吐量1128.08。 * **SSL handshake:** SSL handshake 是一个耗时的过程,它会占用大量的 CPU 资源。nginx 的 8 线程并发中, SSL handshake 的错误率很低,甚至低于 Tomcat。 **结论:** * 在前端性能方面,Nginx 仍然比 Tomcat 更优。 * 在并发性能方面,Nginx 的 8 线程并发性能更高。 * 由于 SSL handshake 的优势,https 下的长连接性能可能比 http 下的还要高。

正文

HTTPS下tomcat与nginx的前端性能比较


摘要

之前比较http的web服务器的性能.
发现nginx 比 tomcat 要好 50%

然后想到, https的情况下不知道两者有什么区别
所以准备再尝试一下. 换用https进行检查. 

Springboot的设置

server:
  ssl:
    key-store: keystore.p12
    keyStoreType: PKCS12
    key-store-password: Testxxxx
    enabled: true
  port: 5401

Nginx的设置

    listen 5402 ssl;
    ssl_certificate cert/perf.xxxx.cloud_bundle.crt;  
    ssl_certificate_key cert/perf.xxxx.cloud.key; 
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
    ssl_prefer_server_ciphers on;
        location / {
            root html;
            index index.html index.htm;
        }

简单测试

tomcat:
ab -c 1000 -n 50000 -k https://127.0.0.1:5401/index.html
nginx:
ab -c 1000 -n 50000 -k https://127.0.0.1:5402/index.html


简要结果

文件大小 tomcat-http-TPS tomcat-https-TPS nginx-http-TPS nginx-https-TPS
20KB-长连接 44094 9719 66418 14565
20KB-短连接 14121 1305 18080 1846

简要思考

与http的结论一致.
nginx的性能还是 tomcat的 1.5倍,或者是更高. 

更需要注意的是. http下长连接是短连接服务性能的 3 倍 以上. 
https下长连接是短连接服务性能的, 更是高达 7 倍 以上

所以前后端分离, 使用nginx 应该比使用tomcat要优秀. 
并且前端使用 长连接的收效要更好一些. 

结果说明事项

注意: 测试发现, 单worker 1000并发时出现大量的 SSL handshake failed (5).
Nginx 对多线程对并发性能提示还是非常明显的. 
8线程https  1860的吞吐量
1线程https  882.04的吞吐量, 并且错误率非常高. 
Complete requests:      45647
Failed requests:        266

同时间 8 线程的错误率如下:
Complete requests:      49998
Failed requests:        2

与HTTPS下tomcat与nginx的前端性能比较相似的内容:

HTTPS下tomcat与nginx的前端性能比较

HTTPS下tomcat与nginx的前端性能比较 摘要 之前比较http的web服务器的性能. 发现nginx 比 tomcat 要好 50% 然后想到, https的情况下不知道两者有什么区别 所以准备再尝试一下. 换用https进行检查. Springboot的设置 server: ssl:

[转帖]Etcd+Confd实现Nginx配置文件自动管理

https://www.cnblogs.com/zhengchunyuan/p/9681954.html 一、需求 我们使用Nginx做七层负载均衡,后端是Tomcat。项目采用灰度发布方式,每次项目升级,都要手动先从Nginx下摘掉一组,然后再升级这组,当项目快速迭代时,手动做这些操作显然会增加部

高并发环境下3种方式优化Tomcat性能

摘要:Tomcat作为最常用的Java Web服务器,随着并发量越来越高,Tomcat的性能会急剧下降,那有没有什么方法来优化Tomcat在高并发环境下的性能呢? 本文分享自华为云社区《【高并发】高并发环境下优化Tomcat性能》,作者: 冰 河 。 写在前面 Tomcat作为最常用的Java We

tomcat非root用户启动

部署远程服务器时候, 基本都是用root账户登录, 习惯上会直接使用root启动tomcat. 这样其实是有风险的, 黑客获取的权限即容器的权限, 如果容器运行权限就很高,被攻破黑客即可获取很高的权限,造成破坏面及风险更大 本文介绍通过tomcat下的/bin/daemon.sh方式启动tomcat

制作tomcat镜像

本篇文章介绍用Dockerfile的方式构建Tomcat镜像,请保证安装了Docker环境。 1. 首先创建/opt/tomcat目录,后续步骤都在该目录下进行操作。 2. 准备好Jdk和Tomcat安装文件,放到/opt/tomcat目录下。 3. 编写Dockerfile,内容如下: ```Do

[转帖]Tomcat部署及优化

目录 一、Tomcat简介1 Tomcat的三大核心组件2 Java Servlet3 JSP全称Java Server Pages4 Tomcat 功能组件结构5 Tomcat 请求过程 二、Tomcat 服务部署1.关闭防火墙,将安装 Tomcat 所需软件包传到/opt目录下2.安装JDK3.

Tomcat目录结构

Tomcat目录结构图如下: 1、bin目录 存放一些可执行的二进制文件,.sh 结尾的为linux下执行命令,.bat 结尾的为windows下执行命令。 catalina.sh:真正启动tomcat文件,可以在里面设置jvm参数。 startup.sh:启动tomcat(需事先配置好JAVA_H

Golang 切片作为函数参数传递的陷阱与解答

作者:林冠宏 / 指尖下的幽灵。转载者,请: 务必标明出处。 GitHub : https://github.com/af913337456/ 出版的书籍: 《1.0-区块链DApp开发实战》 《2.0-区块链DApp开发:基于公链》 例子 切片作为函数参数传递的是值 用来误导切片作为函数参数传递的

Ton 区块链的官方 类ERC20-Token 智能合约代码-Transfer部分解析

作者:林冠宏 / 指尖下的幽灵。转载者,请: 务必标明出处。 掘金:https://juejin.im/user/1785262612681997 GitHub : https://github.com/af913337456/ 出版的书籍: 《1.0-区块链DApp开发实战》 《2.0-区块链DA

[转帖]win10下使用Rclone将OneDrive映射到本地磁盘教程(开机自动挂载)

win10下使用Rclone将OneDrive映射到本地磁盘教程(开机自动挂载) 下载rclone,winfsp和Git bashRclone.Winfsp. 和 [Git bash](https://gitforwindows.org/). 配置Rclone开机自动挂载 onedrive云盘是微软