MySQL fails to create the internal timer-notification thread, preventing background tasks from running and aborting the requested operation.
MySQL Error 39: EE_FAILED_TO_START_TIMER_NOTIFY_THREAD appears when the server cannot spawn its timer-notification thread, usually because the operating system blocks new threads or MySQL’s thread settings are too low. Free OS resources, raise thread limits, and restart MySQL to resolve the issue.
Failed to start timer notify thread. EE_FAILED_TO_START_TIMER_NOTIFY_THREAD was added in 8.0.13.
Error 39 signals that MySQL could not launch its timer-notification thread, a low-level background worker used by internal subsystems such as the Performance Schema and replication timers.
When the server cannot create this thread, the related feature aborts, and the server may refuse to start or log warnings until the condition is fixed.
The error usually surfaces at server startup, while enabling the Event Scheduler, or when plugins that rely on timers initialize.
It was first introduced in MySQL 8.0.13.
Heavy load, exhausted OS thread quotas, or misconfigured thread_stack values often trigger the failure.
If the timer thread is missing, scheduled events, timeouts, and cleanup tasks stall. Over time this can cause replication lag, stale metadata, or even a full server crash, so immediate action is vital.
The root cause is the operating system denying a pthread-create call made by MySQL.
Lack of RAM, low per-user thread limits, SELinux restrictions, or antivirus hooks on Windows can all block thread creation.
First, verify OS limits with ulimit -a
or Windows Resource Monitor. Raise the max user processes
and max threads
settings if they are near exhaustion.
Next, adjust MySQL parameters such as thread_stack
and innodb_thread_concurrency
in my.cnf
to conserve thread usage.
Restart MySQL to apply changes.
On Linux, busy servers with hundreds of connections may hit the ulimit -u
cap. Increasing it and restarting usually clears the error.
On Windows, third-party antivirus software can block thread creation. Temporarily disabling the software or adding MySQL to the allowlist fixes the issue.
Monitor thread and memory usage with performance_schema.threads
and OS tools.
Keep enough headroom between MySQL threads_created and the OS limit.
Define sane defaults in configuration management, automate limits with systemd
unit files, and test upgrades in staging environments.
MySQL Error 35 (EE_CANT_CREATE_THREAD) signals a generic thread-creation failure, while Error 46 (EE_OUT_OF_RESOURCES) indicates broader resource exhaustion. They share similar fixes: boost OS limits and free memory.
.
No. Sometimes only the feature needing the timer thread fails, but the server keeps running with degraded functionality.
If the failure happened at startup, a restart is required. If it occurred later, freeing OS threads may allow MySQL to create the thread on-the-fly.
No. You must set it in my.cnf
and restart MySQL for the new value to take effect.
Galaxy’s query editor highlights server warnings in real time and logs them centrally, making it easier to spot thread-creation issues early and share fixes with teammates.