Baru-baru ini CPU server saya berjalan sangat tinggi.
Rata-rata beban CPU 13,91 (1 mnt) 11,72 (5 mnt) 8,01 (15 mnt) dan situs saya hanya mengalami sedikit peningkatan traffic.
Setelah menjalankan perintah teratas, saya melihat MySQL menggunakan CPU 160%!
Baru-baru ini saya telah mengoptimalkan tabel dan saya telah beralih ke koneksi persisten. Mungkinkah ini yang menyebabkan MySQL menggunakan CPU dalam jumlah tinggi?
Jawaban:
Pertama, saya katakan Anda mungkin ingin mematikan koneksi yang terus-menerus karena mereka hampir selalu lebih berbahaya daripada baik.
Kedua, saya katakan Anda ingin memeriksa ulang pengguna MySQL Anda, hanya untuk memastikan tidak ada orang yang bisa terhubung dari server jauh. Ini juga merupakan hal keamanan utama untuk diperiksa.
Ketiga saya katakan Anda ingin mengaktifkan MySQL Slow Query Log untuk mengawasi pertanyaan yang membutuhkan waktu lama, dan menggunakannya untuk memastikan Anda tidak memiliki pertanyaan yang mengunci tabel kunci terlalu lama.
Beberapa hal lain yang dapat Anda periksa adalah menjalankan kueri berikut saat beban CPU tinggi:
Ini akan menunjukkan kepada Anda setiap kueri yang sedang berjalan atau dalam antrian untuk menjalankan, apa kueri itu dan apa yang dilakukannya (perintah ini akan memotong kueri jika terlalu panjang, Anda dapat menggunakan SHOW FULL PROCESSLIST untuk melihat teks kueri lengkap) .
Anda juga ingin mengawasi hal-hal seperti ukuran buffer, cache tabel , cache kueri , dan innodb_buffer_pool_size (jika Anda menggunakan tabel innodb) karena semua alokasi memori ini dapat memengaruhi kinerja kueri yang dapat menyebabkan MySQL menjadi makan CPU.
Anda mungkin juga ingin memberikan bacaan berikut karena mengandung beberapa informasi yang baik.
Ini juga merupakan ide yang sangat bagus untuk menggunakan profiler. Sesuatu yang dapat Anda aktifkan saat Anda inginkan yang akan menunjukkan kepada Anda apa permintaan aplikasi Anda berjalan, jika ada permintaan duplikat, berapa lama mereka mengambil, dll, dll. Contoh dari sesuatu seperti ini adalah yang saya sedang mengerjakan disebut PHP Profiler tetapi ada banyak di luar sana. Jika Anda menggunakan perangkat lunak seperti Drupal, Joomla atau Wordpress Anda akan ingin bertanya-tanya di dalam komunitas karena mungkin ada modul yang tersedia untuk mereka yang memungkinkan Anda untuk mendapatkan informasi ini tanpa perlu mengintegrasikan apa pun secara manual.
sumber
Karena ini adalah pos teratas jika Anda menggunakan atau menggunakan beban CPU MySQL tinggi, saya akan menambahkan jawaban tambahan:
Pada tanggal 1 Juli 2012, lompatan kedua ditambahkan ke waktu UTC saat ini untuk mengkompensasi rotasi bumi yang melambat akibat pasang surut. Saat menjalankan ntp (atau ntpd) detik ini ditambahkan ke jam komputer / server Anda. MySQLd sepertinya tidak menyukai detik tambahan ini pada beberapa OS, dan menghasilkan beban CPU yang tinggi. Perbaikan cepat adalah (sebagai root):
sumber
date
" && service ntp mulai penggunaan CPU MySQL langsung turun dari 50 - 100% ke 0 - 1%sudo service ntpd stop
pada konfigurasi ini.Jika server ini dapat dilihat oleh dunia luar, ada baiknya memeriksa apakah ada banyak permintaan untuk terhubung dari dunia luar (yaitu orang yang mencoba menerobos ke dalamnya)
sumber