单机Web后端接口服务压力测试

单机Web后端接口服务压力测试


工具:Apache jmeter
环境:Window 10
语言:Kotlin + java
架构:SpringBoot + + Mysql + redis + Spring Data JPA + Hibernate

1、接口展示

// controller层

    @Api("系统信息")
    @RestController
    @RequestMapping("api/app/system")
    class AppSystemController {
    
        @Resource
        private lateinit var systemService: SystemService
    
        @ApiOperation("获取Q博士相关信息")
        @GetMapping("query_qboshi")
        fun queryQboshiExplain():AboutQboshiModel {
            return systemService.getAboutExplain()
        }
    
        @ApiOperation("获取团队说明")
        @GetMapping("group_get")
        fun getGroupExplain(): ExplainModel {
            return systemService.getGroupExplain()
        }
    }
// Service层
    fun getAboutExplain(): AboutQboshiModel {
        val set = settingsRepository.findSettingsEntityByKeyEquals(SettingsEntity.KEY_ABOUT_QBOSHI)
                ?: throw BadRequestException("暂无相关信息")
        return set.value.fromJson<AboutQboshiModel>() ?: throw BadRequestException("暂无相关信息")
    }

// Dao层
@Repository
    public interface SettingsRepository extends JpaRepository<SettingsEntity, Long> {
        SettingsEntity findSettingsEntityByKeyEquals(String key);
    }

其中数据在Mysql中的存储格式为Json,所以从DB中读取数据后还要进行一次转化处理,这有可能出现性能瓶颈,但目前对于该项目来说,已经完全足够支撑流量了。

2、jmeter

下图首先是建立线程组,可以看到,这里我建立了200个线程数,在2s内启动,每条线程循环1000次,为什么只建立200个线程数呢,因为200就已经把我的CPU吃满了,汗。

cmd-markdown-logo

下图为建立http请求,因为我也是第一次使用jmeter进行测试,所以使用不熟悉。

cmd-markdown-logo

下面为结果,可以看到,一共20万条数据,每条数据的响应时间是49ms,但是最大值到了3K多,浮动非常大,吞吐量在3800/sec左右,在跑数据的过程中,本机内存占用量在80%,内存为8g,可能是我应用开多了。

cmd-markdown-logo

下图是图形化结果,因为是第一次使用jmeter,所以特此记录下来,结果并不好看,对于这个接口来说,没有用一些支持高并发的架构。

cmd-markdown-logo

原文地址:https://www.cnblogs.com/tian874540961/p/11922706.html