GithubHelp home page GithubHelp logo

Comments (6)

NimJay avatar NimJay commented on June 23, 2024

Hi @odidev,
Thanks for reporting this issue β€” your description is very clear and thorough. :)

  1. Are you suggesting that the removal of grpc-health-probe is impacting scalability of Online Boutique? I doubt that the root cause is the removal of grpc-health-probe.
  2. How many instances/replicas of each Pod are you running?
  3. What error message are you seeing in the logs of the various microservices? Are you, for instance, able to run kubectl logs --selector app=frontend or kubectl logs --selector app=cartservice?
  4. This demo app (Online Boutique) doesn't make any promises about how many users it supports, so I will lower the priority on this. Hope that's okay.

from microservices-demo.

odidev avatar odidev commented on June 23, 2024
  1. Are you suggesting that the removal of grpc-health-probe is impacting scalability of Online Boutique? I doubt that the root cause is the removal of grpc-health-probe.

In my observation, there is no major change apart from removal of grpc-health-probe which might impact scalability of Online Boutique for Arm64 load testing.

  1. How many instances/replicas of each Pod are you running?

I haven’t made any changes in the kubernetes-manifests.yaml file except docker images. So, using Replica 1 of each Pod.

ubuntu@ip-172-31-34-130:~/microservices-demo$ kubectl get deployment 

NAME                    READY   UP-TO-DATE   AVAILABLE   AGE 

adservice               1/1     1            1           19m 

cartservice             1/1     1            1           19m 

checkoutservice         1/1     1            1           19m 

currencyservice         1/1     1            1           19m 

emailservice            1/1     1            1           19m 

frontend                1/1     1            1           19m 

loadgenerator           1/1     1            1           19m 

paymentservice          1/1     1            1           19m 

productcatalogservice   1/1     1            1           19m 

recommendationservice   1/1     1            1           19m 

redis-cart              1/1     1            1           19m 

shippingservice         1/1     1            1           19m 

  1. What error message are you seeing in the logs of the various microservices? Are you, for instance, able to run kubectl logs --selector app=frontend or kubectl logs --selector app=cartservice?

Ran the command as you suggested with and without locust load, please check the logs below:

Frontend_logs:
frontend logs with locust.txt
frontend logs without locust.txt

Cartservice_logs:
cartservice logs with locust.txt
cartservice logs without locust.txt

Please let me know if you need more details for the same.

from microservices-demo.

odidev avatar odidev commented on June 23, 2024

@NimJay Could you please share your feedback regarding the above issue.

from microservices-demo.

NimJay avatar NimJay commented on June 23, 2024

Hi @odidev,
Thank you for providing additional logs.

The error messages from your initial issue description sounds like the bottleneck might be the network (e.g., number of connections concurrently).
Example error message:
GET /cart ConnectionRefusedError(111, 'Connection refused') 9024

You mentioned you're deploying Online Boutique in minikube.
Question:

  1. What are the specs on the machine running minikube?
  2. How much CPU/memory/etc. have been allocated to the minukube cluster?
  3. You mentioned that you're using 12 Nodes. Are those 12 Nodes just used for the loadgenerator?

Another thought I have:
I don't know exactly many requests-per-second each microservice is able to handle.
But I find it hard to imagine that running 1 replica of each microservice will allow 2000 users β€” regardless of cluster size.

from microservices-demo.

NimJay avatar NimJay commented on June 23, 2024

According to this article:

A Single CPU core will commonly handle an average of 220 to 250 concurrent connections simultaneously. If for instance, a website runs on a server that has a single CPU with 2 CPU cores, approximately 500 visitors may access and search the website at the same time.

Also, each Online Boutique microservice has some K8s fields similar to (see related code):

        resources:
          requests:
            cpu: 100m
            memory: 220Mi
          limits:
            cpu: 200m
            memory: 450Mi

You'll need to modify these values to support more users. Or you'll need to increase the # of replicas (per Deployment). Or set up K8s autoscaling.

from microservices-demo.

odidev avatar odidev commented on June 23, 2024

What are the specs on the machine running minikube?

AWS instance: m7g.2xlarge has 8 vCPUs, 32 GiB of memory.

How much CPU/memory/etc. have been allocated to the minukube cluster?

CPUs=4, Memory=7800MB

You mentioned that you're using 12 Nodes. Are those 12 Nodes just used for the loadgenerator?

Yes, c7g.16xlarge for load testing using Locust with 1 master node and 11 workers nodes.

As suggested, modifying the values of requests and limits resources from kubernetes-manifests.yaml file supports more users but the limit and request modification of each microservice is different. So, I have removed the requests and limits resources parametres from kubernetes-manifests.yaml and tested the load using locust on c7g.16xlarge on single node deployment using minikube cluster. Now, I can test the load for Arm64 on m7g.2xlarge and x86_64 on m6i.2xlarge upto 6500 users without any failures.

from microservices-demo.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.