haqthegibson.com

The lair of Jonesy

Main
Older Articles
Downloads

links:
Jigsaw Boys
atChurch
Sdesigns
DoorStamp
LolDNS - a djbdns fork

User ID:
Password:

ORSMHosting.com

Valid XHTML 1.0!

Valid CSS!

MySQL error #1135: Can't create a new thread (errno 11). -
This error was the bane of my life for a while, and it was very hard to get a definitive answer as to what was causing it, I hope this saves you some trouble.

My website occasionally got large traffic spikes, and at the top of these peaks, I would start to see errors like these:

MySQL error #1135: Can't create a new thread (errno 11). If you are not out of available memory, you can consult the manual for a possible OS-dependent bug.


I looked in the my.cnf file on the db server and looked at the open files limit, because a process is counted as an open file, but it seemed fine:

[mysqld_safe]
open-files-limit=10240


I also checked that maximum connections was high enough, it was at 2048.

What the open-files-limit in my.cnf files does is it tells the init script to use ulimit to whatever number you put in there.

After a lot of digging around various places, and much frustration, I discovered that by default linux has a hard limit of 1024 open files for all non super-users, so even though I had set a high open-files-limit, it was capped at 1024 by the OS. I also discovered how to raise it;

/etc/security/limits.conf


This file is used by PAM to set things like maximum processes, max open files, memory usage etc and these limits can be set on a per-user basis, so I added these lines:

mysql soft nofile 4096
mysql hard nofile 4096


and restarted MySQL. BAM! That did the trick.
One more thing to make sure of is that the su pam config file (/etc/pam.d/su) is using pam_limits.so, as that is the pam module which enforces limits.

Good luck!
-Jonesy