title: Kubernetes - Too many open files
body: <p>I'm trying to evaluate the performance of one of my go server running inside the pod. However, receiving an error saying too many open files.  Is there any way to set the ulimit in kubernetes?</p>
  <pre><code>ubuntu@ip-10-0-1-217:~/ppu$ kubectl exec -it go-ppu-7b4b679bf5-44rf7 -- /bin/sh -c 'ulimit -a'
  core file size (blocks)         (-c) unlimited
  data seg size (kb)              (-d) unlimited
  scheduling priority             (-e) 0
  file size (blocks)              (-f) unlimited
  pending signals                 (-i) 15473
  max locked memory (kb)          (-l) 64
  max memory size (kb)            (-m) unlimited
  open files                      (-n) 1048576
  POSIX message queues (bytes)    (-q) 819200
  real-time priority              (-r) 0
  stack size (kb)                 (-s) 8192
  cpu time (seconds)              (-t) unlimited
  max user processes              (-u) unlimited
  virtual memory (kb)             (-v) unlimited
  file locks                      (-x) unlimited
  </code></pre>
  <p>Deployment file.</p>
  <pre><code>---
  apiVersion: apps/v1
  kind: Deployment                 # Type of Kubernetes resource
  metadata:
    name: go-ppu           # Name of the Kubernetes resource
  spec:
    replicas: 1                    # Number of pods to run at any given time  
    selector:
      matchLabels:
        app: go-ppu         # This deployment applies to any Pods matching the specified label
    template:                      # This deployment will create a set of pods using the configurations in this template
      metadata:
        labels:                    # The labels that will be applied to all of the pods in this deployment
          app: go-ppu  
      spec:                        # Spec for the container which will run in the Pod
        containers:
        - name: go-ppu 
          image: ppu_test:latest
          imagePullPolicy: Never
          ports:
            - containerPort: 8081  # Should match the port number that the Go application listens on
          livenessProbe:           # To check t$(minikube docker-env)he health of the Pod
            httpGet:
              path: /health
              port: 8081
              scheme: HTTP
            initialDelaySeconds: 35
            periodSeconds: 30
            timeoutSeconds: 20
          readinessProbe:          # To check if the Pod is ready to serve traffic or not
            httpGet:
              path: /readiness
              port: 8081
              scheme: HTTP
            initialDelaySeconds: 35
            timeoutSeconds: 20    
  </code></pre>
  <p>Pods info:</p>
  <pre><code>ubuntu@ip-10-0-1-217:~/ppu$ kubectl get pods
  NAME                           READY   STATUS    RESTARTS   AGE
  go-ppu-7b4b679bf5-44rf7        1/1     Running   0          18h
  
  ubuntu@ip-10-0-1-217:~/ppu$ kubectl get services
  NAME          TYPE           CLUSTER-IP      EXTERNAL-IP                                                               PORT(S)          AGE
  kubernetes    ClusterIP      100.64.0.1      &lt;none&gt;                                                                    443/TCP          19h
  ppu-service   LoadBalancer   100.64.171.12   74d35bb2a5f30ca13877-1351038893.us-east-1.elb.amazonaws.com   8081:32623/TCP   18h
  </code></pre>
  <p>When I used locust to test the performance of the server receiving the following error.</p>
  <pre><code># fails Method  Name    Type
  3472    POST    /supplyInkHistory   ConnectionError(MaxRetryError(&quot;HTTPConnectionPool(host='74d35bb2a5f30ca13877-1351038893.us-east-1.elb.amazonaws.com', port=8081): Max retries exceeded with url: /supplyInkHistory (Caused by NewConnectionError('&lt;urllib3.connection.HTTPConnection object at 0x....&gt;: Failed to establish a new connection: [Errno 24] Too many open files',))&quot;,),)
  </code></pre>