AutoSys Architecture — Full /var Crashes Agents Silently
A full /var disk crashed the Remote Agent silently, leaving 500 jobs in PEND_MACH.
20+ years shipping production infrastructure and CI/CD at scale. Drawn from code that ran under real load.
- ✓Basic programming fundamentals
- ✓A computer with internet access
- ✓Willingness to follow along with examples
- AutoSys components: Event Server (database of all jobs/events), Event Processor (scheduler daemon), Remote Agent (job executor), client tools (jil, autorep, sendevent)
- Event Server stores all job definitions, event history, machine definitions; source of truth for entire AutoSys environment
- Event Processor runs continuously, evaluates conditions, triggers jobs on Remote Agents — only ONE per AutoSys instance
- Performance: Event Processor polls Event Server (~30s interval) — buffer for real-time alerts
- Production trap: Remote Agent machine runs out of disk space — agent crashes, all jobs on that machine go PEND_MACH (stuck), no auto-recovery
- Biggest mistake: Running multiple Event Processors — corrupts job state, leads to duplicate job execution
Think of AutoSys like a restaurant. The Event Server is the order book — it stores every job definition and event. The Event Processor is the head chef — it reads the orders and decides what to cook next. The Remote Agents are the kitchen staff on different floors — they actually execute the work. The GUI is the front-of-house — you see what's happening and can make changes.
| Chrome | Firefox | Safari | Edge |
|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ |
Before you write a single line of JIL or schedule your first job, it helps to understand how AutoSys actually works under the hood. The architecture is straightforward but knowing what each component does — and why — will save you a lot of head-scratching when things go wrong in production.
AutoSys has four major components that work together: the Event Server, the Event Processor, Remote Agents, and client tools. Each has a clear job, and understanding the flow between them makes debugging much easier.
By the end you'll know exactly how job definitions flow from JIL to Event Server to Event Processor to Remote Agent and back. You'll understand what PEND_MACH means and why it's the most common production issue. And you'll know the component that, when it fails, stops all job scheduling.
Why AutoSys Agents Fail Silently on Full /var
AutoSys architecture is a distributed job scheduling system where a central Event Processor (the 'scheduler') communicates with Remote Agents running on target machines. The core mechanic: agents poll the Event Processor for work, execute commands, and report status via log files written to /var/log/autosys. When /var fills up, agents cannot write logs or status updates. They do not crash with an error — they simply stop reporting, appearing as 'OFFLINE' or 'UNREACHABLE' in the GUI, while the scheduler assumes they are still alive and continues dispatching jobs. This silent failure is the most common cause of 'lost' jobs in production. In practice, agents use a heartbeat mechanism (default 60-second interval) to signal liveness. A full /var prevents heartbeat log writes, so the Event Processor marks the agent as down after missing 3 consecutive heartbeats. However, the agent process itself remains running — it just cannot communicate. This creates a zombie state: the agent appears active on the host (ps shows it), but the scheduler sees it as dead. Monitoring /var usage is not optional; a threshold of 85% should trigger alerts. Use this architecture when you need centralized control over thousands of jobs across heterogeneous servers. The silent failure mode matters because it breaks the fundamental contract of distributed scheduling: reliable status reporting. Without disk space monitoring, teams waste hours debugging phantom network issues.
The Event Server — the source of truth
The Event Server is a relational database (typically Sybase or Oracle) that stores everything AutoSys needs to operate. This includes all job definitions (what to run, when, where, under which conditions), all events that have occurred (job started, job succeeded, job failed), global variable values, machine definitions, calendar definitions, and monitor and report definitions.
When a job finishes and reports its status, that status goes into the Event Server. When the Event Processor needs to know whether a dependent job's condition is met, it queries the Event Server. It's the single source of truth for the entire AutoSys environment.
db_purge_events) to keep query performance acceptable.The Event Processor — the brain
The Event Processor (also called the scheduler or the event daemon) is the most important component. It runs continuously, polling the Event Server for events. When it detects that a job's starting conditions are met — the right time has arrived, dependent jobs have succeeded, the machine is available — it triggers the job to run on the appropriate agent.
The Event Processor also handles time-based scheduling, evaluates job condition logic, and manages the overall state machine for each job. On Unix/Linux it's started with the eventor command. There is only ever one Event Processor running per AutoSys instance.
if [ $(ps -ef | grep eventor | wc -l) -ne 1 ]; then alert; fi.