环境:阿里云

压测主机:阿里云ECS(非LB后的主机)

压测目标:阿里云k8s自己的某个服务

k8s配置在kube-system 按照之前的ingress-nginx 配置了一个内网的ingress-nginx,对监听的443和80进行代理

LB为内网IP的lb,共享性的,然后在service的kube-system的ingress里添加了lb的实例

压测经过LB的时候,总是出现超时3%左右的超时连接

最后优化nginx-controler还是不行

然后试着把 ingress-nginx的Cluster类型改成了Local ---- externalTrafficPolicy: Local,结果好了。Cluster和Local为什么会影响压测结果呢

补充:

当时还优化了一部分参数,主要是nginx-ingress内参数

具体优化的参数:
1:我按照阿里云那边的建议把ingress副本调成了3个;
2:优化了部分参数,参数文章https://cloud.tencent.com/developer/article/1537695
3:对比fat环境把nginx-ingress-intranet 的类型改成了Local
具体优化的参数:
net.ipv4.tcp_syncookies = 0
fs.file-max=655350
$ cat /etc/security/limits.conf
...
*  hard  nofile  655350
*  soft  nofile  655350
*  hard  nproc  655350
*  soft  nproc  655350

$ kubectl -n kube-system edit configmap nginx-configuration
...
apiVersion: v1
data:
  keep-alive: "75"
  keep-alive-requests: "100"
  upstream-keepalive-connections: "10000"
  upstream-keepalive-requests: "100"
  upstream-keepalive-timeout: "60"

  

dev-azero环境进行压测api和azvs出现超时,错误率较多
解决:
1、绕开LB判断超时是否和LB有关,直接压测后端node:port,正常
2、api经LB到kube-system名称空间ingress-nginx-controller转发,初步判断是这里问题
3:搜索ingress调优,修改如下:

$ kubectl -n kube-system edit configmap nginx-configuration
...
apiVersion: v1
data:
  keep-alive: "75"
  keep-alive-requests: "100"
  upstream-keepalive-connections: "10000"
  upstream-keepalive-requests: "100"
  upstream-keepalive-timeout: "60"

以上内容具体解释
keep-alive-requests指令用于设置一个keep-alive连接上可以服务的请求的最大数量,当最大请求数量达到时,连接被关闭
Keep-Alive功能使客户端到服 务器端的连接持续有效,当出现对服务器的后继请求时,Keep-Alive功能避免了建立或者重新建立连接。默认75为timeout时间,对于一些请求比较大的内部服务器通讯的场景,适当加大为120s或者300s。
upstream-keepalive-connections 到upstream服务器即到server的空闲keepalive连接的最大数量 ,如何调:根据到服务器接受请求的响应时间和qps去设置,如果相应时间为100ms,性能要达到10000qps,值需设置为1000
upstream-keepalive-requests: 设置通过一个keepalive连接可以处理的最大请求数。发出最大数量的请求后,将关闭连接。
upstream-keepalive-timeout :设置一个超时,在此超时期间,与upstream服务器的空闲keepalive连接将保持打开状态
从官网总结的这几个参数 http://nginx.org/en/docs/http/ngx_http_upstream_module.html#keepalive,前三个如何调优给出了结论,后两个没找到优化的依据
4:以上优化完成后错误率仍然存在,稍有降低,按照prod环境修改ingress类型为Local

