PHP / mySQL: bagaimana cara men-debug kesalahan 'terlalu banyak koneksi'?

8

Saya bekerja sekarang dengan situs web PHP di server khusus klien saya dan saya mendapatkan kesalahan secara berkala too many connectionstetapi ~ 5 pengguna sedang menelusuri halaman ini.

Di phpMyAdminaku bisa melihat bahwa max connectionsvariabel diatur ke 400.

Di server MySQL lokal kami di perusahaan saya, kami telah max connectionsmengatur 200dan menggunakan teman lain dalam waktu yang sama server ini.

Saya mendengar bahwa di server mereka beberapa web lain menggunakan MySQL yang sama dengan trafiic besar.

Ini pertanyaan saya:

  • Bagaimana cara debug masalah ini?
  • Bisakah saya melihat beberapa daftar pertanyaan SQL yang dieksekusi dalam 10 menit terakhir untuk memeriksa apakah itu masalah kita atau mereka?
hsz
sumber

Jawaban:

2

Gejala yang Anda jelaskan menunjukkan koneksi yang persisten. Dalam beberapa pengaturan, PHP tidak menangani koneksi persisten dengan baik: ia cenderung membuka koneksi baru daripada menggunakan kembali yang sudah ada. Saya sarankan Anda menonaktifkan fitur ini dan melihat apakah masalah berlanjut:

Jika Anda melihat peningkatan, Anda dapat mencoba untuk menyempurnakan panggilan terus-menerus atau menyingkirkannya secara permanen.

Álvaro González
sumber
Saya juga menembak kasing itu. Sama sekali saya tidak dapat mengubah konfigurasi web / server mereka untuk melakukan perubahan (web saya tidak menggunakan di persistent connectionsmana pun). Besok saya akan bertemu pria mereka dan saya akan meminta mereka untuk melakukan itu.
hsz
Ini tidak memerlukan modifikasi konfigurasi server apa pun. Anda hanya perlu memperbarui skrip PHP untuk aplikasi tersebut.
Michael Mior
Tentu, tetapi saya tidak memiliki akses ke halaman web kedua yang juga menggunakan server MySql yang sama - jadi saya tidak dapat memperbarui skrip PHP yang mungkin digunakan mysql_pconnect. phpinfo()menunjukkan kepada saya bahwa `mysql.allow_persistent` adalah On. Mengubah bendera itu menjadi Offtidak akan memberikan hasil sama sekali - itu harus diubah pada mesin mereka.
hsz
Mereka berubah mysql.allow_persistentmenjadi Offdan CMS kami dipercepat dan sekarang tidak ada masalah dengan koneksi. Terima kasih! Tapi saya masih bertanya-tanya bagaimana cara memeriksa skrip apa yang terhubung dengan server MySql?
hsz
SHOW PROCESSLIST memberi tahu Anda pengguna, host, DB, dan (jika Anda beruntung) permintaan.
Álvaro González