CPU requests and limits on Magnolia PaaS
Your Kubernetes clusters on Magnolia PaaS have resource types that are allocated among all the pods and containers running on the clusters, including your Magnolia instances and your frontend instances if you have a headless project. In this case, resource allocation affects how well your site runs.
There are many different resource types, but the most important are
CPU: represents how much compute processing is dedicated to a pod.
Memory: in simple terms, this is how much memory a pod can use.
You can specify the memory allocated to your Magnolia instances and your frontend instances when they are started - the memory request for the pod - and you can specify the maximum amount of memory the instances are allowed, the memory limit.
Your Kubernetes clusters on Magnolia PaaS are composed of nodes, each having a finite amount of
CPU and memory resources. Magnolia PaaS clusters will usually be composed of 3 or more nodes, each node having 32 GB of memory and 4 CPUs. The cluster will have 96 GB total memory and 12 CPUs total for all pods and containers running on the cluster.
CPU request for a pod affects where Kubernetes will run the pod: Kubernetes picks a node that has enough memory and
CPU to satisfy the memory and
CPU requested for the pod. If Kubernetes cannot find a node that has the requested
CPU and memory, the pod will not start, so it is important to keep in mind the total memory and
CPU resources in your cluster and the total memory and
CPU available on the individual nodes in your cluster.
CPU requests, and limits that can be met by both constraints.
Don’t set CPU requests or limits for Magnolia front end pods running on your clusters.
- Why shouldn’t you set CPU requests for your Magnolia front end instances?
It is tempting to set CPU requests for your pods to ensure that the pods have sufficient processing power to handle your expected traffic, but you have to take into account all the pods and containers running on your cluster, including essential Kubernetes and Rancher services.
You cannot set CPU requests and limits for your Magnolia instances: the Magnolia Helm chart does not allow the setting of CPU requests and limits for Magnolia instances and their associated databases.
You could modify the deployments for the Magnolia author, publics and their databases and add CPU requests and limits, but we do not recommend doing this either: your changes would be overwritten when you redeploy Magnolia and also could affect the stability of your Magnolia PaaS cluster.
Setting CPU requests and limits for front end pods can affect the stability of your Magnolia instances and your Magnolia PaaS cluster, causing:
overcommitment of CPU resources in your cluster
missing metrics and logs in your Magnolia PaaS cockpit
slow responses from Magnolia
random restarts of Magnolia because Magnolia cannot respond to liveness and readiness checks by Kubernetes
random restarts of cluster nodes that affect critical Kubernetes services, including access to your Magnolia and front end instances because these services cannot respond to liveness and readiness checks
|These consequences can be difficult to distinguish from high load on your production web site and make the appropriate sizing of your cluster difficult to determine.