Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Memastikan konektivitas yang andal antara aplikasi dan instans RDS DB Anda sangat penting untuk kelancaran pengoperasian beban kerja Anda. Namun, masalah konektivitas dapat muncul karena berbagai faktor, seperti konfigurasi jaringan, masalah otentikasi, atau kendala sumber daya.
Daftar Isi
Mengidentifikasi kategori spesifik dari masalah konektivitas dapat membantu mempersempit penyebab potensial dan memandu proses pemecahan masalah. Setiap kategori mungkin memerlukan pendekatan dan teknik yang berbeda untuk diagnosis dan resolusi. Masalah konektivitas database secara luas dapat diklasifikasikan ke dalam kategori berikut.
- Kesalahan dan pengecualian koneksi
-
Kesalahan dan pengecualian koneksi dapat terjadi karena berbagai alasan, seperti string koneksi yang salah, kegagalan otentikasi, gangguan jaringan, atau masalah server database. Penyebabnya dapat mencakup parameter koneksi yang salah konfigurasi, kredensi yang tidak valid, pemadaman jaringan, atau crash atau restart server database. Grup keamanan yang salah konfigurasi, pengaturan cloud pribadi virtual (VPC), Daftar Kontrol Akses jaringan (ACLs), dan tabel rute yang terkait dengan subnet juga dapat menyebabkan masalah koneksi.
- Batas koneksi tercapai
-
Masalah ini muncul ketika jumlah koneksi bersamaan ke server database melebihi batas maksimum yang diizinkan. Server database biasanya memiliki batas koneksi maksimum yang dapat dikonfigurasi yang ditentukan oleh parameter max_connections di cluster dan grup parameter instance. Dengan memberlakukan batas koneksi, server database memastikan bahwa ia memiliki sumber daya yang cukup (misalnya, memoriCPU, dan pegangan file) untuk menangani koneksi yang ada secara efisien dan memberikan kinerja yang dapat diterima. Penyebabnya dapat mencakup kebocoran koneksi dalam aplikasi, penyatuan koneksi yang tidak efisien, atau lonjakan permintaan koneksi yang tidak terduga.
- Batas waktu koneksi
-
Batas waktu koneksi terjadi ketika aplikasi klien tidak dapat membuat koneksi dengan server database dalam periode batas waktu tertentu. Penyebab umum termasuk masalah jaringan, kelebihan server, aturan firewall, dan pengaturan koneksi yang salah konfigurasi.
- Batas waktu koneksi idle
-
Koneksi idle yang tetap tidak aktif untuk jangka waktu lama mungkin ditutup secara otomatis oleh server database untuk menghemat sumber daya. Batas waktu ini biasanya dapat dikonfigurasi menggunakan
wait_timeout
daninteractive_timeout parameters
, dan harus disesuaikan berdasarkan pola penggunaan koneksi aplikasi. Penyebabnya dapat mencakup logika aplikasi yang membuat koneksi menganggur untuk waktu yang lama, atau manajemen koneksi yang tidak tepat. - Pemutusan sambungan intermiten dari koneksi yang ada
-
Kelas kesalahan ini mengacu pada skenario di mana koneksi yang dibuat antara aplikasi klien dan database secara tak terduga dihentikan atau terputus pada interval yang tidak teratur, meskipun aktif dan digunakan. Pemutusan ini terjadi sebentar-sebentar, artinya terjadi pada interval yang tidak teratur dan tidak konsisten. Penyebabnya bisa termasuk yang berikut:
-
Masalah server database seperti restart atau failover
-
Penanganan koneksi aplikasi yang tidak tepat
-
Masalah load balancing dan proxy
-
Ketidakstabilan jaringan
-
Masalah dengan komponen pihak ketiga atau middleware yang terlibat dalam jalur koneksi
-
Batas waktu eksekusi kueri
-
Kendala sumber daya di server atau sisi klien
Mengidentifikasi akar penyebab melalui pemantauan, pencatatan, dan analisis yang komprehensif sangat penting, sementara menerapkan penanganan kesalahan yang tepat, pengumpulan koneksi, dan mekanisme coba lagi dapat membantu mengurangi dampak pemutusan intermiten ini pada fungsionalitas aplikasi dan pengalaman pengguna.
-
Dengan mengumpulkan log, konfigurasi, dan informasi diagnostik yang relevan, Anda mendapatkan wawasan berharga yang dapat membantu mengidentifikasi akar penyebab masalah konektivitas dan memandu Anda menuju resolusi yang tepat.
Log dan konfigurasi jaringan, seperti aturan grup keamanan, VPC pengaturan, dan tabel rute, sangat penting untuk mengidentifikasi potensi kemacetan terkait jaringan atau kesalahan konfigurasi yang dapat mencegah aplikasi membangun koneksi yang berhasil dengan database. Dengan menganalisis komponen jaringan ini, Anda dapat memastikan bahwa port yang diperlukan terbuka, alamat IP diizinkan, dan konfigurasi perutean diatur dengan benar.
- Stempel waktu
-
Catat stempel waktu yang tepat saat masalah konektivitas terjadi. Ini dapat membantu mengidentifikasi pola atau menghubungkan masalah dengan peristiwa atau kegiatan lain.
- Log mesin DB
-
Selain log database umum, tinjau log mesin database (misalnya, log SQL kesalahan saya dan log kueri lambat) untuk informasi atau kesalahan yang relevan yang mungkin terkait dengan masalah konektivitas intermiten. Untuk informasi selengkapnya, lihat Logging untuk database MySQL Aurora.
- Log aplikasi klien
-
Kumpulkan log terperinci dari aplikasi klien yang terhubung ke database. Log aplikasi memberikan visibilitas ke dalam upaya koneksi, kesalahan, dan informasi yang relevan dari perspektif aplikasi, yang dapat mengungkapkan masalah yang terkait dengan string koneksi, kredensional otentikasi, atau penanganan koneksi tingkat aplikasi.
Log database, di sisi lain, menawarkan wawasan tentang kesalahan sisi database, kueri lambat, atau peristiwa yang mungkin berkontribusi pada masalah konektivitas. Untuk informasi selengkapnya, lihat Logging untuk database MySQL Aurora.
- Variabel lingkungan klien
-
Periksa apakah ada variabel lingkungan atau pengaturan konfigurasi di sisi klien yang mungkin memengaruhi koneksi database, seperti pengaturan proxy,SSL/TLSpengaturan, atau variabel lain yang relevan.
- Versi pustaka klien
-
Pastikan bahwa klien menggunakan versi terbaru dari driver database, pustaka, atau kerangka kerja yang digunakan untuk konektivitas database. Versi usang dapat memiliki masalah atau masalah kompatibilitas yang diketahui.
- Penangkapan jaringan klien
-
Lakukan pengambilan jaringan di sisi klien menggunakan alat seperti Wireshark atau
tcpdump
selama masa-masa ketika masalah konektivitas terjadi. Ini dapat membantu mengidentifikasi masalah atau anomali terkait jaringan di sisi klien. - Topologi jaringan klien
-
Memahami topologi jaringan klien, termasuk firewall, load balancer, atau komponen lain seperti RDS Proxy atau Proxy SQL yang membuat koneksi ke database alih-alih klien langsung membuat koneksi.
- Pengaturan sistem operasi klien
-
Periksa pengaturan sistem operasi klien yang mungkin memengaruhi konektivitas jaringan, seperti aturan firewall, pengaturan adaptor jaringan, dan pengaturan lain yang relevan.
- Konfigurasi penyatuan koneksi
-
Jika Anda menggunakan mekanisme penyatuan koneksi di aplikasi Anda, tinjau pengaturan konfigurasi dan pantau metrik kumpulan (misalnya, koneksi aktif, koneksi idle, dan batas waktu koneksi) untuk memastikan bahwa kumpulan berfungsi dengan benar. Tinjau juga pengaturan pool, seperti ukuran kolam maksimum, ukuran kolam minimum, dan pengaturan validasi koneksi, untuk memastikan bahwa pengaturan tersebut dikonfigurasi dengan benar.
- String koneksi
-
String koneksi biasanya mencakup parameter seperti nama host atau titik akhir, nomor port, nama database, dan kredensi otentikasi. Menganalisis string koneksi dapat membantu mengidentifikasi potensi kesalahan konfigurasi atau pengaturan yang salah yang mungkin menyebabkan masalah konektivitas. Misalnya, nama host atau nomor port yang salah dapat mencegah klien mencapai instance database, sementara kredensi otentikasi yang tidak valid dapat menyebabkan kegagalan otentikasi dan penolakan koneksi. Selain itu, string koneksi dapat mengungkapkan masalah yang terkait dengan pengumpulan koneksi, batas waktu, atau pengaturan khusus koneksi lainnya yang dapat berkontribusi pada masalah konektivitas. Menyediakan string koneksi lengkap yang digunakan oleh aplikasi klien dapat membantu menentukan kesalahan konfigurasi pada klien.
- Metrik basis data
-
Pantau metrik database seperti CPU penggunaan, penggunaan memori, dan disk I/O selama masa-masa ketika masalah konektivitas terjadi. Ini dapat membantu mengidentifikasi apakah instans DB mengalami pertikaian sumber daya atau masalah kinerja.
- Versi mesin basis data
-
Perhatikan versi mesin Aurora My SQL RDS DB. AWS secara teratur merilis pembaruan yang menangani masalah yang diketahui, kerentanan keamanan, dan memperkenalkan peningkatan kinerja. Oleh karena itu, kami sangat menyarankan Anda meningkatkan ke versi terbaru yang tersedia, karena pembaruan ini sering kali menyertakan perbaikan bug dan peningkatan yang secara khusus terkait dengan konektivitas, kinerja, dan stabilitas. Menyediakan informasi versi database, bersama dengan rincian lain yang dikumpulkan, dapat membantu Support dalam mendiagnosis dan menyelesaikan masalah konektivitas secara efektif.
- Metrik jaringan
-
Kumpulkan metrik jaringan seperti latensi, kehilangan paket, dan throughput selama masa-masa ketika masalah konektivitas terjadi. Alat seperti
ping
,traceroute
, dan alat pemantauan jaringan dapat membantu mengumpulkan data ini. - Sumber dan detail klien
-
Tentukan alamat IP server aplikasi, penyeimbang beban, atau komponen lain yang memulai koneksi database. Ini bisa berupa alamat IP tunggal atau berbagai alamat IP (CIDRnotasi). Jika sumbernya adalah EC2 instans Amazon, ini juga membantu untuk meninjau jenis instans, Availability Zone, subnet ID, dan grup keamanan yang terkait dengan instance, dan detail antarmuka jaringan seperti alamat IP pribadi dan alamat IP publik.
Dengan menganalisis data yang dikumpulkan secara menyeluruh, Anda dapat mengidentifikasi kesalahan konfigurasi, kendala sumber daya, gangguan jaringan, atau masalah mendasar lainnya yang menyebabkan masalah konektivitas intermiten atau persisten. Informasi ini memungkinkan Anda untuk mengambil tindakan yang ditargetkan, seperti menyesuaikan konfigurasi, menyelesaikan masalah jaringan, atau menangani penanganan koneksi tingkat aplikasi.
Untuk memantau dan memecahkan masalah konektivitas, Anda dapat menggunakan metrik dan fitur berikut.
- CloudWatch metrik
-
-
CPUUtilization
— CPU Penggunaan yang tinggi pada instans DB dapat menyebabkan eksekusi kueri yang lambat, yang dapat mengakibatkan batas waktu atau penolakan koneksi. -
DatabaseConnections
— Pantau jumlah koneksi aktif ke instans DB. Sejumlah besar koneksi mendekati maksimum yang dikonfigurasi dapat menunjukkan potensi masalah konektivitas atau kelelahan kumpulan koneksi. -
FreeableMemory
— Memori yang tersedia rendah dapat menyebabkan masalah kinerja dan masalah konektivitas karena kendala sumber daya. -
NetworkReceiveThroughput
danNetworkTransmitThroughput
— Lonjakan atau penurunan throughput jaringan yang tidak biasa dapat mengindikasikan masalah konektivitas atau kemacetan jaringan.
-
- Metrik-metrik Wawasan Performa
-
Untuk memecahkan masalah konektivitas di Aurora My SQL RDS for My Insights, analisis metrik Database seperti berikut:
-
Aborted_clients
-
Aborted_connects
-
Koneksi
-
max_connections
-
Threads_connected
-
Threads_created
-
Threads_running
Metrik ini dapat membantu Anda mengidentifikasi kemacetan koneksi, mendeteksi masalah jaringan atau otentikasi, mengoptimalkan penyatuan koneksi, dan memastikan manajemen thread yang efisien. Untuk informasi selengkapnya, lihat Penghitung Performance Insights untuk Aurora My SQL.
-
- Fitur Performance Insights
-
-
Beban Database - Visualisasikan beban database dari waktu ke waktu dan menghubungkannya dengan masalah konektivitas atau penurunan kinerja.
-
SQLStatistik — Menganalisis SQL statistik untuk mengidentifikasi kueri yang tidak efisien atau operasi basis data yang mungkin berkontribusi pada masalah konektivitas.
-
Kueri Teratas — Mengidentifikasi dan menganalisis kueri yang paling intensif sumber daya, yang dapat membantu mengidentifikasi potensi kemacetan kinerja atau kueri yang berjalan lama yang mungkin menyebabkan masalah konektivitas.
-
Dengan memantau metrik ini dan memanfaatkan Performance Insights, Anda dapat memperoleh visibilitas ke kinerja instans database, penggunaan sumber daya, dan potensi kemacetan yang mungkin menyebabkan masalah konektivitas. Sebagai contoh:
-
Tinggi
DatabaseConnections
mendekati batas maksimum dapat menunjukkan kelelahan kolam koneksi atau penanganan koneksi yang tidak tepat, yang menyebabkan masalah konektivitas. -
Tinggi
CPUUtilization
atau rendahFreeableMemory
dapat menunjukkan kendala sumber daya, yang dapat menyebabkan eksekusi kueri lambat dan batas waktu koneksi atau penolakan. -
Menganalisis Kueri dan SQLStatistik Teratas dapat membantu mengidentifikasi kueri yang tidak efisien atau intensif sumber daya yang mungkin berkontribusi pada masalah konektivitas.
Selain itu, pemantauan CloudWatch Log dan pengaturan alarm dapat membantu Anda secara proaktif mengidentifikasi dan menanggapi masalah konektivitas sebelum meningkat.
Penting untuk dicatat bahwa meskipun metrik dan alat ini dapat memberikan wawasan yang berharga, metrik tersebut harus digunakan bersama dengan langkah pemecahan masalah lainnya.
Pemantauan tambahan untuk Aurora My SQL
- CloudWatch metrik
-
-
AbortedClients
— Melacak jumlah koneksi klien yang belum ditutup dengan benar. -
AuroraSlowConnectionHandleCount
— Melacak jumlah operasi penanganan koneksi yang lambat, yang menunjukkan potensi masalah konektivitas atau kemacetan kinerja. -
AuroraSlowHandshakeCount
— Mengukur jumlah operasi jabat tangan yang lambat, yang juga bisa menjadi indikator masalah konektivitas. -
ConnectionAttempts
— Mengukur jumlah upaya koneksi yang dilakukan ke instans Aurora My SQL DB.
-
- Variabel status global
-
Aurora_external_connection_count
— Menunjukkan jumlah koneksi database ke instans DB, tidak termasuk koneksi RDS layanan yang digunakan untuk pemeriksaan kesehatan database.
Dengan memantau metrik dan variabel status global ini, Anda dapat memperoleh visibilitas ke dalam pola koneksi, kesalahan, dan potensi kemacetan yang mungkin menyebabkan masalah konektivitas dengan instans Amazon Aurora My Anda. SQL
Misalnya, jumlah yang tinggi AbortedClients
atau AuroraSlowConnectionHandleCount
dapat menunjukkan masalah konektivitas.
Selain itu, menyiapkan CloudWatch alarm dan notifikasi dapat membantu Anda secara proaktif mengidentifikasi dan menanggapi masalah konektivitas sebelum meningkat dan memengaruhi kinerja aplikasi Anda.
Berikut ini adalah beberapa kesalahan konektivitas umum untuk Aurora My SQL database, bersama dengan kode kesalahan dan penjelasannya.
- Kode Kesalahan 1040: Terlalu banyak koneksi
-
Kesalahan ini terjadi ketika klien mencoba untuk membuat lebih banyak koneksi daripada maksimum yang diizinkan oleh server database. Kemungkinan penyebabnya meliputi:
-
Kesalahan konfigurasi penyatuan koneksi - Jika menggunakan mekanisme penyatuan koneksi, pastikan ukuran kolam maksimum tidak diatur terlalu tinggi, dan koneksi dilepaskan dengan benar kembali ke kolam.
-
Konfigurasi instans database - Verifikasi pengaturan koneksi maksimum yang diizinkan untuk instance database dan sesuaikan jika perlu dengan menyetel
max_connections
parameter. -
Konkurensi tinggi — Jika beberapa klien atau aplikasi terhubung ke database secara bersamaan, batas koneksi maksimum yang diizinkan dapat tercapai.
-
- Kode Kesalahan 1045: Akses ditolak untuk pengguna '...' @ '...' (menggunakan kata sandi: YES /NO)
-
Kesalahan ini menunjukkan kegagalan otentikasi ketika mencoba untuk terhubung ke database. Kemungkinan penyebabnya meliputi:
-
Kompatibilitas plugin otentikasi - Periksa apakah plugin otentikasi yang digunakan oleh klien kompatibel dengan mekanisme otentikasi server database.
-
Nama pengguna atau kata sandi salah — Verifikasi bahwa nama pengguna dan kata sandi yang benar digunakan dalam string koneksi atau mekanisme otentikasi.
-
Izin pengguna — Pastikan bahwa pengguna memiliki izin yang diperlukan untuk terhubung ke instance database dari host atau jaringan yang ditentukan.
-
- Kode Kesalahan 1049: Database tidak dikenal '...'
-
Kesalahan ini menunjukkan bahwa klien mencoba untuk terhubung ke database yang tidak ada di server. Kemungkinan penyebabnya meliputi:
-
Database tidak dibuat — Pastikan database yang ditentukan telah dibuat di server database.
-
Nama database salah — Periksa ulang nama database yang digunakan dalam string koneksi atau kueri untuk akurasi.
-
Izin pengguna — Verifikasi bahwa pengguna memiliki izin yang diperlukan untuk mengakses database yang ditentukan.
-
- Kode Kesalahan 1153: Mendapat paket yang lebih besar dari byte 'max_allowed_packet'
-
Kesalahan ini terjadi ketika klien mencoba mengirim atau menerima data yang melebihi ukuran paket maksimum yang diizinkan oleh server database. Kemungkinan penyebabnya meliputi:
-
Kueri besar atau set hasil - Jika mengeksekusi kueri yang melibatkan sejumlah besar data, batas ukuran paket mungkin terlampaui.
-
Pengaturan ukuran paket yang salah konfigurasi - Periksa
max_allowed_packet
pengaturan pada server database dan sesuaikan jika perlu. -
Masalah konfigurasi jaringan — Pastikan bahwa konfigurasi jaringan (misalnya, MTU ukuran) memungkinkan untuk ukuran paket yang diperlukan.
-
- Kode Kesalahan 1226: Pengguna '...' telah melampaui sumber daya 'max_user_connections' (nilai saat ini:...)
-
Kesalahan ini menunjukkan bahwa pengguna telah melampaui jumlah maksimum koneksi bersamaan yang diizinkan oleh server database. Kemungkinan penyebabnya meliputi::
-
Kesalahan konfigurasi penyatuan koneksi - Jika menggunakan mekanisme penyatuan koneksi, pastikan ukuran kolam maksimum tidak disetel terlalu tinggi untuk batas koneksi pengguna.
-
Konfigurasi instance database - Verifikasi
max_user_connections
pengaturan untuk instance database dan sesuaikan jika perlu. -
Konkurensi tinggi — Jika beberapa klien atau aplikasi terhubung ke database secara bersamaan menggunakan pengguna yang sama, batas koneksi khusus pengguna dapat tercapai.
-
- Kode Kesalahan 2003: Tidak dapat terhubung ke SQL server Saya di '...' (10061)
-
Kesalahan ini biasanya terjadi ketika klien tidak dapat membuat koneksi TCP /IP dengan server database. Hal ini dapat disebabkan oleh berbagai masalah, seperti berikut ini:
-
Status instans database - Pastikan bahwa instance database dalam
available
keadaan, dan tidak menjalani operasi pemeliharaan atau cadangan apa pun. -
Aturan Firewall — Periksa apakah ada firewall (sistem operasi, jaringan, atau grup keamanan) yang memblokir koneksi pada port yang ditentukan (biasanya 3306 untuk My). SQL
-
Nama host atau titik akhir yang salah - Pastikan bahwa nama host atau titik akhir yang digunakan dalam string koneksi sudah benar dan cocok dengan instance database.
-
Masalah konektivitas jaringan — Verifikasi bahwa mesin klien dapat mencapai instance database melalui jaringan. Periksa apakah ada pemadaman jaringan, masalah perutean, VPC atau kesalahan konfigurasi subnet.
-
- Kode Kesalahan 2005: Tidak Diketahui Host SQL server saya '...' (11001)
-
Kesalahan ini terjadi ketika klien tidak dapat menyelesaikan nama host atau titik akhir server database ke alamat IP. Kemungkinan penyebabnya meliputi:
-
DNSmasalah resolusi — Verifikasi bahwa mesin klien dapat menyelesaikan nama host dengan benar menggunakanDNS. Periksa DNS pengaturan, DNS cache, dan coba gunakan alamat IP alih-alih nama host.
-
Nama host atau titik akhir salah - Periksa ulang nama host atau titik akhir yang digunakan dalam string koneksi untuk akurasi.
-
Masalah konfigurasi jaringan — Pastikan bahwa konfigurasi jaringan klien (misalnya, subnetVPC, dan tabel rute) memungkinkan DNS resolusi dan konektivitas ke instance database.
-
- Kode Kesalahan 2026: kesalahan SSL koneksi
-
Kesalahan ini terjadi ketika ada masalah dengan SSL TLS konfigurasi/atau validasi sertifikat selama upaya koneksi. Kemungkinan penyebabnya meliputi:
-
Kedaluwarsa sertifikat — Periksa apakah SSL TLS sertifikat/yang digunakan oleh server telah kedaluwarsa dan perlu diperpanjang.
-
Masalah validasi sertifikat — Verifikasi bahwa klien dapat memvalidasi SSL TLS server/sertifikat dengan benar, dan bahwa sertifikat tersebut dipercaya.
-
Masalah konfigurasi jaringan — Pastikan konfigurasi jaringan memungkinkan proses SSL/TLS connections and doesn't block or interfere with the SSL/TLS jabat tangan.
-
SSL/TLS configuration mismatch – Make sure that the SSL/TLSpengaturan (misalnya, cipher suite dan versi protokol) pada klien dan server kompatibel.
-
- Koneksi maksimum
-
Menyesuaikan parameter ini dapat membantu mencegah masalah koneksi yang disebabkan oleh mencapai batas koneksi maksimum yang diizinkan. Pastikan bahwa nilai-nilai ini ditetapkan dengan tepat berdasarkan persyaratan konkurensi aplikasi Anda dan kendala sumber daya.
-
max_connections
— Parameter ini menentukan jumlah maksimum koneksi bersamaan yang diizinkan untuk instans DB. -
max_user_connections
— Parameter ini dapat ditentukan selama pembuatan dan modifikasi pengguna, dan menetapkan jumlah maksimum koneksi bersamaan yang diizinkan untuk akun pengguna tertentu.
-
- Ukuran buffer jaringan
-
Meningkatkan nilai-nilai ini dapat meningkatkan kinerja jaringan, terutama untuk beban kerja yang melibatkan transfer data besar atau set hasil. Namun, berhati-hatilah karena ukuran buffer yang lebih besar dapat mengkonsumsi lebih banyak memori.
-
net_buffer_length
— Parameter ini menetapkan ukuran awal untuk koneksi klien dan buffer hasil, menyeimbangkan penggunaan memori dengan kinerja kueri. -
max_allowed_packet
— Parameter ini menentukan ukuran maksimum paket jaringan tunggal yang dapat dikirim atau diterima oleh instans DB.
-
- Kompresi jaringan (sisi klien)
-
Mengaktifkan kompresi jaringan dapat mengurangi penggunaan bandwidth jaringan, tetapi dapat meningkatkan CPU overhead pada kedua sisi klien dan server.
-
compress
— Parameter ini memungkinkan atau menonaktifkan kompresi jaringan untuk komunikasi klien/server. -
compress_protocol
— Parameter ini menentukan protokol kompresi yang akan digunakan untuk komunikasi jaringan.
-
- Penyetelan kinerja jaringan
-
Menyesuaikan batas waktu ini dapat membantu mengelola koneksi idle dan mencegah kehabisan sumber daya, tetapi berhati-hatilah karena nilai yang rendah dapat menyebabkan penghentian koneksi prematur.
-
interactive_timeout
— Parameter ini menentukan jumlah detik server menunggu aktivitas pada koneksi interaktif sebelum menutupnya. -
wait_timeout
— Parameter ini menentukan jumlah detik server menunggu aktivitas pada koneksi noninteraktif sebelum menutupnya.
-
- Pengaturan batas waktu jaringan
-
Menyesuaikan batas waktu ini dapat membantu mengatasi masalah yang terkait dengan koneksi yang lambat atau tidak responsif. Tetapi berhati-hatilah untuk tidak mengaturnya terlalu rendah, karena dapat menyebabkan kegagalan koneksi prematur.
-
net_read_timeout
— Parameter ini menentukan jumlah detik untuk menunggu lebih banyak data dari koneksi sebelum mengakhiri operasi baca. -
net_write_timeout
— Parameter ini menentukan jumlah detik untuk menunggu blok ditulis ke koneksi sebelum mengakhiri operasi tulis.
-
Contoh 1: Memecahkan masalah upaya koneksi yang gagal
Upaya koneksi dapat gagal karena beberapa alasan, termasuk kegagalan otentikasi, kegagalan SSL TLS /jabat tangan, max_connections
batas yang dicapai, dan kendala sumber daya pada instans DB.
Anda dapat melacak jumlah koneksi yang gagal baik dari Performance Insights atau dengan menggunakan perintah berikut.
mysql> show global status like 'aborted_connects'; +------------------+-------+ | Variable_name | Value | +------------------+-------+ | Aborted_connects | 7 | +------------------+-------+ 1 row in set (0.00 sec)
Jika jumlah Aborted_connects
meningkat dari waktu ke waktu, maka aplikasi bisa mengalami masalah konektivitas intermiten.
Anda dapat menggunakan Audit Lanjutan Aurora untuk mencatat koneksi dan memutuskan sambungan dari koneksi klien. Anda dapat melakukan ini dengan mengatur parameter berikut di grup parameter cluster DB:
-
server_audit_logging
=1
-
server_audit_events
=CONNECT
Berikut ini adalah ekstrak dari log audit untuk login yang gagal.
1728498527380921,auora-mysql-node1,user_1,172.31.49.222,147189,0,FAILED_CONNECT,,,1045 1728498527380940,auora-mysql-node1,user_1,172.31.49.222,147189,0,DISCONNECT,,,0
Di mana:
-
1728498527380921
— Stempel waktu zaman saat login gagal terjadi -
aurora-mysql-node1
— Instance identifier dari node Aurora SQL My cluster di mana koneksi gagal -
user_1
— Nama pengguna database yang login gagal -
172.31.49.222
— Alamat IP pribadi klien dari mana koneksi dibuat -
147189
— ID koneksi dari login yang gagal -
FAILED_CONNECT
— Menunjukkan bahwa koneksi gagal. -
1045
— Kode pengembalian. Nilai bukan nol menunjukkan kesalahan. Dalam hal ini,1045
sesuai dengan akses ditolak.
Untuk informasi selengkapnya, lihat Kode kesalahan server
Anda juga dapat memeriksa log SQL kesalahan Aurora My untuk setiap pesan kesalahan terkait, misalnya:
2024-10-09T19:26:59.310443Z 220 [Note] [MY-010926] [Server] Access denied for user 'user_1'@'172.31.49.222' (using password: YES) (sql_authentication.cc:1502)
Contoh 2: Memecahkan masalah klien abnormal terputus
Anda dapat melacak jumlah pemutusan klien abnormal baik dari Performance Insights atau dengan menggunakan perintah berikut.
mysql> show global status like 'aborted_clients'; +-----------------+-------+ | Variable_name | Value | +-----------------+-------+ | Aborted_clients | 9 | +-----------------+-------+ 1 row in set (0.01 sec)
Jika jumlah Aborted_clients
meningkat dari waktu ke waktu, maka aplikasi tidak menutup koneksi ke database dengan benar. Jika koneksi tidak ditutup dengan benar, itu dapat menyebabkan kebocoran sumber daya dan potensi masalah kinerja. Membiarkan koneksi terbuka secara tidak perlu dapat mengkonsumsi sumber daya sistem, seperti memori dan deskriptor file, yang pada akhirnya dapat menyebabkan aplikasi atau server menjadi tidak responsif atau restart.
Anda dapat menggunakan kueri berikut untuk mengidentifikasi akun yang tidak menutup koneksi dengan benar. Ini mengambil nama akun pengguna, host dari mana pengguna terhubung, jumlah koneksi tidak ditutup, dan persentase koneksi tidak ditutup.
SELECT ess.user, ess.host, (a.total_connections - a.current_connections) - ess.count_star AS not_closed, (((a.total_connections - a.current_connections) - ess.count_star) * 100) / (a.total_connections - a.current_connections) AS pct_not_closed FROM performance_schema.events_statements_summary_by_account_by_event_name AS ess JOIN performance_schema.accounts AS a ON (ess.user = a.user AND ess.host = a.host) WHERE ess.event_name = 'statement/com/quit' AND (a.total_connections - a.current_connections) > ess.count_star; +----------+---------------+------------+----------------+ | user | host | not_closed | pct_not_closed | +----------+---------------+------------+----------------+ | user1 | 172.31.49.222 | 1 | 33.3333 | | user1 | 172.31.93.250 | 1024 | 12.1021 | | user2 | 172.31.93.250 | 10 | 12.8551 | +----------+---------------+------------+----------------+ 3 rows in set (0.00 sec)
Setelah Anda mengidentifikasi akun pengguna dan host dari mana koneksi tidak ditutup, Anda dapat melanjutkan untuk memeriksa kode yang tidak menutup koneksi dengan anggun.
Misalnya, dengan SQL konektor Saya di Python, gunakan close()
metode objek koneksi untuk menutup koneksi. Berikut adalah contoh fungsi yang membuat koneksi ke database, melakukan query, dan menutup koneksi:
import mysql.connector def execute_query(query): # Establish a connection to the database connection = mysql.connector.connect( host="your_host", user="your_username", password="your_password", database="your_database" ) try: # Create a cursor object cursor = connection.cursor() # Execute the query cursor.execute(query) # Fetch and process the results results = cursor.fetchall() for row in results: print(row) finally: # Close the cursor and connection cursor.close() connection.close()
Dalam contoh ini, connection.close()
metode ini dipanggil di finally
blok untuk memastikan bahwa koneksi ditutup, apakah pengecualian terjadi atau tidak.