Artikel ini adalah artikel cermin dari terjemahan mesin, silakan klik di sini untuk melompat ke artikel aslinya.

Melihat: 33231|Jawab: 6

[Sumber] MySQL menganalisis penggunaan CPU yang tinggi dalam situasi konkurensi tinggi

[Salin tautan]
Diposting pada 05/09/2017 20.23.59 | | | |


Baru-baru ini, karena beberapa alasan, jumlah kunjungan situs web meningkat tajam dan dari angka tersebut, dapat dilihat bahwa jumlah koneksi bersamaan lebih dari 1.200

Karena konfigurasi servernya sangat rendah, 1 core dan memori 2G, dan kemudian website sangat lambat untuk diakses ketika ada banyak orang


Kami menggunakan perintah atas untuk memeriksa, mysql memakan banyak CPU dan memori, dan proses lainnya adalah php-fpm yang memakan CPU dan memori, yang tidak terlalu tinggi

Jika mysql berjalan normal, itu adalah bahwa beberapa pernyataan SQL di PHP menyebabkan masalah ditemukan, dan pengguna root memasuki manajemen mysql
mysql -u root -p
Masukkan kata sandi, lalu masukkan perintah berikut




Dengan perintah ini, kita dapat melihat bahwa database terus-menerus menjalankan operasi penghapusan dengan kondisi where.



pre_k_spider tabel ini adalah tabel yang mencatat akses laba-laba, mungkin disebabkan oleh plugin yang diinstal

Kita dapat melihat bahwa tabel pre_k_spider memiliki lebih dari 100.000 catatan, dan kueri membutuhkan waktu 33 detik



Kosongkan tabel ini dengan tegas, lalu buka latar belakang manajemen untuk menutup plug-in tabel yang relevan dan mengembalikannya ke normal!









Mantan:Layanan Pengenalan Kode Verifikasi Alibaba Cloud Cloud Marketplace
Depan:mysql 5.6.21 untuk melihat file konfigurasi my.cnf
 Tuan tanah| Diposting pada 06/09/2017 09.32.56 |


Hari ini situs web macet lagi, dan banyak tidur ditemukan

Penyebab tidur:

1 Program klien tidak memanggil mysql_close() sebelum keluar.

2 Klien telah tidur lebih dari wait_timeout atau interactive_timeout detik tanpa mengeluarkan permintaan apa pun ke server.

3 Program klien berakhir tiba-tiba di tengah transfer data

Jika jumlah proses tidur dalam periode yang sama terlalu tinggi, dan jumlah total koneksi di status lain melebihi nilai max_connection, maka MySQL tidak dapat lagi memproses permintaan apa pun kecuali pengguna root, tidak dapat membuat koneksi dengan permintaan apa pun, atau langsung hang

Solusi:

1. Pertama, periksa apakah program Anda menggunakan metode pconnect, dan kedua, periksa apakah mysql_close() dipanggil tepat waktu sebelum halaman dieksekusi. Cobalah untuk tidak menggunakan metode pconnect, yaitu menggunakan mysql_connect. Saat program dijalankan, mysql_close harus dipanggil secara eksplisit

2. Tambahkan wait_timeout dan interactive_timeout ke my.cnf, atur nilainya lebih kecil, secara default nilai wait_timeout adalah 8 jam, Anda dapat mengubahnya menjadi 1 jam, atau setengah jam. Dengan cara ini mysql akan mematikan koneksi mati lebih cepat. Cegah jumlah total koneksi melebihi nilai max_connection.

wait_timeout terlalu besar akan menyebabkan sejumlah besar proses SLEEP di MySQL dirilis tepat waktu, menyeret kinerja sistem, tetapi jika pengaturannya terlalu kecil, Anda mungkin mengalami masalah seperti "MySQL telah hilang"

Tetapkan nilai max_connection ke nilai yang lebih tinggi, tetapi ini jelas tidak sesuai, semakin banyak koneksi yang Anda miliki, semakin banyak tekanan yang ditimbulkannya pada server Anda. Faktanya, koneksi itu berlebihan, dan membunuhnya sesegera mungkin adalah kebijakan terbaik.

3. Analisis kueri SQL sistem langkah demi langkah, temukan SQL yang terlalu lambat, dan optimalkan



1) interactive_timeout:
Arti parameter: Jumlah detik server menunggu aktivitas sebelum mematikan koneksi interaktif. Klien interaktif didefinisikan sebagai klien yang menggunakan opsi CLIENT_INTERACTIVE di mysql_real_connect().
Parameter default: 28800 detik (8 jam)

