Apabila ralat MySQL berlaku, langkah -langkah berikut dapat diselesaikan melalui langkah -langkah berikut: 1. Log masuk ke MySQL dan laksanakan status tunjukkan seperti 'threads_connected' dan tunjukkan pembolehubah seperti 'max_connections' untuk mengesahkan sama ada bilangan sambungan melebihi had; 2. Periksa sama ada terdapat petikan untuk "terlalu banyak sambungan" dalam log; 3. Buat sementara waktu tingkatkan nilai max_connections dan berkuat kuasa dengan menetapkan secara dinamik atau mengubah suai fail konfigurasi; 4. Semak senarai proses dan bunuh untuk membebaskan sambungan terbiar; 5. Pengoptimuman jangka panjang termasuk mengkonfigurasi parameter kolam sambungan, mengoptimumkan pertanyaan perlahan, memperkenalkan lapisan cache, melakukan fius had semasa, dan mewujudkan mekanisme pemantauan dan penggera.
MySQL mempunyai ralat "terlalu banyak sambungan", biasanya kerana bilangan sambungan mencapai had sistem. Masalah ini nampaknya mudah, tetapi jika tidak ditangani dalam masa, ia akan menjejaskan kestabilan perkhidmatan. Alasan teras ialah bilangan sambungan semasa melebihi bilangan maksimum sambungan yang dibenarkan oleh MySQL .

Mari kita lihat bagaimana masalah ini berlaku dan bagaimana ia dapat diselesaikan dari beberapa perspektif yang sama.
Bagaimana untuk mengesahkan bahawa bilangan sambungan melebihi had?
Cara yang paling langsung ialah log masuk ke MySQL dan melaksanakan arahan berikut:

Tunjukkan status seperti 'threads_connected';
Perintah ini memaparkan bilangan sambungan yang ditubuhkan sekarang. Bandingkan nilai max_connections
:
Tunjukkan pembolehubah seperti 'max_connections';
Sekiranya bekas itu dekat dengan atau sama dengan yang terakhir, maka masalahnya terletak di sini.

