TKey Docs
  • Introduction
  • 认识阶段 (必读)
    • 单点登录系统认知与基础介绍
    • 故意设计点(常见问题)
    • 项目结构与端口占用
    • OAuth2.0 四种模式
    • JAR 方式部署
    • Docker 方式部署
    • Docker Compose 方式部署
  • TKey Server 开发阶段
    • 开发改造引导
  • TKey Management 开发阶段(也是前后端分离的最佳实践示例)
    • 后端开发改造引导
    • 前端开发改造引导
  • TKey Client Java 开发阶段
    • 自己封装的 REST Client
    • Spring Security 支持
  • 测试阶段
    • 单元测试
    • 压力测试
  • 部署阶段
    • 生产注意事项
    • 部署环境搭建
  • 监控阶段
    • Spring Boot Micrometer
    • 其他工具全在 部署环境搭建,请自行查看
  • 线上问题诊断
    • Actuator 在线修改 log 输出级别(Gif 动图)
    • Arthas 诊断 Docker 应用
    • 夜间开放端口,挑选流量远程 Debug
Powered by GitBook
On this page
  • Gatling 方式压力测试
  • JMeter 5.1 方式压力测试
  • wrk 简单压力测试
  • 如何继续提高 QPS

Was this helpful?

  1. 测试阶段

压力测试

Gatling 方式压力测试

  • 不带参数运行命令:

mvn gatling:test -Dgatling.simulationClass=test.load.oauth.TkeyPasswordGrantType
  • 带参数运行命令:

mvn gatling:test -Dgatling.simulationClass=test.load.oauth.TkeyPasswordGrantType -DtotalConcurrency=1000 -DrepeatTime=10 -DinjectTime=10

JMeter 5.1 方式压力测试

  • 如果 JVM 不够可以修改 bin/jmeter 文件中的:"${HEAP:="-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m"}"

cd /Users/youmeek/software/apache-jmeter-5.1.1/bin

./jmeter -n -t /Users/youmeek/TkeyPasswordGrantTypeJMeter.jmx -l /Users/youmeek/tkeyReport.jtl -e -o /Users/youmeek/htmlResult

wrk 简单压力测试

sudo yum groupinstall 'Development Tools'
sudo yum install -y openssl-devel git

git clone --depth=1 https://github.com/wg/wrk.git wrk
cd wrk
make

sudo cp wrk /usr/local/bin
wrk -t5 -c5 -d10s --script=/opt/post-wrk.lua --latency http://sso.cdk8s.com/sso/oauth/token
  • post-wrk.lua

wrk.method = "POST"
wrk.body   = "grant_type=password&client_id=test_client_id_1&client_secret=test_client_secret_1&username=admin&password=123456"
wrk.headers["Content-Type"] = "application/x-www-form-urlencoded"

如何继续提高 QPS

在压力测试过程中我们用 JProfile 监控了 CPU 情况,具体如下图:

经过上图我们已经有明确的答案:checkClientIdParam()

在校验 client 正确性的地方,读取了 redis,这个过程如果用二级缓存,经过我们压力测试可以再提高 15~20% 左右的 QPS。但是这样改造复杂度会提高,如果 TKey SSO Server 是多节点情况下,同步变更是个麻烦事,还要再引入 MQ,我觉得不划算。中小企业不建议为了这点性能提高系统复杂度。

对于中小企业发展,最核心的还是走对业务,能有一个随时掉头,变更方向的能力,所以系统复杂度一定要尽可能不高,或者契合当前企业的发展情况。

Previous单元测试Next部署阶段

Last updated 5 years ago

Was this helpful?

JProfile CPU