Comments (6)
Hi @odidev,
Thanks for reporting this issue β your description is very clear and thorough. :)
- 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 ofgrpc-health-probe
. - How many instances/replicas of each Pod are you running?
- 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
orkubectl logs --selector app=cartservice
? - 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.
- 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.
- 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
- 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
orkubectl 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.
@NimJay Could you please share your feedback regarding the above issue.
from microservices-demo.
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:
- What are the specs on the machine running minikube?
- How much CPU/memory/etc. have been allocated to the minukube cluster?
- 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.
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.
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)
- grpc probes component missing HOT 2
- adservice, cartservice and loadgenerator restarting on arm cluster in the loop HOT 7
- Replace Locust load generator's httpUser with fastHttpUser HOT 5
- project
- project
- DeployStack URL returns a 404 HOT 2
- nodejs based services OTEL instrumentation is ignoring OTEL_SERVICE_NAME HOT 2
- Add OTEL instrumentation to cart service HOT 1
- EKS: rpc error: code = Unavailable desc = connection error: desc = transport: Error while dialing: dial tcp: lookup currencyservice HOT 14
- helm chart frontend-external support config service type nodeport HOT 1
- Add GitHub bot to check Apache license headers, on pull-requests
- Set deletion_protection to false during terraform destroy
- Enabling Tracing in Local Kubernetes Cluster HOT 1
- Setup is not working on local environment - Shipping service image build issue HOT 1
- Feature Request - Addition of Authentication Module HOT 1
- skaffold run gives error while checking cache for one service on Linux Droplet. HOT 2
- Enable correct display of the service name in Cloud Trace HOT 1
- Generate application metrics as a part of Google Cloud Operations suite configuration
- One artifact seems to be missing (recommendationservice 0.3.6) in gcr.io HOT 4
- Running GKE in Cloud Shell Fails HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
π Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google β€οΈ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from microservices-demo.