Anda juga boleh memerhatikan log MySQL. Biasanya terdapat petikan seperti "terlalu banyak sambungan" apabila terdapat penolakan sambungan.
Mengapa terdapat terlalu banyak sambungan?
Terdapat beberapa sebab umum untuk masalah ini:
Permohonan tidak menutup sambungan pangkalan data dengan betul
Sebagai contoh, jika anda tidak memanggil Tutup () selepas menggunakan sambungan dalam kod, atau jika anda menggunakan kolam sambungan tetapi sumbernya tidak dikeluarkan.Sebilangan besar permintaan dipanggil ke pangkalan data dalam masa yang singkat
Terutama dalam senario konvensional yang tinggi, seperti jualan kilat, snap-up dan aktiviti lain, jika tidak ada kawalan had semasa, mudah untuk meletupkan bilangan sambungan dengan serta-merta.Konfigurasi Kolam Sambungan yang Tidak Beratur
Sebagai contoh, bilangan maksimum kolam sambungan ditetapkan terlalu tinggi, atau sambungan terbiar tidak dikeluarkan dalam masa.Pertanyaan perlahan menyebabkan penggunaan jangka panjang sambungan
Bagaimana menyelesaikan masalah ini buat sementara waktu?
Apabila kecemasan berlaku, anda boleh mencuba cara berikut untuk mengurangkannya:
Ubah suai fail konfigurasi MySQL (biasanya my.cnf atau my.ini) dan tingkatkan nilai
max_connections
:[mysqld] max_connections = 1000
Kemudian mulakan semula MySQL dan berkuatkuasa.
Jika anda tidak dapat memulakan semula, anda boleh menyesuaikan secara dinamik dalam MySQL (berhati -hati untuk tidak menetapkannya terlalu tinggi):
Tetapkan global max_connections = 1000;
Lihat senarai sambungan semasa dan cabut sambungan secara manual:
Tunjukkan senarai proses; Bunuh <nonnection_id>;
Perhatikan bahawa hanya membunuh sambungan yang mempunyai status tidur atau belum bertindak balas untuk masa yang lama.
Apakah cadangan untuk pengoptimuman jangka panjang?
Pada dasarnya mengelakkan masalah ini, kita perlu bermula dari tahap seni bina dan kod:
Konfigurasi Parameter Kolam Sambungan
Kawal bilangan maksimum sambungan dan tetapkan mekanisme pemulihan masa yang sesuai dan terbiar. Sebagai contoh, kolam sambungan arus perdana seperti HikariCP dan Druid menyokong konfigurasi ini.Mengoptimumkan pertanyaan lambat
Gunakan log pertanyaan yang perlahan untuk mencari pernyataan yang memakan masa, menambah indeks, memecah pertanyaan kompleks, dan mengurangkan pengimbasan jadual penuh.Memperkenalkan lapisan cache
Letakkan beberapa data yang berbunyi lebih banyak dan menulis kurang ke dalam REDIS atau cache tempatan untuk mengurangkan akses langsung ke pangkalan data.Buat mekanisme pengehadan dan fius semasa
Menambah strategi pembatas semasa di lapisan perniagaan, seperti berapa banyak permintaan yang dibenarkan untuk mengakses pangkalan data sesaat, dan jika ia melebihi ia, ia akan beratur atau ralat akan dikembalikan.Pemantauan dan Penggera
Gunakan Prometheus Grafana atau alat lain untuk memantau bilangan sambungan dalam masa nyata dan amaran terlebih dahulu.
Pada dasarnya kaedah ini. Masalah ini sendiri tidak rumit, tetapi mudah diabaikan, terutamanya apabila terdapat sedikit sambungan dalam peringkat pembangunan, dan ia akan didedahkan sebaik sahaja ujian tekanan dilancarkan. Hanya dengan mengesan dan mengendalikan awal, perkhidmatan boleh dielakkan dari luput.
Atas ialah kandungan terperinci mysql terlalu banyak ralat sambungan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Kunci untuk memasang MySQL 8.0 adalah mengikuti langkah -langkah dan memberi perhatian kepada masalah biasa. Adalah disyorkan untuk menggunakan pakej pemasangan MSI pada Windows. Langkah -langkah termasuk memuat turun pakej pemasangan, menjalankan pemasang, memilih jenis pemasangan, menetapkan kata laluan root, membolehkan permulaan perkhidmatan, dan memberi perhatian kepada konflik pelabuhan atau mengkonfigurasi versi zip secara manual; Linux (seperti Ubuntu) dipasang melalui APT, dan langkah -langkahnya adalah untuk mengemas kini sumber, memasang pelayan, menjalankan skrip keselamatan, memeriksa status perkhidmatan, dan mengubah suai kaedah pengesahan root; Tidak kira platform mana, anda harus mengubah suai kata laluan lalai, membuat pengguna biasa, menyediakan firewall, menyesuaikan fail konfigurasi untuk mengoptimumkan set aksara dan parameter lain untuk memastikan keselamatan dan penggunaan biasa.

Dayakan sambungan penyulitan SSL/TLS MySQL secara berkesan dapat mencegah kebocoran data. Langkah -langkah khusus adalah seperti berikut: 1. Sahkan bahawa versi MySQL menyokong SSL, dan periksa sama ada nilai pulangan adalah ya melalui showvariablike'have_ssl '; 2. Sediakan fail sijil format PEM (CA.PEM, Server-Cert.PEM, Server-Key.PEM), yang boleh dihasilkan melalui OpenSSL atau diperoleh dari CA; 3. Ubah suai fail konfigurasi MySQL, tambah laluan SSL-CA, SSL-CERT dan SSL-kunci di bahagian [MySQLD] dan mulakan semula perkhidmatan; 4. Memaksa pelanggan menggunakan SSL, dan gunakan CreateUser

Nama pengguna lalai MySQL biasanya 'root', tetapi kata laluan berbeza mengikut persekitaran pemasangan; Dalam beberapa pengagihan Linux, akaun root boleh disahkan oleh pemalam auth_socket dan tidak boleh log masuk dengan kata laluan; Apabila memasang alat seperti XAMPP atau WAMP di bawah Windows, pengguna root biasanya tidak mempunyai kata laluan atau menggunakan kata laluan biasa seperti root, mysql, dan lain -lain; Jika anda lupa kata laluan, anda boleh menetapkan semula dengan menghentikan perkhidmatan MySQL, bermula-Skip-Grant-Tables mod, mengemas kini jadual MySQL.user untuk menetapkan kata laluan baru dan memulakan semula perkhidmatan; Ambil perhatian bahawa versi MySQL8.0 memerlukan pemalam pengesahan tambahan.

