nginx-为什么我不能在Kubernetes上水平扩展简单的HTTP / 2服务?
我已经部署了一些简单的服务作为概念验证:修补了https://stackoverflow.com/a/8217856/735231的nginx Web服务器,以实现高性能. 我还编辑了/etc/nginx/conf.d/default.conf,使该行监听80;成为监听80 http2;. 我正在使用Locust分布式负载测试工具,该类具有将请求模块交换为hyper的类,以便测试HTTP / 2工作负载.就性能而言,这可能不是最佳选择,但是我可以催生许多蝗虫工人,因此这不是一个大问题. 为了进行测试,我在5台计算机的GKE上生成了一个集群,每个集群2个vCPU,4GB RAM,安装了Helm以及这些服务的图表(如果有用,我可以稍后将它们发布在要点上). 我用min_time = 0和max_time = 0测试了Locust,以便产生尽可能多的请求.一个nginx实例有10个工人. 拥有10个工作人员,总共140个“客户”,我每秒收到约2.1k个请求(RPS).
现在,我尝试水平缩放:生成5个Nginx实例并获得:
如kubectl top pod所描绘的那样,资源使用率非常低(这是针对10个工人,280个客户端; nginx不受资源限制,刺槐工人每个pod限于1个CPU):
我将测试描述在GKE上以简化复制,但是在私有云集群中得到了相同的结果. 为什么我生成一个服务的实例数并不重要? 更新:按照第一个答案,我正在使用节点信息以及单个蝗虫工作人员的信息来更新信息.
但最重要的是,似乎根本的问题是我的能力受到了限制:
最佳答案
如果我理解正确,那么您确实在与Pod相同的群集/节点上运行了负载测试,这肯定会对总体结果产生影响,我建议您将客户端与服务器分开放置在单独的节点上,以免影响彼此.
对于您报告的值,可以清楚地看到工作人员正在消耗比nginx服务器更多的CPU. 您应该检查: >主机CPU利用率,使用上下文切换可能会承受很高的压力,因为线程数量远远大于可用的CPU数量. 您还应该测试单个服务器的容量,以验证每个服务器的限制,因此,您需要一个参数来比较结果是否符合预期值. (编辑:4S站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Nginx挂起重启
- nginx – “include_recipe”与Vagrantfile“chef.add_reci
- rest – nginx作为限制http动词访问的反向代理
- nginx更改specyfic url的根文件夹
- linux – 当master从命令行运行时,puppet master REST API在
- 从源安装nginx-1.7.8时,Chef :: Exceptions :: ChecksumMis
- python – X-Forwarded-Proto和Flask
- nginx-启用了ngx_http_realip_module的白名单cloudflare Ip
- 我应该在nginx中使用rewrite或return或proxy_pass吗?
- 使用PHP5-FPM的Nginx-提供空白屏幕的.php文件