What this article covers
The Web Application Daemon (WAD) handles proxy inspection, explicit web proxy, authentication, and external threat feed pattern evaluation. Under heavy SSL inspection or when ingesting large threat feeds, WAD worker processes can experience exponential memory growth. This runbook details surgical worker isolation, non-disruptive recycling, and worker capping per VDOM.
Before using the CLI
type=algo(3) memory exhaustion.
Troubleshooting workflow
Audit top WAD worker memory consumption & core affinity
Query top memory consumers, examine memory allocated per WAD worker PID, and use diagnose sys top with Shift+M (sort RAM) to inspect CPU core affinity pinning.
diagnose sys top-mem 20
diagnose sys top 2 50
diagnose test application wad 1000
Distinguish proxy workers from threat feed algo workers
Check if memory is consumed by standard traffic workers or type=algo(3) pattern evaluation engines handling external blocklists.
diagnose test application wad 2500
diagnose test application wad 1000 | grep -E "type=|mem="
Inspect IPS engine worker memory & crash counters
Verify whether the IPS monitor or individual IPS engines are suffering from signature compilation leaks or engine crashes.
diagnose test application ipsmonitor 1
diagnose test application ipsmonitor 99
diagnose debug crashlog read | grep ips
Perform surgical worker recycling via graceful SIGTERM (Signal 15)
Do NOT issue brute force killall (SIGKILL 9), which abruptly severs sockets and risks shared memory corruption. Target the leaking worker PID with graceful SIGTERM: diagnose sys kill 15 <pid>. This allows the worker to flush log queues, release IPC shared memory locks, and close TLS sessions cleanly before supervisor respawn.
# Identify runaway worker PID, then gracefully recycle:
diagnose sys kill 15 <pid>
# Fallback zero-downtime respawn only if process is frozen in D-state:
fnsysctl killall wad
Cap WAD worker count per core & VDOM
On appliances with limited RAM, restrict maximum concurrent WAD workers to prevent memory overshoot during peak traffic spikes.
config system global
set wad-worker-count 2
end
Optimize external threat feed pattern compression
Convert granular /32 IP entries in threat feeds to CIDR aggregates or wildcards to drastically compress the WAD algo worker pattern tree.
config system external-resource
edit "Malicious_IP_Feed"
set refresh-rate 1440
next
end
Operational caution
fnsysctl killall wad terminates active proxy-inspected TCP handshakes (forcing clients to re-negotiate HTTP/S sessions), but does not interrupt hardware-forwarded or flow-based firewall traffic. Perform during a scheduled maintenance window if handling mission-critical explicit proxy traffic.