The server could not create an internal timer queue at startup, usually due to exhausted OS resources or restrictive limits.
MySQL Error 38: EE_FAILED_TO_CREATE_TIMER_QUEUE means the server failed to obtain an operating-system timer queue. Raise file-descriptor or timer limits, free system resources, and restart MySQL to resolve the issue.
Failed to create timer queue (OS errno %d). EE_FAILED_TO_CREATE_TIMER_QUEUE was added in 8.0.13.
The MySQL server requests an operating-system timer queue during initialization. If the OS denies the request, MySQL raises error 38 (EE_FAILED_TO_CREATE_TIMER_QUEUE) and stops.
The timer queue coordinates internal alarms such as connection timeouts and replication heartbeats.
Without it, the server cannot guarantee correct operation, so startup aborts.
EE_FAILED_TO_CREATE_TIMER_QUEUE was added in MySQL 8.0.13 and is surfaced during all later versions when the timer queue allocation fails.
Because the error halts startup, production databases remain offline until it is fixed. Businesses lose availability and downstream services fail.
Most occurrences stem from exhausted kernel objects, especially file descriptors or POSIX timers.
Low ulimit values, container constraints, or SELinux / AppArmor policies can also block creation.
Increase system limits for timers and file descriptors, then restart MySQL. On Linux, adjust /etc/security/limits.conf or systemd service overrides. In containers, raise --ulimit settings.
Busy hosts running thousands of microservices can hit per-user timer limits. Cloud images with conservative ulimit defaults also trigger the error after upgrades.
Raising the limits resolves the problem.
Monitor descriptor and timer usage, set generous static limits, and include limit checks in CI/CD health probes. Use Galaxy’s connection-check template to validate limits before deployment.
EE_OUT_OF_FILERESOURCES and ER_CANT_CREATE_THREAD share the same root cause of resource exhaustion. Apply similar tuning steps to eliminate them.
.
No. Any OS that lacks available timer queues can trigger the error, but Linux hosts are most common.
Often yes, because timer queues consume descriptors. If not, inspect POSIX timer and security policies.
Galaxy’s pre-run checks alert you when server health metrics show low descriptor headroom before deploying queries.
Yes. MySQL must be restarted after limits change to allocate the new timer queue.