Apakah Anda menggunakan koneksi persisten? Berapa banyak koneksi tidur yang Anda miliki? Berapa jumlah maksimum koneksi yang terkonfigurasi oleh DB Server Anda?
Untuk memeriksa berapa banyak koneksi tidur yang baru saja Anda jalankan:
show full processlist;
Untuk melihat menjalankan max_connections:
show variables like 'max_connections';
Saya pikir koneksi tidur tidak menjadi masalah, mysqld akan memutuskan koneksi tidur berdasarkan 2 nilai:
interactive_timeout wait_timetout
Keduanya secara default 28800 detik (8 jam).
Anda dapat mengatur opsi ini di my.cnf (lokasi file ini berbeda di berbagai OS dan DB, percona, mysql, dll)
Juga lihat jawaban ini dari Administrator Database: https://dba.stackexchange.com/a/1559 dan jika Anda ingin tahu lebih banyak tentang cara men-debug asal koneksi tidur, periksa artikel yang bagus ini: https: // www. percona.com/blog/2007/02/08/debugging-sleeping-connections-with-mysql/
"Jika koneksi Anda persisten (dibuka melalui mysql_pconnect), Anda dapat menurunkan angka-angka ini ke sesuatu yang masuk akal seperti 600 (10 mnt) atau bahkan 60 (1 mnt). Atau, jika aplikasi Anda berfungsi dengan baik, Anda dapat meninggalkan default. Ini adalah terserah kamu."
Cobalah untuk menjalankan pengindeks dari konsol untuk melihat apakah itu menghasilkan beberapa kesalahan:
php shell/indexer info # this will output the list of indexes then
php shell/indexer --reindex {index_name}
konfigurasikan mysql-server Anda dengan mengatur batas waktu lebih pendek pada
wait_timeout
daninteractive_timeout
mysql> tampilkan variabel seperti
"%timeout%"
;Setel dengan:
(dan juga diatur dalam file konfigurasi Anda, ketika server Anda restart)
Tetapi Anda merawat gejalanya alih-alih penyebab yang mendasarinya - mengapa koneksi terbuka? Jika skrip PHP selesai, bukankah harus ditutup? Pastikan server web Anda tidak menggunakan koneksi pooling ...
sumber