MySQL "read ECONNRESET" Ralat pada Idle Node.js Server: Punca dan Penyelesaian
Pengenalan
Menyambung pelayan Node.js ke MySQL melalui modul node-mysql boleh menghadapi cabaran apabila masa melahu membawa kepada membaca ralat ECONNRESET.
Soalan 1: Pemutus Sambungan
Ya, isu itu nampaknya berpunca daripada pemangkasan MySQL melahu sambungan kerana tetapan tunggu_masa tamatnya. Had 8 jam lalai boleh tamat tempoh selepas meninggalkan pelayan melahu selama beberapa jam.
Soalan 2: Had Kolam Sambungan
Sementara node-mysql menguruskan kumpulan sambungan, ia mungkin tidak mengesan pemutusan sambungan sehingga pertanyaan dicuba. Kecacatan reka bentuk ini menjadikan ralat tidak dapat dielakkan pada pertanyaan pasca melahu yang pertama.
Soalan 3: Punca Luaran
Walaupun ralat ECONNRESET membaca adalah perkara biasa, ia patut mempertimbangkan potensi lain punca. Walau bagaimanapun, siasatan lanjut menunjukkan isu tamat masa MySQL dan bukannya faktor luaran.
Resolusi
1. Tingkatkan MySQL Timeout:
Tetapkan pembolehubah wait_timeout MySQL kepada nilai yang lebih besar (cth., 28800 saat selama 8 jam) untuk mengelakkan pemangkasan sambungan.
2. Gunakan Pertanyaan Denyutan Jantung:
Lakukan pertanyaan berkala (cth., PILIH 1;) untuk memastikan sambungan hidup dan mengelakkan pemangkasan.
3. Laksanakan Pemangkasan Sambungan Terbiar:
Gunakan modul nod-pool dengan pilihan idleTimeoutMillisnya untuk memangkas sambungan terbiar secara automatik.
Kesimpulan
Oleh kerana menangani tetapan tamat masa MySQL dan meningkatkan pengendalian sambungan dalam nod-mysql, pembangun boleh kurangkan ralat ECONNRESET baca pada pelayan Node.js terbiar. Memandangkan punca luaran yang berpotensi juga adalah bijak, tetapi dalam kes ini, tunggu_masa tunggu MySQL nampaknya menjadi punca utama.
Atas ialah kandungan terperinci Mengapa Saya Mendapat Ralat 'baca ECONNRESET' pada Pelayan Node.js Terbiar Disambungkan ke MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!