Kueri kecil berfungsi, yang besar gagal: saiz paket yang mana?
Paket pemacu SQL Server, had mesej MySQL dan MTU laluan IP ialah unit yang berbeza. Kegagalan bergantung saiz tidak menjadikannya boleh ditukar ganti.
Kueri kecil kembali, yang besar tergantung atau terputus, dan gerak hati pertama ialah ada sesuatu yang tidak kena dengan saiz paket. Gerak hati itu biasanya betul dan hampir selalu menuju lapisan yang salah. Tiga tetapan berkongsi perkataan paket dan mengukur tiga perkara yang tidak berkaitan: pembungkusan pengangkutan pemacu pangkalan data, had mesej pelayan pangkalan data dan unit penghantaran maksimum laluan IP. Melaraskan satu untuk membaiki gejala yang disebabkan oleh yang lain ialah cara masalah lima minit menjadi seminggu penalaan. Urutan di bawah ialah yang paling sedikit mengambil masa saya.
Tiga lapisan, satu perkataan bersama
Setiap baris di bawah ialah unit berbeza dengan pemilik berbeza, dan tiada satu pun boleh dirumuskan daripada yang lain. Mesej pangkalan data boleh merangkumi banyak segmen TCP dan banyak paket IP, jadi menambah saiz yang dibenarkan tidak melebarkan laluan, dan mengurangkan tetapan pemacu bukan operasi yang sama dengan menukar MTU antara muka. Perkataan itu muncul dalam tiga fail konfigurasi berbeza, sebab itulah mencarinya memulangkan tiga jawapan yang tidak berkaitan. Baca teks ralat dahulu, kemudian tentukan fail mana untuk dibuka.
| Setting or observation | Unit it describes |
|---|---|
| SQL Server client network packet setting | The provider's transport packaging for that connection |
| MySQL communication packet limit | A database message, such as one statement, row or replication event |
| IP path MTU | The largest IP packet the path carries without fragmentation handling |
Catat lapisan mana operasi yang gagal itu milik sebelum anda membuka fail konfigurasi. Teks ralat biasanya menyatakannya, dan teks ralat itulah bahagian yang orang langkau.
Kenal pasti pembekal sebelum menukar tetapannya
Untuk SQL Server, catat aplikasi, nama pemacu atau pembekal, versi dan konfigurasi sambungan yang berkesan. Skrip diagnostik dan aplikasi desktop boleh mencapai pelayan yang sama melalui pembekal berbeza, jadi tetapan yang membantu satu tidak membuktikan apa-apa tentang yang lain. Nilai lalai pembekal berbeza, dan medan rentetan sambungan dengan nama serupa bukan bukti bahawa setiap pembekal mentafsirnya dengan cara yang sama.
Jangan tukar pemacu yang diselenggara dengan yang lama semata-mata kerana penyelesaian lama menggunakan sintaksnya. Dokumentasi semasa tidak menggalakkan pembangunan baharu terhadap komponen lama itu, dan mewarisi hadnya ialah pertukaran yang buruk untuk satu tetapan.
Penolakan mesej bukan penyekatan laluan
Dalam MySQL 8.4, dokumentasi paket komunikasi menerangkan penolakan pernyataan, baris atau peristiwa log binari yang terlalu besar terhadap had yang berkenaan, dan had klien serta pelayan kedua-duanya boleh memainkan peranan. Itu penolakan pada lapisan pangkalan data, bukan kenyataan bahawa rangkaian mesti membawa paket IP gergasi. Baca ralat sebenar dan bentuk mesej bermasalah itu: hasil besar daripada banyak baris kecil ialah kes berbeza daripada satu baris besar, dan ia gagal dengan cara berbeza.
Pemasangan MariaDB memerlukan had dan diagnostik terdokumen versinya sendiri. Menyalin nilai lalai MySQL ke MariaDB ialah meneka dengan langkah tambahan.
Bagaimana bukti laluan sebenarnya kelihatan
Masalah saiz laluan mempunyai cap jarinya sendiri: kegagalan pengangkutan bergantung saiz yang boleh dihasilkan semula pada laluan dan keluarga alamat tertentu, dengan overhed terowong terlibat dan maklum balas penemuan berkelakuan seperti yang dibenarkan laluan. Tamat masa semata-mata tidak membezakannya daripada kueri perlahan, pepijat pemacu atau had sebelah pelayan, dan melayan tamat masa sebagai bukti masalah MTU menghantar anda dengan yakin ke lapisan yang salah.
Jika anda menguji laluan, kekalkan destinasi, akaun dan beban kerja supaya satu-satunya pemboleh ubah ialah saiz yang anda siasat. Ujian yang mengubah tiga perkara tidak memberitahu anda yang mana penting.
Tukar satu pemboleh ubah terdokumen, kemudian catatkannya
Kekalkan destinasi, akaun, pembekal dan beban kerja malar, catat nilai asal, gunakan satu perubahan yang disokong dan catat hasilnya. Tetapan lebih kecil yang membuat satu ujian berjaya ialah bukti berguna tentang tindanan yang diuji itu; ia bukan optimum sejagat dan tidak menetapkan apa yang menyebabkan kegagalan asal. Itu dakwaan yang berbeza, dan hanya yang pertama disokong oleh satu eksperimen.
Selesaikan had yang dikenal pasti pada lapisannya sendiri, kemudian catat lapisan mana ia. Catatan itulah yang menghalang orang seterusnya daripada menala pemacu kerana laluan yang bermasalah.