CodeAndPeace 压力测试

CodeAndPeace 压力测试

测试内容

测试 CodeAndPeace社区 首页(热帖排行)高并发访问的效果,测试分为本地开发环境和线上生产环境,对比使用本地缓存组件 Caffeine 和不使用缓存(查询直接走 MySQL)情况下的首页平均响应时间和吞吐量。

测试环境

测试环境主要分为本地开发环境和线上生产环境

开发环境

OS:Windows 10
CPU:AMD Ryzen3 3700x,8 核 16 线程
内存:16G,3200 MHz
硬盘:固态
压测软件:JMeter

生产环境

OS:CentOS 7
CPU:Intel Xeon Gold 6161,单核单线程
内存:2G
硬盘:机械
压测软件:Apache Benchmark

备注

  1. 生产环境是华为云服务器,其实是虚拟化的硬件
  2. 为了避免网络环境影响,两次测试其是都是本地访问,如果是远程访问,并不会有这么好的结果

测试结果

开发环境

不同并发量下的吞吐量

  1. 使用缓存时,在各个并发量下,吞吐量基本维持在不使用缓存时的 10 倍左右。
  2. 当并发量提高到 3000+ 时,依赖于 AMD 多核 CPU 的优势(AMD YES !),吞吐量并没有明显的下降。

测试环境.png

不同并发量下的平均响应时间

无论是否使用缓存,响应时间与并发量都呈现线性关系,但是使用缓存的曲线斜率要小很多,当并发量来到 3000+ 时,不使用缓存的平均响应时间已经达到 6s+,这显然是无法接受的,而使用缓存后,平均响应时间维持在 0.5s 左右。

开发环境 响应时间.png

特别说明——不同并发量下 CPU 占用

  1. 通过查看任务管理器,不使用缓存时,服务主程序的 CPU 占用最高到 64% 左右,且 MySQL 服务在各个并发量下的 CPU 占用基本都维持在 10% 左右,并没有提高,也就是说,CPU 还没有发挥全部实力,数据库的处理能力就已经到达了瓶颈(给你机会你不中用啊!)
  2. 如果使用缓存,主程序 CPU 占用可以维持在 85% 以上,并发量大时可以接近90%,且 MySQL 并没有占用 CPU。

不中用.gif

生产环境

不同并发量下的吞吐量

因为云服务器的配置相比自己的电脑较低,只有单核(最普通的学生机),所以使用缓存后的提升并没有比自己本机上大,不过相比不使用缓存,依然有 3-4 倍的提升。

生产环境.png

不同并发量下的平均响应时间

线上环境下,响应时间随并发量的变化规律与生产环境差不多,使用缓存后的优化效果也有 3-4 倍的提升。

生产环境 响应时间.png

软件链接