GNU/Linux >> Belajar Linux >  >> Linux

Kesalahan Server MySQL – “Tidak Dapat Membuat Utas Baru (errno 11)”

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:

  1. Batas seluruh sistem:sysctl -e fs.file-max &&sysctl -e kernel.threads-max
  2. Batas per-proses (dalam shell *baru*):ulimit -n, grep nofile /etc/security/limits.conf dan ulimit -u, grep nproc /etc/security/limits.conf.
  3. Pengaturan open_files_limit di mysqld (mysql> menampilkan variabel global seperti “open_files_limit”;).
  4. 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 MySQL

Kita perlu me-restart mysqld agar perubahan diterapkan.


Linux
  1. Kesalahan 1130 Menghubungkan Ke Mysql Di Server Ubuntu 12.04?

  2. Buat Server DNS

  3. Buat pengguna baru dan berikan izin di MySQL

  1. Bagaimana saya bisa membuat tugas cron baru secara terprogram?

  2. kesalahan:'Tidak dapat terhubung ke server MySQL lokal melalui soket '/var/run/mysqld/mysqld.sock' (2)' -- Hilang /var/run/mysqld/mysqld.sock

  3. Bagaimana saya bisa mengekspor hak istimewa dari MySQL dan kemudian mengimpor ke server baru?

  1. Buat database baru dan gunakan di MySQL/MariaDB

  2. Pitchfork:Buat server

  3. Tidak dapat terhubung ke kesalahan server MySQL 111