Sometimes stale IPC sockets remain after a crash.
: This is the most common cause. When Zabbix reaches the ulimit for open files, it cannot maintain internal sockets. System-wide : Edit /etc/security/limits.conf and add: zabbix soft nofile 10000 zabbix hard nofile 10000 Use code with caution. Copied to clipboard
The StartPreprocessors parameter controls how many concurrent preprocessing worker processes Zabbix runs. When set too high, these workers can overwhelm the internal queue buffers and cause IPC pipes to break. As a documented workaround, setting StartPreprocessors=1 can temporarily stabilize the system until the root cause is addressed.
Example (on Ubuntu-based systems):
Elevated logging can provide crucial clues about which component is crashing or disconnecting first.
In one documented case, a Zabbix Server experienced continuous restart loops, with logs showing cannot accept incoming IPC connection: [24] Too many open files immediately preceding the cannot write to IPC socket: Broken pipe error. Similarly, a Zabbix Proxy was observed restarting every 30 minutes due to the same "Too many open files" condition.
While Zabbix uses TCP for agent-to-server communication, it often utilizes Unix Domain Sockets (UDS) or UDP sockets for internal IPC. This is designed for speed; internal processes running on the same machine do not require the overhead of TCP handshakes. The "pipe" in this context is a data channel connecting a sender process (producing data) and a receiver process (consuming data). The "broken pipe" error is the computing equivalent of a phone line going dead while one person is still speaking. It indicates that the sending process attempted to write data to a socket, but the receiving end had already closed the connection or was unable to accept the data. zabbix cannot write to ipc socket broken pipe upd
To understand why a pipe breaks, we first need to look at how Zabbix handles data under the hood. Zabbix uses multiple specialized background processes to function. These include:
If the above configuration adjustments do not solve the problem, you may need to dig into the Linux IPC limits.
In modern Zabbix versions (Zabbix 4.0 through 7.0+), heavy data transformations (JavaScript, Regular Expressions, JSONPath) are handed off to Preprocessing Workers. If an item returns an unexpectedly massive payload, the preprocessing worker can run out of memory (OOM) and crash mid-transit, breaking the IPC pipe. 2. Extreme System Resource Exhaustion Sometimes stale IPC sockets remain after a crash
: The error often appears alongside "cannot send data to preprocessing service," indicating that the Preprocessing Manager process has crashed or stopped responding.
Add LimitNOFILE=4096 (or higher) to your Zabbix Server systemd unit file to ensure the service respects the new limit.
StartPollers=20 StartDiscoverers=5 StartHTTPPollers=5 StartPingers=5 Use code with caution. System-wide : Edit /etc/security/limits