performance - GKE 和 RPS - “使用量已满” - 以及性能问题
问题描述
我们有一个带有 Ingress 的 GKE 集群(kubernetes.io/ingress.class:“gce”),其中一个后端为我们的生产站点提供服务。
该集群是区域性的,启用了 3 个区域(启用了自动缩放)。
后端服务生产站点是作为部署运行的 Varnish 服务器 - 单个副本。在 Varnish 后面有多个 Nginx/PHP pod 在 HorizontalPodAutoscaler 下运行。
该网站的性能很慢。我们注意到通过使用 GCP 控制台,所有流量都仅路由到一个后端,并且一个区域中只有 1/1 健康端点?
我们在服务后端旁边收到感叹号,并显示消息“Usage is at capacity, max = 1”和“Backend利用率:0%”。第二个区域中的另一个后端没有配置端点?第三区没有第三人支持?
最初,我们以大约 80RPS 的速率从后端收到大量 5xx 响应,因此我们通过 BackendConfig 打开了 CDN。
这已将 5xx 响应(包括后端的 RPS)减少到大约 9RPS,并且大约 83% 的 RPS 由 CDN 提供。
我们正试图弄清楚是否有可能提高我们的后端利用率,因为显然可以轻松实现从一台后面有许多 pod 的 Varnish 服务器提供 80RPS。在这种情况下,我们找不到任何表现不佳的 POD(varnish 本身或 nginx/php)。
GKE/GCP 是否限制后端/端点仅支持 1RPS?
有没有办法增加每个端点的 RPS 并增加端点的数量,每个区域至少一个?
是否有任何可用的文档解释如何在 GKE/GCP 上扩展此类架构?
解决方案
推荐阅读
- python - file.write 不会写入文件,但普通文本会 - 为什么会发生这种情况?
- firebase - 帐户不使用 GCP 计算时 GCP Compute Engine API 中的神秘指标
- python - 如何在没有单独的环境变量系统的情况下在本地从 Helm 获取值?
- python - 如何在 Python 中使生成的矩阵不重复?
- task - 创建虚拟 asyncio.Task
- directory - 使用 xargs 创建远程目录
- java - HackerRank-类解决方案中的方法calculateSum不能应用于给定类型
- javascript - 无法再在 Chrome 中检查对象
- python - 将枕头 Gif 复制到 Windows 剪贴板
- c++ - 如何从不同的类中获取函数来调用在 Main 中声明的对象?