【问题标题】:Configure net.core.somaxconn for Nodes on GKE为 GKE 上的节点配置 net.core.somaxconn
【发布时间】:2017-10-11 20:16:01
【问题描述】:

我们有一个处理大量调用的 Python uWSGI REST API 服务器。当api通过外部资源调用peak时,队列立即被填满,因为uWSGI队列大小默认设置为100。经过一番挖掘,我们发现这是根据服务器的 net.core.somaxconn 设置。而在 Kubernetes 的情况下,由于节点的设置。

我们发现此文档使用 sysctl 来更改 net.core.somaxconn。 https://kubernetes.io/docs/concepts/cluster-administration/sysctl-cluster/ 但这不适用于 GKE,因为它需要 docker 1.12 或更高版本。

我们也发现了这个 sn-p,但这看起来很老套。 https://github.com/kubernetes/contrib/blob/master/ingress/controllers/nginx/examples/sysctl/change-proc-values-rc.yaml DaemonSet 会比配套容器更好吗?

在节点池的所有节点上将 net.core.somaxconn 设置为高于默认值的最佳做法是什么?

【问题讨论】:

    标签: python kubernetes uwsgi google-kubernetes-engine


    【解决方案1】:

    一个好的方法是使用具有特权的守护程序集,因为它可以在所有现有和新节点上运行。 只需使用提供的启动容器,例如:

    https://github.com/kubernetes/contrib/blob/master/startup-script/startup-script.yml

    对于您的情况:

    apiVersion: extensions/v1beta1
    kind: DaemonSet
    metadata:
      name: startup
    spec:
      updateStrategy:
        type: RollingUpdate
      template:
        spec:
          hostPID: true
          containers:
            - name: system-tweak
              image: gcr.io/google-containers/startup-script:v1
              imagePullPolicy: Always
              securityContext:
                privileged: true
              env:
              - name: STARTUP_SCRIPT
                value: |
                  #! /bin/bash
                  echo 32768 > /proc/sys/net/core/somaxconn
    

    【讨论】:

      猜你喜欢
      • 2020-01-31
      • 2022-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-20
      • 1970-01-01
      • 2018-06-19
      相关资源
      最近更新 更多