The error "cannot write to IPC socket: Broken pipe" in Zabbix typically indicates that a Zabbix process (like the server or proxy) tried to communicate with a child service (like the preprocessing service) but found that the receiving end of the socket was already closed. Primary Cause: Too Many Open Files
The most common reason for this error is that the Zabbix process has reached its limit for open file descriptors (ulimit), causing services to crash or fail to open new connections.
Diagnosis: Check your zabbix_server.log for accompanying errors like failed to open log file: [24] Too many open files.
Solution: Increase the LimitNOFILE setting for the Zabbix service.
Edit the systemd service file: systemctl edit zabbix-server (or zabbix-proxy). Add the following lines: [Service] LimitNOFILE=65535 Use code with caution. Copied to clipboard Reload and restart: systemctl daemon-reload systemctl restart zabbix-server Use code with caution. Copied to clipboard
Verify the limit has changed for the running process: cat /proc/$(pidof zabbix_server)/limits | grep open. Other Potential Issues
Preprocessing Service Crash: If the preprocessing service itself crashes (due to high load or memory issues), the main process will report a broken pipe when trying to send data to it. Review logs for "preprocessing" crashes.
IPC Shared Memory Limits: Ensure your system's IPC limits (like shmmax and shmall) are sufficient for Zabbix's configured StartPreprocessors and StartPollers.
Permission Issues: In some older versions, the Zabbix user may lack permissions to write to its own PID or log file, leading to pipe errors. Ensure /var/run/zabbix/ and /var/log/zabbix/ are owned by the zabbix user.
Resource Exhaustion: A sudden burst in processes (e.g., during housekeeping) can temporarily overwhelm available resources, leading to unstable socket connections.
Zabbix Server Unstable After Platform Migration/Upgrade to 6.0 zabbix cannot write to ipc socket broken pipe upd
"cannot write to IPC socket: Broken pipe" typically indicates that a Zabbix process (like a poller or trapper) tried to communicate with an internal service—often the preprocessing service availability manager —that has already closed its end of the connection Primary Causes and Solutions Exhausted File Descriptors ("Too many open files"):
This is the most common reason the internal socket "breaks." When Zabbix hits its operating system limit for open files, it can no longer maintain IPC (Inter-Process Communication) channels. Increase the for the Zabbix user. Check current limits with cat /proc/
crashes or is killed due to high load, any other process trying to send data to it will receive a "Broken pipe" error. zabbix_server.log
for earlier "One child process died" messages to identify which service failed first. Configuration Overload: Setting parameters like StartPollers
too high without corresponding OS-level resource increases can trigger this error immediately upon server start. Permission Issues:
In rare cases, if the Zabbix user cannot write to its own PID or log directory, communication across certain pipes may fail during startup. Troubleshooting Steps Check Logs for Preceding Errors:
Look for "Connection refused" or "[24] Too many open files" immediately before the "Broken pipe" entry. Verify Service Status: Ensure all Zabbix child processes are running using systemctl status zabbix-server Monitor Resource Limits:
Check if you are hitting the system's global file limit with sysctl fs.file-nr How to Fix 'Broken Pipe' Errors in Linux - OneUptime
Zabbix Cannot Write to IPC Socket: Broken Pipe UDP
Zabbix is a popular monitoring tool used to track the performance and health of various systems, networks, and applications. However, sometimes Zabbix may encounter issues that prevent it from functioning properly. One such issue is the "cannot write to IPC socket: broken pipe" error, which can occur when Zabbix tries to send data over a UDP connection. In this blog post, we'll explore the causes of this error, its symptoms, and most importantly, provide a step-by-step guide on how to troubleshoot and resolve it. The error "cannot write to IPC socket: Broken
What is IPC Socket?
Before diving into the issue, let's briefly discuss what an IPC (Inter-Process Communication) socket is. In computing, IPC sockets are a type of communication mechanism that allows different processes to exchange data with each other. In the context of Zabbix, IPC sockets are used for communication between the Zabbix agent and the Zabbix server.
Symptoms of the Issue
When Zabbix encounters the "cannot write to IPC socket: broken pipe" error, you may notice the following symptoms:
Causes of the Issue
The "cannot write to IPC socket: broken pipe" error can be caused by several factors, including:
Troubleshooting Steps
To resolve the "cannot write to IPC socket: broken pipe" error, follow these step-by-step troubleshooting guides:
If using TCP sockets (e.g., ListenIP=0.0.0.0 and Server=IP):
# zabbix_server.conf
StartAgents=0
ListenPort=10051
But for IPC socket (local Unix socket), this is irrelevant – ensure agent and server run on same machine if using /var/run/zabbix/zabbix_agentd.sock. Zabbix agent is unable to send data to
Zabbix Error: “Cannot write to IPC socket: Broken pipe” – UDP item issues
Do not change configuration blindly. Follow this diagnostic workflow:
grep -i "broken pipe" /var/log/zabbix/zabbix_agentd.log
The surrounding lines will tell you if it’s:
Enable debug mode on the agent:
sudo systemctl stop zabbix-agent
sudo zabbix_agentd -f -c /etc/zabbix/zabbix_agentd.conf -l /tmp/zabbix_debug.log
Then trigger the failing item via zabbix_get.
Check agent log for context around the broken pipe:
grep "broken pipe" /var/log/zabbix/zabbix_agentd.log -A 2 -B 2
Isolate the UserParameter – temporarily comment out others, test one by one.
If the error persists and you are certain configs are correct, manually clear stale IPC resources.
WARNING: Stop Zabbix server first.
systemctl stop zabbix-server
# Find all IPC objects owned by zabbix user
ipcs -m | grep zabbix | awk 'print $2' | xargs -n1 ipcrm -m
ipcs -s | grep zabbix | awk 'print $2' | xargs -n1 ipcrm -s
ipcs -q | grep zabbix | awk 'print $2' | xargs -n1 ipcrm -q
# Restart
systemctl start zabbix-server
This forces Zabbix to recreate all shared memory segments and message queues from scratch.