jemeter服务器性能测试实战总结

本文总结了一次使用JMeter进行云服务性能测试的过程,重点关注了测试中遇到的三大问题:1) service因健康检查机制崩溃重启;2) Tomcat JDBC连接不足;3) Postgresql连接数过多。这些问题揭示了框架和环境的性能瓶颈,并提出了相应的分析和解决建议。
摘要由CSDN通过智能技术生成

 

Table of Contents

服务器背景介绍

性能测试方法

测试结果和分析

第一个问题:service crash重启的问题

第二个问题:Tomcat JDBC Connection not enough的问题

第三个问题:Postgresql too many clients 的问题


本次测试是针对部署在云服务上的单个service的性能测试,此service是整个业务逻辑服务的其中一环。

服务器背景介绍

整个service架构如下

数据库: postgresql

后端框架: spring boot + embbed tomcat + java

部署环境:某一个知名的云平台

性能测试方法

测试工具:jemeter

测试思路:使用jemeter测试,分别针对不同的需要测试的api创建test plan。每个test plan有两个变量

  • 线程数
  • 数据量

每一个test plan分别起10,20,50,100,200个线程同时运行.分别在数据库数据量大致为一万,五万,十万,二十万,五十万时候运行。一共会产生25组结果,表格如下

数据量(单位:万) 线程数(单位:个) 并发运行时间(单位:分钟)
1 10 5
5 20 5
10 50 5
20 100 5
50 200 5

在jemeter当中,我们可以填写启动的线程数,运行的时间,测试数据等。界面如下:

下面是一个test plan的xml代码实例

<?xml version="1.0" encoding="UTF-8"?>
<jmeterTestPlan version="1.2" properties="3.2" jmeter="3.3 r1808647">
  <hashTree>
    <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="Get by customerNumber with markets defaultAddress" enabled="true">
      <stringProp name="TestPlan.comments"></stringProp>
      <boolProp name="TestPlan.functional_mode">false</boolProp>
      <boolProp name="TestPlan.serialize_threadgroups">true</boolProp>
      <elementProp name="TestPlan.user_defined_variables" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
        <collectionProp name="Arguments.arguments"/>
      </elementProp>
      <stringProp name="TestPlan.user_define_classpath"></stringProp>
    </TestPlan>
    <hashTree>
      <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Get by customerNumber with markets defaultAddress" enabled="true">
        <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
        <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
          <boolProp name="LoopController.continue_forever">false</boolProp>
          <intProp name="LoopController.loops">-1</intProp>
        </elementProp>
        <stringProp name="ThreadGroup.num_threads">100</stringProp>
        <stringProp name="ThreadGroup.ramp_time">1</stringProp>
        <longProp name="ThreadGroup.start_time">1515376034000</longProp>
        <longProp name="ThreadGroup.end_time">1515376034000</longProp>
        <boolProp name="ThreadGroup.scheduler">true</boolProp>
        <stringProp name="ThreadGroup.duration">300</stringProp>
        <stringProp name="ThreadGroup.delay"></stringProp>
      </ThreadGroup>
      <hashTree>
        <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
          <collectionProp name="HeaderManager.headers">
            <elementProp name="&#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值