Kesalahan OS 11 adalah "Sumber daya tidak tersedia untuk sementara". Penyebab paling umum menerima kesalahan ini ketika mencoba membuat utas baru adalah karena kernel proses yang memberlakukan batasan pada deskriptor file yang terbuka. Penyebab paling umum kedua adalah telah mencapai batas yang diberlakukan kernel proses pada jumlah proses/utas.
Berikut adalah faktor-faktor yang terlibat:
- Batas seluruh sistem:sysctl -e fs.file-max &&sysctl -e kernel.threads-max
- Batas per-proses (dalam shell *baru*):ulimit -n, grep nofile /etc/security/limits.conf dan ulimit -u, grep nproc /etc/security/limits.conf.
- Pengaturan open_files_limit di mysqld (mysql> menampilkan variabel global seperti “open_files_limit”;).
- Pengaturan lain dalam mysqld yang dapat mempengaruhi jumlah FD terbuka dan thread yang mungkin digunakan proses (max_connections, thread_cache_size, table_open_cache, table_definition_cache, innodb_open_files, dll.)
Dengan asumsi bahwa sebenarnya kita telah mencapai batas file terbuka, yang defaultnya adalah 1024 pada sebagian besar sistem Linux – kita seharusnya dapat menghindari masalah tersebut dengan mengambil langkah-langkah berikut:
1. Meningkatkan batas file terbuka eksplisit di mysqld dengan membuat perubahan ini ke file my.cnf:
[mysqld] # Here X could be (max_connections+table_cache)*3 OR you could simply set it very high, for example 32000 open-files-limit = X
2. Mulai ulang layanan mysqld:
/etc/init.d/mysql restart
Batas NPROC
Jika ternyata batas nproc adalah penyebabnya (CentOS 6 menempatkan batas rendah ini di /etc/security/limits.conf), maka kita dapat meningkatkan batas nproc dengan beberapa cara berbeda.
1. Edit limit.conf:
Kita dapat mengatur batasan untuk pengguna mysql di file limit.conf, misalnya:
mysql soft nproc 10240 mysql hard nproc 40960
Perhatikan bahwa limit.conf hanya berlaku untuk shell login dan tidak mempengaruhi proses yang dimulai oleh init atau systemd. Setiap perubahan pada limit.conf hanya akan berlaku untuk login baru, Anda harus logout dan login untuk memulai sesi baru.
2. Edit skrip mysqld_safe:
Kami juga dapat menambahkan panggilan ulimit di dekat bagian atas skrip mysqld_safe, misalnya:
$ ulimit -u 40000
3. Gunakan skrip pembungkus:
Lihat posting di bawah ini tentang “Cara menggunakan Skrip Pembungkus untuk mengatur Atribut Per Proses Kustom untuk Server MySQL”.
Cara menggunakan Skrip Pembungkus untuk mengatur Atribut Per Proses Kustom untuk Server MySQLKita perlu me-restart mysqld agar perubahan diterapkan.