Kubernetes Pod 在执行性能执行时重新启动而不是扩展

问题描述 投票:0回答:1

我正在对.NET 8.0构建的微服务应用程序进行性能测试,最近遇到了一个问题。当我在 Pod 上设置 CPU 限制时,一旦应用程序达到每秒 20 个事务 (TPS),它们就会开始重新启动。

我使用 Dynatrace 和各种 kubectl 命令来监控 CPU 和内存利用率,并确认资源使用率没有超过配置的 60% 阈值,甚至在 Pod 重新启动之前保持在 40% 以下。

尽管我对这个问题进行了彻底的调查,但我仍然无法找到解决方案。任何有关如何解决此问题的见解或指导将不胜感激!

请注意,当我从部署文件中删除 CPU 限制时,PODS 会正确扩展并且不会重新启动。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: my-app-container
        image: my-app-image:latest
        resources:
          requests:
            memory: "1512Mi"
            cpu: "2"  # Request for CPU
          limits:
            memory: "2Gi"
            cpu: "4"  # Limit for CPU
        ports:
        - containerPort: 80

docker kubernetes performance-testing autoscaling hpa
1个回答
0
投票

您可能会耗尽的资源不仅仅是 CPU。 选择一个节点,任何表现出行为的节点。 分析总响应时间方面成本最高的请求。查看请求的方差(标准差)。 成本加上方差的总和是受有限资源池成员约束的主要指标。

一旦您了解了成本最高的项目,该项目很可能是锁定其他项目无法(或必须等待)访问的资源的请求的根源,然后使用深度诊断超级英雄工具(Dynatrace)来对该项目进行婴儿钻探请求分析具有最高成本和差异的呼叫的所有呼叫。 这可能是您的根本问题。 优化一下!

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.