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数量. 您还应该测试单个服务器的容量,以验证每个服务器的限制,因此,您需要一个参数来比较结果是否符合预期值. (编辑:南阳站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- django – nginx不提供管理静态文件?
- node.js – 你应该如何处理auth并在微服务之间共享用户信息
- nginx – 使用SSL的Chrome中的“连接未压缩”
- nginx规则 – 匹配除一个以外的所有路径
- ssl-使用HTTP / 2时Safari无法给出响应
- 如何将此Nginx调试为uWSGI超时?
- python-uswgi-无法从multiprocessing.semaphore_tracker加载
- python-对Dreamhost Passenger Django进行故障排除
- 使用Nginx,fastcgi和php设置开发环境时,我从php服务器收到“
- 如何配置nginx自动重定向到主主机名?
- 调试 – nginx php-fpm xdebug netbeans只能启动
- google-chrome – 将资源解释为文档,但使用mime类
- node.js-同一VPS上的PHP网站和Nodejs应用
- 使用docker在CentOs上设置PHP-FPM,Nginx,Mariadb
- nginx-Capistrano 3无权查询此Phusion Passenger
- 具有可变参数顺序的Nginx缓存
- 配置 – 如何使用nginx提供图像
- nginx – 如果我们不关闭cgi.fix_pathinfo,服务器
- 域重定向到nginx中的错误站点,配置文件中的多个站
- http – 如何在Nginx服务器上允许PUT文件请求?
