Mari kita asumsikan sistem Anda saat ini berbasis Unix (seperti yang diberikan dalam pernyataan masalah Anda). Jika ini benar, berikut serangkaian masalah yang mungkin Anda alami:
-
Anda kehabisan memori tersedia untuk MySQL.
Ini adalah masalah yang paling mungkin Anda hadapi. Setiap koneksi di kumpulan koneksi MySQL membutuhkan memori untuk berfungsi, dan jika sumber daya ini habis, tidak ada koneksi lebih lanjut yang dapat dibuat. Tentu saja, jejak memori dan ukuran paket maksimum dari berbagai operasi dapat disetel di Anda setara dengan
my.cnf
jika Anda menemukan ini sebagai masalah.Berikut adalah utas tambahan yang dapat membantu di sana , tetapi Anda juga dapat mempertimbangkan untuk menggunakan alat pembuatan profil yang lebih sederhana seperti
top
untuk mendapatkan perkiraan rata-rata yang baik tentang apa yang terjadi. -
Anda kehabisan deskriptor file tersedia untuk akun pengguna MySQL Anda.
Masalah umum lainnya:jika Anda mencoba untuk melayani permintaan yang memerlukan file IO di atas batas 1.024 (secara default), Anda akan mengalami kasus di mana operasi gagal. Ini karena sebagian besar sistem menentukan batas lunak dan keras pada jumlah deskriptor file terbuka yang dapat tersedia setiap pengguna pada satu waktu, dan melewati ambang batas ini dapat menyebabkan masalah.
Ini biasanya akan memiliki serangkaian tanda yang sangat jelas dinyatakan dalam file log Anda. Periksa
/var/log/messages
dan direktori Anda yang sebanding (misalnya,/var/log/mysql
untuk melihat apakah Anda dapat menemukan sesuatu yang menarik. -
Anda mengalami livelock atau deadlock skenario di mana utas Anda tidak memuaskan.
Akibat dari kehabisan memori dan deskriptor file, thread dapat kehabisan waktu jika Anda telah melampaui beban komputasi yang mampu ditangani oleh sistem Anda. Ini tidak akan memunculkan pesan kesalahan ini, tetapi ini adalah sesuatu yang harus diwaspadai di masa mendatang.
-
Sistem Anda kehabisan PID yang tersedia untuk
fork
.Skenario umum lainnya:
fork
hanya memiliki begitu banyak PID yang tersedia untuk digunakan pada waktu tertentu. Jika sistem Anda hanya berlebihan , itu tidak akan lagi dapat melayani permintaan.Pemeriksaan termudah untuk ini adalah untuk melihat apakah ada layanan lain yang dapat terhubung melalui mesin. Misalnya, mencoba memasukkan SSH ke dalam kotak dan menemukan bahwa Anda tidak bisa adalah petunjuk besar.
-
Proxy upstream atau manajer koneksi telah kehabisan sumber daya dan menghentikan permintaan layanan.
Jika Anda memiliki lapisan layanan antara klien Anda dan MySQL, itu harus diperiksa untuk melihat apakah itu macet, macet, atau menjadi tidak stabil. Saran di atas berlaku.
-
Pemeta port Anda telah habis dengan sendirinya setelah 65.536 sambungan .
Tidak mungkin, tetapi sekali lagi, kemungkinan kasus kelelahan. Memeriksa koneksi layanan sepele seperti di atas, ehm, juga port of call terbaik di sini.
Singkatnya:ini adalah skenario kehabisan sumber daya, termasuk server yang "mati". Anda harus membuat profil sistem Anda lebih jauh untuk melihat apa yang Anda blokir. Semua pesan kesalahan yang diberikan kepada kami dalam hal ini adalah fakta bahwa sumber daya tidak tersedia untuk klien -- kami perlu melihat informasi lebih lanjut tentang server untuk menentukan pemulihan yang lebih memadai.