Pelayan MySQL telah hilang - 60 saat dari apa yang dijangkakan
Artikel ini membincangkan perkara yang menyebabkan pelayan MySQL melalui pertanyaan yang berlangsung 120 saat Isu yang tamat selepas 60 saat dan melontarkan ralat. Walaupun pertanyaan berjalan dengan baik, isu dalam skrip PHP menyebabkan ralat ini.
Simptom Masalah
Konfigurasi Sistem
Analisis
Selepas menyemak output SHOW VARIABLES, kami mendapati wait_timeout telah ditetapkan kepada 28800 (480 minit), tetapi ralat masih wujud. Ini menunjukkan bahawa tunggu_masa tamat bukanlah masalah.
Penyelesaian
Punca masalah ialah pilihan PHP mysql.connect_timeout. Pilihan ini digunakan bukan sahaja untuk tamat masa sambungan tetapi juga untuk menunggu respons pertama daripada pelayan. Memandangkan tempoh pertanyaan ditetapkan kepada 120 saat dan mysql.connect_timeout ditetapkan kepada 60 saat secara lalai, pelayan menutup sambungan selepas 60 saat, menyebabkan ralat.
Menyelesaikan isu ini dengan meningkatkan mysql.connect_timeout kepada sekurang-kurangnya 120 saat. Ini dicapai dengan kod berikut:
ini_set('mysql.connect_timeout', 300); ini_set('default_socket_timeout', 300);
Ini meningkatkan mysql.connect_timeout kepada 300 saat, mengelakkan penutupan sambungan sebelum waktunya sementara menunggu pelayan membalas.
Atas ialah kandungan terperinci Mengapakah pertanyaan MySQL saya tamat masa selepas 60 saat, walaupun `wait_timeout` adalah lebih tinggi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!