Troubleshooting
This guide will grow over time. For urgent issues, contact support or join our community Slack (opens in a new tab).
Common Issues
Node CPU usage is pinned at 100%
Symptom. A node shows 100% CPU usage in the console even though kubectl top node reports a normal figure.
Cause. Wave used to derive node CPU usage from the agent's own measurement of total CPU time. On nodes tuned with nohz_full or isolcpus, /proc/stat reports no idle time for the isolated cores, so that total collapses to busy time and the ratio saturates at 100%.
Resolution. Upgrade to Wave 3.4.5 or later. Node CPU usage is now divided by the Kubernetes API's declared allocatable CPU (falling back to capacity), which is what kubectl top uses, so the two agree.
Core or Intelligence pods crash-loop right after install on OpenShift
Symptom. Immediately after installing on OpenShift, the Core or Intelligence pod restarts in a loop. The logs show a missing DuckDB ICU extension or a cache directory that cannot be created, rather than a permissions error.
Cause. OpenShift's restricted-v2 SCC runs containers under a random per-namespace UID that has no /etc/passwd entry, so HOME resolves to /, and the process cannot write where it expects to.
Resolution. Upgrade to Wave 3.4.4 or later, which sets HOME explicitly and makes the home, cache, and data directories group-0 writable. See arbitrary UID support. Do not relax the SCC as a workaround.
Autopilot /predict calls time out
Symptom. Autopilot falls back to threshold-based scaling and the logs show prediction timeouts against the intelligence service.
Cause. Before 3.4.5, the cluster-status cron called the forecast API on every 5-minute tick, which could saturate the intelligence service and starve Autopilot's prediction requests.
Resolution. Upgrade to Wave 3.4.5 or later, where forecast calls are gated to WA_CLUSTER_STATUS_FORECAST_INTERVAL_HOURS (default 24 h). If you have lowered that variable or WA_PV_CAPACITY_FORECAST_TASK_INTERVAL_MINUTES from its default, raise it back. See Forecast Intervals.
An idle node keeps appearing and disappearing
Symptom. The same node is repeatedly flagged idle and then cleared.
Cause. A metrics or agent collection gap emptied Wave's pod cache for that node, and a zero-pod reading was interpreted as a genuinely unused node.
Resolution. Upgrade to Wave 3.4.5 or later, which treats a zero-pod reading as indeterminate and skips it for both raising and resolving a finding. See Idle Node Detection.
A container shows "recommendation withheld" on the Smart Sizing tab
This is expected, not a fault. The recommendation would have been clamped up to the CPU or memory floor, which would raise the container's request rather than lower it, so Wave withholds it instead of reporting a false saving. It is common on OpenShift, where default requests can be a few millicores. See guardrails that always apply.
A feature's page shows a "turned off" panel
The feature's environment-variable toggle is set to false, or its group gate is. The panel names the variable to set. See Feature Toggles — note that Diagnosis sub-tasks also require WA_DIAGNOSIS_ENABLED=true, and GPU sub-tasks require WA_GPU_ENABLED=true.
Getting Help
- Contact support
- GitHub Issues: STCLab-Inc/wave-autoscale (opens in a new tab)
- Community Slack