MySQL fails to register a timer event and shuts down its timer notifier thread, logging error 41 EE_EXITING_TIMER_NOTIFY_THREAD.
MySQL Error 41 EE_EXITING_TIMER_NOTIFY_THREAD signals that the server could not register a timer event and had to exit its internal timer thread. Check OS file-descriptor limits, memory pressure, and upgrade to the latest 8.0 patch to resolve the issue.
Failed to register timer event with queue (OS errno %d), exiting timer notifier thread. EE_EXITING_TIMER_NOTIFY_THREAD was added in 8.0.13.
Error 41 appears in the MySQL error log with the message “Failed to register timer event with queue (OS errno %d), exiting timer notifier thread.” The server aborts the background timer thread that drives scheduled maintenance tasks.
The condition constant EE_EXITING_TIMER_NOTIFY_THREAD was introduced in MySQL 8.0.13.
It is classified as a global runtime error, meaning it originates inside the server rather than from client SQL.
The timer thread registers periodic events with an internal POSIX queue. When the call fails, MySQL logs error 41.
The failure almost always traces back to OS resource exhaustion or kernel-level limits.
Because the timer thread supports events and InnoDB background tasks, losing it can degrade performance, replication heartbeats, and scheduled events.
First review mysqld.err
. Confirm the error coincides with high CPU, memory, or file-descriptor usage. Capture ulimit -a
output and check kernel message logs for queue errors.
Raise open-file limits and message queue sizes, then restart MySQL.
If you run 8.0.13-8.0.19, upgrade because Oracle fixed multiple timer-queue bugs in later patches.
On busy Linux hosts, descriptor exhaustion (EMFILE
) prevents the timer from registering. Increasing LimitNOFILE
in systemd or editing /etc/security/limits.conf
eliminates the error.
In containerized deployments, restrictive cgroup memory or PID limits can starve the thread. Expanding container resources or moving MySQL to a dedicated pod restores stability.
Monitor file descriptors with performance_schema.file_summary_by_event_name
.
Set alerts when usage exceeds 80 percent of the hard limit.
Keep MySQL patched. Versions 8.0.24 and later include robust error handling for timer queues, reducing the risk of error 41.
Internal timer failures may also surface as ER_EVENT_SCHEDULER_KILLED or ER_CLOCK_SKEW_DETECTED.
These share root causes like resource limits and benefit from the same fixes.
Another sibling is Error 157 – “Cannot proceed because system timer is unavailable.” Verifying kernel timer drivers and upgrading MySQL usually resolve it.
.
When mysqld reaches the process open-file limit, calls to register timer events return EMFILE, triggering error 41.
The POSIX timer queue requires kernel memory. Tight mq_maxmsg or mq_msgsize values can block new registrations.
Low PID or memory limits inside Docker or Kubernetes prevent the timer notifier thread from spawning or allocating queue space.
MySQL 8.0.13-8.0.19 contained defects in the timer subsystem.
Upgrading eliminates spurious EE_EXITING_TIMER_NOTIFY_THREAD errors.
.
No. The server keeps running but loses its internal timer thread, which can disrupt scheduled events and replication heartbeats.
Yes. Oracle patched several queue-handling bugs. Upgrading to 8.0.24 or later is recommended.
The timer notifier is integral to the event scheduler and InnoDB. Disabling it is not supported. Fix underlying OS limits instead.
Galaxy surfaces MySQL error logs in its desktop SQL editor, letting developers quickly spot EE_EXITING_TIMER_NOTIFY_THREAD and share remediation steps with teammates.