Pada dasarnya, Anda mendapatkan koneksi dalam status Tidur ketika :
- skrip PHP terhubung ke MySQL
- beberapa kueri dijalankan
- lalu, skrip PHP melakukan beberapa hal yang membutuhkan waktu
- tanpa memutuskan sambungan dari DB
- dan, akhirnya, skrip PHP berakhir
- yang artinya terputus dari server MySQL
Jadi, Anda biasanya berakhir dengan banyak proses dalam status Tidur ketika Anda memiliki banyak proses PHP yang tetap terhubung, tanpa benar-benar melakukan apa pun di sisi database.
Ide dasarnya, jadi :pastikan Anda tidak memiliki proses PHP yang berjalan terlalu lama -- atau paksa mereka untuk memutuskan sambungan segera setelah mereka tidak perlu lagi mengakses database.
Hal lain yang sering saya lihat ketika ada beban di server :
- Semakin banyak permintaan yang datang ke Apache
- yang berarti banyak halaman yang harus dibuat
- Setiap skrip PHP, untuk menghasilkan halaman, terhubung ke DB dan melakukan beberapa kueri
- Kueri ini membutuhkan lebih banyak waktu, karena beban pada server DB meningkat
- Yang berarti lebih banyak proses terus menumpuk
Solusi yang dapat membantu adalah mengurangi waktu yang dibutuhkan kueri Anda -- mengoptimalkan kueri yang paling lama.