Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Mysql jconnector menghabiskan 50% waktu di com.myql.jdbc.utils.ReadAheadInputStream.fill()

VisualVM menghitung utas sebagai menggunakan waktu CPU setiap kali JVM menganggapnya dapat dijalankan. Ini berarti bahwa setiap utas yang tidak menunggu di kunci dianggap dapat dijalankan, kurang lebih, termasuk utas yang menunggu I/O di kernel! Di sinilah besarnya penggunaan CPU di com.myql.jdbc.utils.ReadAheadInputStream.fill() datang dari. Jadi, alih-alih masalah CPU, Anda memiliki masalah I/O.

Ada beberapa hal yang dapat Anda lakukan di sisi JVM, tetapi tidak banyak pengoptimalan langsung:

  1. Ubah ukuran kumpulan koneksi. 1.000 kueri bersamaan adalah lot . Kecuali jika instance MySQL Anda benar-benar masif, ia akan mengalami masalah dalam menangani tingkat beban itu, dan menghabiskan banyak waktu hanya dengan beralih antar kueri. Coba turunkan ukuran kolam, menjadi 250 atau bahkan 50, dan lakukan benchmark di sana.
  2. Lakukan kueri lebih sedikit atau lebih kecil. Jika aplikasi Anda kecil, mungkin terlihat sepele bahwa setiap baris dari setiap kueri diperlukan, tetapi mungkin aplikasi Anda lebih besar dari itu. Apakah tempat berbeda yang menanyakan data yang sama, atau dapatkah dua kueri berbeda digabungkan menjadi satu yang akan memenuhi keduanya?


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kesalahan:koneksi hulu ditutup sebelum waktunya saat membaca tajuk respons dari hulu [uWSGI/Django/NGINX]

  2. bergabung bersyarat di mysql

  3. Cara menghasilkan DDL untuk semua tabel dalam database di MySQL

  4. Bagaimana cara memasukkan post_id ke dalam database mysql

  5. Ubah nama create_at Laravel dan updated_at