我刚进入库伯内特斯,我真的很喜欢它编排容器的能力。我的假设是,当应用程序开始增长时,我可以简单地增加副本来处理需求。然而,现在我已经进行了一些基准测试,结果使我感到困惑。
我在GKE上运行Laravel 6.2w/ Apache,其中有一个G1--小型机器作为节点。我只使用NodePort服务来公开应用程序,因为LoadBalancer看起来很昂贵。
使用的基准测试工具是wrk和ab。当副本增加到2时,请求/s会以某种方式下降。我预计请求数量会增加,因为有2个吊舱可用于满足请求。是否在某个地方出现瓶颈,或者我的理解是有缺陷的。希望有人能指出我错过了什么。
发布于 2019-12-27 13:58:01
一个g1-small instance真的很小:一个内核和1.7GB内存的利用率是50%。您没有描述您的应用程序做了什么或如何描述它,但是如果它是CPU绑定的,那么添加更多的进程副本对您毫无帮助;您仍然受到GCP提供的CPU数量的限制。如果您达到了实例的内存限制,这将极大地降低您的性能,无论是交换还是某个副本被OOM杀死。
另一件可能影响此基准的事情是,有时,在有限的时间内,您可以被允许高达100%的CPU利用率。因此,如果您得到一个实例并运行了第一个基准测试,它可能使用了一个突发周期并看到了更高的性能,但是在同一个实例上重新运行第二个基准可能无法做到这一点。
简而言之,您不能只是简单地增加对部署的副本计数,并期望获得更好的性能。您需要确定系统中的实际瓶颈在哪里。像Prometheus这样的监控工具可以报告关于每个荚CPU利用率的高级别统计数据,这可能会有所帮助。在一个典型的数据库支持的Web应用程序中,数据库本身是瓶颈,在Kubernetes级别上,您对此无能为力。
https://stackoverflow.com/questions/59499345
复制相似问题