(2)wait_timeout:
Arti parameter: Jumlah detik server menunggu aktivitas sebelum menutup koneksi non-interaktif.
Saat utas dimulai, nilai wait_timeout sesi diinisialisasi berdasarkan nilai wait_timeout global atau interactive_timeout global, tergantung pada jenis klien (ditentukan CLIENT_INTERACTIVE opsi koneksi mysql_real_connect()).
Parameter default: 28800 detik (8 jam)

Ada batas atas jumlah maksimum koneksi yang dapat didukung MySQL Server, karena setiap koneksi dibuat dan menghabiskan memori, jadi kami mengharapkan klien untuk memutuskan dan mengosongkan memori yang ditempati setelah terhubung ke MySQL Server untuk menangani operasi yang sesuai. Jika Server MySQL Anda memiliki sejumlah besar koneksi idle, tidak hanya akan menghabiskan memori dengan-, tetapi jika koneksi terus terakumulasi dan terbuka, mereka pada akhirnya akan mencapai jumlah maksimum koneksi di MySQL Server, yang akan melaporkan kesalahan 'terlalu banyak koneksi'. Pengaturan nilai wait_timeout harus dinilai sesuai dengan pengoperasian sistem. Setelah sistem berjalan untuk jangka waktu tertentu, Anda dapat memeriksa status koneksi sistem saat ini melalui perintah show processlist, jika Anda menemukan sejumlah besar proses yang terhubung dalam keadaan tidur, itu berarti pengaturan parameter terlalu besar, dan Anda dapat melakukan penyesuaian yang sesuai untuk membuat penyesuaian yang lebih kecil.


Perintah SQL:



Metode modifikasi ini ada diSetelah memulai ulang layanan mysql, itu akan menjadi tidak valid, jadi yang terbaik adalah mengonfigurasi kedua properti ini dalam file konfigurasi MySQL.

Ubah file my.cnf di bawah Linux:




Diposting pada 06/09/2017 11.15.15 |
Saya harus mendapatkan server tuan-budak
 Tuan tanah| Diposting pada 06/09/2017 11.15.49 |
vrchary Posted on 2017-9-6 11:15
Saya harus mendapatkan server tuan-budak

Alasan konfigurasi server Konfigurasi rendah   
 Tuan tanah| Diposting pada 06/09/2017 13.47.56 |
Memecahkan masalah "mysql-bin.000001" yang memakan banyak ruang
http://www.itsvse.com/thread-2694-1-1.html
(Sumber: Arsitek)

Setelah menginstal MySQL dengan port, setelah beberapa saat saya menemukan bahwa ruang /var tidak mencukupi, saya memeriksa dan menemukan bahwa mysql-bin.000001, mysql-bin.000002 dan file lainnya memakan ruang, jadi untuk apa file ini? Ini adalah log operasi database, seperti UPDATE tabel, atau HAPUS beberapa data, bahkan jika pernyataan tidak cocok dengan data, perintah ini akan disimpan dalam file log, termasuk waktu eksekusi setiap pernyataan, yang juga akan direkam.

Ini terutama dilakukan untuk dua tujuan berikut:
1: Pemulihan data
Jika database Anda mengalami masalah dan Anda memiliki cadangan sebelumnya, Anda dapat melihat file log untuk mengetahui perintah mana yang menyebabkan masalah database Anda dan menemukan cara untuk memulihkan kehilangan.
2: Sinkronkan data antara server master-slave
Semua operasi pada server utama dicatat dalam log yang dapat digunakan server slave untuk memastikan bahwa keduanya disinkronkan.

Tutup saja log


 Tuan tanah| Diposting pada 09/10/2017 14.33.30 |
mysqld terlalu CPU menempati Windows di bawah ini



Solusi: Mengoptimalkan pernyataan SQL
Diposting pada 30/12/2021 23.15.36 |
Dukung itu!!!!!!!!!!!!!!!!
Sanggahan:
Semua perangkat lunak, materi pemrograman, atau artikel yang diterbitkan oleh Code Farmer Network hanya untuk tujuan pembelajaran dan penelitian; Konten di atas tidak boleh digunakan untuk tujuan komersial atau ilegal, jika tidak, pengguna akan menanggung semua konsekuensi. Informasi di situs ini berasal dari Internet, dan sengketa hak cipta tidak ada hubungannya dengan situs ini. Anda harus sepenuhnya menghapus konten di atas dari komputer Anda dalam waktu 24 jam setelah pengunduhan. Jika Anda menyukai program ini, harap dukung perangkat lunak asli, pembelian pendaftaran, dan dapatkan layanan asli yang lebih baik. Jika ada pelanggaran, silakan hubungi kami melalui email.

Mail To:help@itsvse.com