当前位置: 首页 > 知识库问答 >
问题:

“max_connections”在《特使》中到底是什么意思?

苏富
2023-03-14

我的问题是关于什么“集群”。断路器。hresholds.max_connections”在特使中的意思是。

簇断路器。阈值。特使文件中的最大连接数解释如下:

特使将与上游集群建立的最大连接数。如果未指定,则默认值为1024。

Istio使用特使作为侧车。最近我们尝试了断路示例,但总是发现连接比我们配置的要多。

因此,我们进行另一项测试,如下所示:

>

  • 在istio中添加两个服务:

    • echo客户端:下游的1个pod将向echo服务器发送HTTP请求
    • 回声服务器:2个吊舱,上游

    服务舱:

    [root@k8s-master istio-1.0.3]# kubectl get pod -o wide
    NAME                          READY   STATUS    RESTARTS   AGE     IP            NODE     NOMINATED NODE
    echoclient-84485fbc5c-zxlv8   2/2     Running   0          8s      10.244.2.79   node02   <none>
    echoserver-5655768fb9-smsvb   2/2     Running   0          23h     10.244.2.65   node02   <none>
    echoserver-5655768fb9-srsq2   2/2     Running   0          7h52m   10.244.2.73   node02   <none>
    

    istio代理配置输出:

    [root@k8s-master istio-1.0.3]# istioctl proxy-config clusters echoclient-84485fbc5c-zxlv8 --fqdn echoserver.default.svc.cluster.local -o json
    [
        {
            "name": "outbound|8080||echoserver.default.svc.cluster.local",
            "type": "EDS",
            "edsClusterConfig": {
                "edsConfig": {
                    "ads": {}
                },
                "serviceName": "outbound|8080||echoserver.default.svc.cluster.local"
            },
            "connectTimeout": "1.000s",
            "circuitBreakers": {
                "thresholds": [
                    {
                        "maxConnections": 2
                    }
                ]
            }
        }
    ]
    

    结果:

    [root@k8s-master istio-1.0.3]# kubectl exec -it echoclient-84485fbc5c-zxlv8 /bin/bash
    Defaulting container name to echoclient.
    Use 'kubectl describe pod/echoclient-84485fbc5c-zxlv8 -n default' to see all of the containers in this pod.
    [root@echoclient-84485fbc5c-zxlv8 /]# /opt/jre/bin/java -cp /opt/echoclient-1.0-SNAPSHOT-jar-with-dependencies.jar hello.HttpSender "http://echoserver:8080/echo?name=peter" 10 40 0
    using num threads: 10
    Starting pool-1-thread-1 with numCalls=40 parallelSends=false delayBetweenCalls=0 url=http://echoserver:8080/echo?name=peter mixedRespTimes=false
    Starting pool-1-thread-2 with numCalls=40 parallelSends=false delayBetweenCalls=0 url=http://echoserver:8080/echo?name=peter mixedRespTimes=false
    Starting pool-1-thread-3 with numCalls=40 parallelSends=false delayBetweenCalls=0 url=http://echoserver:8080/echo?name=peter mixedRespTimes=false
    Starting pool-1-thread-4 with numCalls=40 parallelSends=false delayBetweenCalls=0 url=http://echoserver:8080/echo?name=peter mixedRespTimes=false
    Starting pool-1-thread-5 with numCalls=40 parallelSends=false delayBetweenCalls=0 url=http://echoserver:8080/echo?name=peter mixedRespTimes=false
    Starting pool-1-thread-6 with numCalls=40 parallelSends=false delayBetweenCalls=0 url=http://echoserver:8080/echo?name=peter mixedRespTimes=false
    Starting pool-1-thread-7 with numCalls=40 parallelSends=false delayBetweenCalls=0 url=http://echoserver:8080/echo?name=peter mixedRespTimes=false
    Starting pool-1-thread-8 with numCalls=40 parallelSends=false delayBetweenCalls=0 url=http://echoserver:8080/echo?name=peter mixedRespTimes=false
    Starting pool-1-thread-9 with numCalls=40 parallelSends=false delayBetweenCalls=0 url=http://echoserver:8080/echo?name=peter mixedRespTimes=false
    Starting pool-1-thread-10 with numCalls=40 parallelSends=false delayBetweenCalls=0 url=http://echoserver:8080/echo?name=peter mixedRespTimes=false
    pool-1-thread-7: successes=[40], failures=[0], duration=[481ms]
    pool-1-thread-6: successes=[40], failures=[0], duration=[485ms]
    pool-1-thread-4: successes=[40], failures=[0], duration=[504ms]
    pool-1-thread-1: successes=[40], failures=[0], duration=[542ms]
    pool-1-thread-9: successes=[40], failures=[0], duration=[626ms]
    pool-1-thread-8: successes=[40], failures=[0], duration=[652ms]
    pool-1-thread-2: successes=[40], failures=[0], duration=[684ms]
    pool-1-thread-10: successes=[40], failures=[0], duration=[657ms]
    pool-1-thread-5: successes=[40], failures=[0], duration=[678ms]
    pool-1-thread-3: successes=[40], failures=[0], duration=[696ms]
    

    netstat的连接信息:

    [root@echoclient-84485fbc5c-zxlv8 /]# netstat -ano | grep 8080 | grep ESTABLISHED
    tcp        0      0 10.244.2.79:58074       10.244.2.65:8080        ESTABLISHED off (0.00/0/0)
    tcp        0      0 10.244.2.79:38076       10.244.2.73:8080        ESTABLISHED off (0.00/0/0)
    tcp        0      0 10.244.2.79:58088       10.244.2.65:8080        ESTABLISHED off (0.00/0/0)
    tcp        0      0 10.244.2.79:38080       10.244.2.73:8080        ESTABLISHED off (0.00/0/0)
    tcp        0      0 10.244.2.79:58056       10.244.2.65:8080        ESTABLISHED off (0.00/0/0)
    tcp        0      0 10.244.2.79:38094       10.244.2.73:8080        ESTABLISHED off (0.00/0/0)
    tcp        0      0 10.244.2.79:38110       10.244.2.73:8080        ESTABLISHED off (0.00/0/0)
    tcp        0      0 10.244.2.79:58076       10.244.2.65:8080        ESTABLISHED off (0.00/0/0)
    

    来自特使群集的连接信息:

    [root@echoclient-84485fbc5c-zxlv8 /]# curl -s http://localhost:15000/clusters | grep echoserver
    outbound|8080||echoserver.default.svc.cluster.local::default_priority::max_connections::2
    outbound|8080||echoserver.default.svc.cluster.local::default_priority::max_pending_requests::1024
    outbound|8080||echoserver.default.svc.cluster.local::default_priority::max_requests::1024
    outbound|8080||echoserver.default.svc.cluster.local::default_priority::max_retries::3
    outbound|8080||echoserver.default.svc.cluster.local::high_priority::max_connections::1024
    outbound|8080||echoserver.default.svc.cluster.local::high_priority::max_pending_requests::1024
    outbound|8080||echoserver.default.svc.cluster.local::high_priority::max_requests::1024
    outbound|8080||echoserver.default.svc.cluster.local::high_priority::max_retries::3
    outbound|8080||echoserver.default.svc.cluster.local::added_via_api::true
    outbound|8080||echoserver.default.svc.cluster.local::10.244.2.65:8080::cx_active::4
    outbound|8080||echoserver.default.svc.cluster.local::10.244.2.65:8080::cx_connect_fail::0
    outbound|8080||echoserver.default.svc.cluster.local::10.244.2.65:8080::cx_total::4
    outbound|8080||echoserver.default.svc.cluster.local::10.244.2.65:8080::rq_active::0
    outbound|8080||echoserver.default.svc.cluster.local::10.244.2.65:8080::rq_error::0
    outbound|8080||echoserver.default.svc.cluster.local::10.244.2.65:8080::rq_success::200
    outbound|8080||echoserver.default.svc.cluster.local::10.244.2.65:8080::rq_timeout::0
    outbound|8080||echoserver.default.svc.cluster.local::10.244.2.65:8080::rq_total::200
    outbound|8080||echoserver.default.svc.cluster.local::10.244.2.65:8080::health_flags::healthy
    outbound|8080||echoserver.default.svc.cluster.local::10.244.2.65:8080::weight::1
    outbound|8080||echoserver.default.svc.cluster.local::10.244.2.65:8080::region::
    outbound|8080||echoserver.default.svc.cluster.local::10.244.2.65:8080::zone::
    outbound|8080||echoserver.default.svc.cluster.local::10.244.2.65:8080::sub_zone::
    outbound|8080||echoserver.default.svc.cluster.local::10.244.2.65:8080::canary::false
    outbound|8080||echoserver.default.svc.cluster.local::10.244.2.65:8080::success_rate::-1
    outbound|8080||echoserver.default.svc.cluster.local::10.244.2.73:8080::cx_active::4
    outbound|8080||echoserver.default.svc.cluster.local::10.244.2.73:8080::cx_connect_fail::0
    outbound|8080||echoserver.default.svc.cluster.local::10.244.2.73:8080::cx_total::4
    outbound|8080||echoserver.default.svc.cluster.local::10.244.2.73:8080::rq_active::0
    outbound|8080||echoserver.default.svc.cluster.local::10.244.2.73:8080::rq_error::0
    outbound|8080||echoserver.default.svc.cluster.local::10.244.2.73:8080::rq_success::200
    outbound|8080||echoserver.default.svc.cluster.local::10.244.2.73:8080::rq_timeout::0
    outbound|8080||echoserver.default.svc.cluster.local::10.244.2.73:8080::rq_total::200
    outbound|8080||echoserver.default.svc.cluster.local::10.244.2.73:8080::health_flags::healthy
    outbound|8080||echoserver.default.svc.cluster.local::10.244.2.73:8080::weight::1
    outbound|8080||echoserver.default.svc.cluster.local::10.244.2.73:8080::region::
    outbound|8080||echoserver.default.svc.cluster.local::10.244.2.73:8080::zone::
    outbound|8080||echoserver.default.svc.cluster.local::10.244.2.73:8080::sub_zone::
    outbound|8080||echoserver.default.svc.cluster.local::10.244.2.73:8080::canary::false
    outbound|8080||echoserver.default.svc.cluster.local::10.244.2.73:8080::success_rate::-1
    

    我们可以看到,从echoclient到echoserver有8个连接(10.244.2.65,10.244.2.73),但没有配置的maxConnections 2。

    为什么有8个连接而不是2个?关于特使的关系有什么误解吗?

  • 共有3个答案

    莫英卓
    2023-03-14

    SSH到客户端Pod的节点,并执行到istio代理容器

    docker exec——特权——用户根目录——it

    使用以下命令查找tcp连接,使上游

    ss-pe|grep 8080|grep特使

    卫嘉泽
    2023-03-14

    我认为,您使用1个线程(即1个HTTP连接)调用了客户机,但它以并行方式发送请求(默认情况下为10批)

    在特使中,max_连接适用于http1连接,在您的情况下,您只有一个http连接。

    试着看看max_request,它可能适用于与http2关系密切的线程

    希望这有帮助!!

    姬雪松
    2023-03-14

    正如加勒特在评论中提到的:

    max_connectionsmax_requests指的是php池的每个子节点在重新生成之前可以使用的连接数,通常可以在/etc/etc/php/{version}/fpm/pool. d/www.conf中找到max_children是基于机器的内存,一些对我有帮助的示例教程是最大请求/儿童

     类似资料:
    • 问题内容: 我对Java非常陌生,只想确认是什么?它类似于Float还是Int?任何帮助,将不胜感激。我有时还会看到大写字母,有时看到的是小写字母。如果有人可以弄清楚这意味着什么,那就太好了! 问题答案: Double是包装器类, Double类将原始类型double的值包装在对象中。类型为Double的对象包含单个类型为double的字段。 此外,此类提供了几种将double转换为String和

    • 问题内容: 我有以下示例: 在这段代码中,我可以理解Enum创建了一个Enum类型的Sizes。 我的问题是:EnumSet类型的对象吗?到底是什么意思 我真的很想更好地理解它。 问题答案: 对于任何变量,可以在其声明中找到其类型: 是的,(应该命名,因为它是一个集合)是type 。它也应该被泛化,因此被声明为 它的意思是那是type 。一个是一个包含一个特定的枚举类型的枚举例如,在比其他更有效的

    • 问题内容: 这是代码: 但是当我将“ #round”更改为“ this”时。它不会工作。为什么?(实际上是可行的,但是当我将它们放入setInterval()时,它将无法工作) 更改为“ this”,将无法使用。 问题答案: 是对调用当前函数的成员的引用… 那么您可以将其包装在jquery函数中以选择它,就像选择其他选择器一样。 因此调用匿名函数,这样它就不会被可引用成员调用,因此它默认为该对象。

    • 不知道这是什么意思,但我在kotlin html代码库中遇到了这种语法。SCRIPT.()是什么意思? https://github.com/Kotlin/kotlinx.html/blob/master/shared/src/main/kotlin/generated/gen-tag-unions.kt#L143 剧本是一种https://github.com/Kotlin/kotlinx.ht

    • 问题内容: 我想使用作为我的单元测试的基本目录(创建很多文件)。此属性指向当前工作目录是否正确(例如,由“ cd”命令设置)? 问题答案: 这java是运行JVM的目录。不必位于用户的主目录中。它可以在用户有权运行Java的任何地方。 因此,如果你cd进入,然后运行你的程序,将是。 另一个属性指向用户目录。如或或。

    • 问题内容: 我一直以为括号中的数字代表字段长度?但是,我了解并非总是如此。也许这是一个MySQL问题?有人告诉我,如果我将一个字段设置为9个字符长,我可以添加一个超过9个字符的值,但只会保存前9个字符。 例子… 如果是这样,我是否不应该选择TINYINT之类的东西代替INT? 问题答案: 将生成一个最小显示宽度为2的INT : MySQL支持扩展,可以选择在整数类型的基本关键字之后的括号中指定整数