无法定位Kubernetes性能瓶颈:单体与微服务架构测试异常
单体与微服务架构对比压测问题
我正在开展单体与微服务架构对比项目,已基于SpringBoot+H2数据库构建两款功能正常的应用,但在Kubernetes环境中遭遇性能瓶颈。原本计划用Locust压测验证单体架构扩展性弱于微服务架构,实际测试中出现以下异常:
- 在IntelliJ本地运行应用时,Locust可达到2000 RPS(每秒请求数),排除Locust自身瓶颈;
- 在Docker Desktop中运行时,RPS稳定在350左右,无报错;
- 在Windows环境的minikube集群中运行时,无论单体还是微服务应用,RPS始终卡在122,随后触发
ConnectionRefusedError(10061, '[WinError 10061]')及RetriesExceeded('http://localhost:63254/account/1', 1, original=timed out)错误。即便将Pod数量扩容至10,RPS仍无变化,无法验证两种架构的扩展性差异。已尝试提升minikube资源至15GB内存、6核CPU,问题依旧。
DockerFile
FROM openjdk:17-jdk-slim as builder ARG JAR_FILE=target/*.jar COPY ${JAR_FILE} application.jar RUN java -Djarmode=layertools -jar application.jar extract FROM openjdk:17-jdk-slim COPY --from=builder dependencies/ ./ COPY --from=builder spring-boot-loader/ ./ #COPY --from=builder internal-dependencies/ ./ COPY --from=builder snapshot-dependencies/ ./ COPY --from=builder application/ ./ ENTRYPOINT ["java", "org.springframework.boot.loader.JarLauncher"]
Deployment.yaml
apiVersion: apps/v1 kind: Deployment metadata: name: monolit-app-deployment # 修改部署名为monolit-app-deployment spec: replicas: 1 selector: matchLabels: app: monolit-app # 修改应用名为monolit-app template: metadata: labels: app: monolit-app # 修改应用名为monolit-app spec: containers: - name: monolit-cnt # 修改容器名为monolit-cnt image: sonntdav00/test:1.0 ports: - containerPort: 8080 # resources: # requests: # cpu: "6 # 500毫核CPU(0.5核) # memory: "6Gi" # 512兆字节 # limits: # cpu: "6" # 1核CPU # memory: "6Gi" # 1千兆字节 # 如需添加环境变量请取消注释 # env: # - name: ENV_VARIABLE_NAME # value: ENV_VARIABLE_VALUE # 如需添加其他配置或资源限制请取消注释 --- apiVersion: v1 kind: Service metadata: name: monolit-app-service # 修改服务名为monolit-app-service spec: selector: app: monolit-app # 修改应用名为monolit-app ports: - protocol: TCP port: 8080 targetPort: 8080 # nodePort: 32000 # 在此指定所需端口 type: NodePort
Locust单体测试结果

内容的提问来源于stack exchange,提问作者DavidS
相关产品推荐
相关产品推荐

