springboot项目打Jar包吞吐量低问题解决

  最近在项目中遇到了一个比较奇怪的问题,在IDEA本地起项目测试的吞吐量竟然高于在服务上起jar包(源码及所有依赖的jar打包至一个jar包中)的吞吐量,服务器的内存及cpu利用率较低,这显然是不正常的,于是进行了一系列尝试,最终通过将源码与依赖的第三方jar分开解决了问题。两种打包方式效率对比如下:

方式一:源码及所有依赖的jar打包至一个jar包中

  target目录结构:
target目录结构
  Jar包目录结构:
Jar包目录结构
  使用java -jar xxx.jar启动jar包,jemeter测试接口吞吐量如下:
在这里插入图片描述

方式二:源码和依赖的jar分离

  target目录结构
target目录结构
  ZIP文件夹结构
ZIP文件夹结构

  config中是xx.jar运行需要的配置文件;lib中是xx.jar运行依赖的第三方jar

  使用java -jar xx.jar启动程序,jemeter测试接口吞吐量如下:
吞吐量
  可以看出将源码和依赖jar分离的打包方式将吞吐量提升了20多倍,打包方式不同造成吞吐量巨大差距的原因暂时还没有搞清楚,希望了解的大佬留言赐教。

附上源码和jar分离的打包方式配置:

1、使用maven assembly插件打包,配置assembly.xml
  在项目 src\main\assembly\assembly.xml 路径下建立assembly.xml文件,文件的路径可以根据项目情况更改。assembly.xml文件内容如下:

<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">

    <!--
        必须写,否则打包时会有 assembly ID must be present and non-empty 错误
        这个名字最终会追加到打包的名字的末尾,如项目的名字为 speed-api-0.0.1-SNAPSHOT,
        则最终生成的包名为 speed-api-0.0.1-SNAPSHOT-bin.zip
     -->
    <id>bin</id>

    <!-- 打包后的文件格式,可以是zip,tar,tar.gz,tar.bz2,jar,war,dir -->
    <formats>
        <format>zip</format>
    </formats>

    <!-- 压缩包下是否生成和项目名相同的根目录 -->
    <includeBaseDirectory>false</includeBaseDirectory>

    <dependencySets>
        <dependencySet>
            <!-- 不使用项目的artifact,第三方jar不要解压,打包进zip文件的lib目录 -->
            <useProjectArtifact
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值