Log Perduaan MySQL (BINLOG) adalah log binari yang merekodkan operasi perubahan pangkalan data, dan digunakan dalam senario seperti pemulihan data, replikasi master-hamba dan pengauditan. 1. Binlog adalah fail log logik yang merekodkan semua peristiwa operasi yang mengubah suai data, seperti memasukkan, mengemaskini, memadam, dan lain -lain, tetapi tidak termasuk penyata pertanyaan pilih atau tunjukkan; 2. Penggunaan utamanya termasuk: Pemulihan Data Melalui Log Replay, Menyokong Penyalinan Master-Hamba untuk Mencapai Penyegerakan Data, dan digunakan untuk menganalisis rekod operasi untuk memenuhi keperluan audit; 3. Dayakan BinLog memerlukan tetapan log-bin, pelayan-id, binlog_format dan expire_logs_day dalam fail konfigurasi.

Terdapat tiga cara untuk mengubah suai atau menetapkan semula kata laluan pengguna MySqlroot: 1. Gunakan perintah alteruser untuk mengubah suai kata laluan sedia ada, dan laksanakan pernyataan yang sepadan selepas log masuk; 2. Jika anda lupa kata laluan anda, anda perlu menghentikan perkhidmatan dan memulakannya dalam mod-SKIP-Grant-tables sebelum mengubah suai; 3. Perintah Mysqladmin boleh digunakan untuk mengubahnya secara langsung dengan mengubahnya. Setiap kaedah sesuai untuk senario yang berbeza dan urutan operasi tidak boleh merosakkan. Selepas pengubahsuaian selesai, pengesahan mesti dibuat dan perlindungan kebenaran mesti diberi perhatian.

GTID (Pengenal Transaksi Global) menyelesaikan kerumitan replikasi dan failover dalam pangkalan data MySQL dengan memberikan identiti unik kepada setiap transaksi. 1. Ia memudahkan pengurusan replikasi, secara automatik mengendalikan fail log dan lokasi, yang membolehkan pelayan hamba meminta urus niaga berdasarkan GTID yang dilaksanakan terakhir. 2. Pastikan konsistensi di seluruh pelayan, pastikan setiap transaksi digunakan hanya sekali pada setiap pelayan, dan elakkan ketidakkonsistenan data. 3. Meningkatkan kecekapan penyelesaian masalah. GTID termasuk nombor UUID pelayan dan siri, yang mudah untuk mengesan aliran transaksi dan mencari masalah dengan tepat. Ketiga -tiga kelebihan teras ini menjadikan replikasi MySQL lebih mantap dan mudah dikendalikan, meningkatkan kebolehpercayaan sistem dan integriti data.

Failover Perpustakaan Utama MySQL terutamanya termasuk empat langkah. 1. Pengesanan kesalahan: Secara kerap memeriksa proses perpustakaan utama, status sambungan dan pertanyaan mudah untuk menentukan sama ada ia adalah downtime, menyediakan mekanisme semula untuk mengelakkan salah laku, dan boleh menggunakan alat seperti MHA, Orchestrator atau yang disimpan untuk membantu dalam pengesanan; 2. Pilih Perpustakaan Utama Baru: Pilih Perpustakaan Hamba yang paling sesuai untuk menggantikannya mengikut Kemajuan Penyegerakan Data (SecondS_Behind_Master), integriti data binLog, kelewatan rangkaian dan keadaan beban, dan melakukan pampasan data atau campur tangan manual jika perlu; 3. Tukar Topologi: Titik perpustakaan hamba lain ke perpustakaan induk baru, laksanakan semula semula atau aktifkan GTID, kemas kini konfigurasi VIP, DNS atau proksi ke

ToalteralargeProductionTableWithoutLonglocks, useOnlineddltechniques.1) mengenal pasti Inslowson