aliyun---经过LB到后端k8s压测超时的问题的更多相关文章

  1. 通过k8s(Kubernetes)搭建jmeter的压测环境master-slave架构,实现弹性伸缩

    在k8s上部署jmeter的mater和slave,根据压测需求动态增减master和slave节点数量,即可以完成压测任务,又可以是资源利用最大化 https://blog.kubernauts.i ...

  2. CentOS单机安装k8s并部署.NET 6程序 压测 记录

    前面部分依照CentOS单机安装k8s并部署.NET 6程序来进行,内存.cpu.centos版本一致,之前222元买的三年8M 2c4g腾讯云轻量服务器,这个教程算是写的很详细的了,基本可以一致执行 ...

  3. HAProxy压测及参数调优

    背景 小米容器云平台,在构建云厂商集群时,需要通过HAProxy将云厂商LB流量从宿主机转到容器中,但对于HAProxy的性能没有把握.参考网上的一篇HAProxy压测文章,文章中提到HAProxy ...

  4. 使用mysqlslap对mysql进行压测,观察Azure虚拟机cpu使用率

    一直想做这个测试,原因很简单,很多人一直比较怀疑Azure的虚拟机性能,说相同的配置凭啥比阿里的虚拟机贵那么多,其实,我自己以前也怀疑过,但是接触Azure的几个月,确实发现Azure的虚拟机性能真的 ...

  5. 真刀真枪压测:基于TCPCopy的仿真压测方案

    郑昀 基于刘勤红和石雍志的实践报告 创建于2015/8/13 最后更新于2015/8/19 关键词:压测.TCPCopy.仿真测试.实时拷贝流量 本文档适用人员:技术人员 提纲: 为什么要做仿真测试 ...

  6. 压测2.0:云压测 + APM = 端到端压测解决方案

    从压力测试说起 压力测试是确立系统稳定性的一种测试方法,通常在系统正常运作范围之外进行,以考察其功能极限和隐患.与功能测试不同,压测是以软件响应速度为测试目标的,尤其是针对在较短时间内大量并发用户的访 ...

  7. Jmeter之http性能测试实战 非GUI模式压测 NON-GUI模式 结果解析TPS——干货(十一)

    性能测试计划 性能测试用例 录制脚本 性能测试结果 性能测试报告 性能测试监控报告 准备工作 从脚本已录制成功之后开始进行压测 安装Jmeter拓展插件 查看 Transactions per Sec ...

  8. wrk 压测中请求无法响应问题解决过程

    ================= 遇到问题 =================$ 直连压测 wrk -c10000 -t100 -d100m http://localhost:9981/order/ ...

  9. jmeter压测、操作数据库、分布式linux下运行、webservice接口测试、charles抓包

    一.jmeter压测 在线程组中设置好,然后添加http请求,t添加聚合报告查看压力测试结果,如图: 一般压测时间10-15分钟,如果是稳定性测试,一般n*12小时,这些并发用户一直在请求. tps: ...

随机推荐

  1. P1828 香甜的黄油 Sweet Butter 最短路 寻找一个点使得所有点到它的距离之和最小

    P1828 香甜的黄油 Sweet Butter 闲来无事 写了三种最短路(那个Floyed是不过的) 题目描述 农夫John发现做出全威斯康辛州最甜的黄油的方法:糖.把糖放在一片牧场上,他知道N(1 ...

  2. play framework 相关

    1.下载 官网下载解压,安装有jkd即可使用 2.helloworld $ activator new my-first-app play-java https://www.playframework ...

  3. hadoop 基础

    common 一组分布式文件系统和通用I/O的组件与接口(序列化.java RPC和持久化数据结构) Avro 一种支持高效.跨语言的RPC以及永久存储数据的序列化系统 MapReduce 分布式数据 ...

  4. Android Studio 图形化设计 UI 界面

    我们开发 Android 程序必定是从 UI 开始的 ,使用最新版的 Android Studio 可以在图形化界面下设计软件 UI, Android Studio 默认的布局是 Constraint ...

  5. Flask DBUtils

    作用:创建连接池,解决多线程问题 1.安装模块 pip3 install -i https://pypi.douban.com/simple DBUtils 2.settings.py(配置文件) f ...

  6. Java入门 - 语言基础 - 21.Scanner类

    原文地址:http://www.work100.net/training/java-scanner.html 更多教程:光束云 - 免费课程 Scanner类 序号 文内章节 视频 1 概述 2 使用 ...

  7. [洛谷P1606] [USACO07FEB] 荷叶塘Lilypad Pond

    Description 为了让奶牛们娱乐和锻炼,农夫约翰建造了一个美丽的池塘.这个长方形的池子被分成了M行N列个方格(1≤M,N≤30).一些格子是坚固得令人惊讶的莲花,还有一些格子是岩石,其余的只是 ...

  8. 返回数据中提取数据的方法(JSON数据取其中某一个值的方法)

    返回数据中提取数据的方法 比如下面的案例是,取店铺名称 接口返回数据如下: {"Code":0,"Msg":"ok","Data& ...

  9. c语言秋季作业3

    本周作业头 这个作业属于那个课程 C语言程序设计II 这个作业要求在哪里 作业链接 我在这个课程的目标是 运用C语言编程解决一些简单的数学问题 这个作业在那个具体方面帮助我实现目标 学习if else ...

  10. 集合详解之 Collection

    集合详解之 Collection 先来看看集合的继承关系图,如下图所示: 其中: 外框为虚线的表示接口,边框为实线的表示类: 箭头为虚线的表示实现了接口,箭头为实线的表示继承了类. 为了方便理解,我隐 ...