GNU/Linux >> Belajar Linux >  >> Linux

Memecahkan masalah server lambat:Cara memeriksa CPU, RAM, dan Disk I/O

Jika Anda telah melakukan pekerjaan sysadmin cukup lama, Anda telah melihat insiden "Server lambat" yang ditakuti. Untuk waktu yang lama, insiden semacam ini akan membuat perut saya sakit. Bagaimana Anda memecahkan masalah sesuatu yang begitu subjektif? "Lambat" pengguna sehari-hari mungkin hanya disebabkan oleh proses lain (terjadwal atau tidak) yang berjalan dan menghabiskan lebih banyak sumber daya daripada biasanya, atau mungkin ada sesuatu yang salah dengan server.

Ketika saya pertama kali mulai bekerja sebagai sysadmin, saya akan langsung menjawab dengan:"Saya memerlukan informasi lebih lanjut tentang ini." Nah, biasanya pengguna tidak dapat memberikan info lebih lanjut, karena mereka tidak tahu apa yang terjadi di balik layar atau bagaimana menjelaskan apa yang mereka lihat selain "hanya lambat". Saat ini, bahkan sebelum saya membalas pengguna, saya memeriksa beberapa hal.

Login awal

Ada banyak hal yang dapat Anda ketahui dengan masuk ke host. Bisakah Anda masuk sama sekali? Apakah loginnya lambat atau hang? ssh command memiliki tiga tingkat debug, yang masing-masing memberi Anda banyak informasi bahkan sebelum Anda menggunakan sistem. Untuk mengaktifkan debug, cukup tambahkan v tambahan ke -v pilihan. Misalnya, debug level tiga, yang saya gunakan secara eksklusif, adalah:

[~]$ ssh -vvv hostname.domain.com

"Big 3" (alias CPU, RAM, dan Disk I/O)

Sekarang, mari kita lihat tiga penyebab terbesar perlambatan server:CPU, RAM, dan I/O disk. Penggunaan CPU dapat menyebabkan kelambatan keseluruhan pada host, dan kesulitan menyelesaikan tugas secara tepat waktu. Beberapa alat yang saya gunakan saat melihat CPU adalah top dansar .

Memeriksa penggunaan CPU dengan top

top utilitas memberi Anda tampilan waktu nyata tentang apa yang terjadi dengan server. Secara default, ketika top dimulai, ini menunjukkan aktivitas untuk semua CPU:

Tampilan ini dapat diubah dengan menekan tombol angka 1, yang menambahkan lebih banyak detail mengenai nilai penggunaan untuk setiap CPU:

Beberapa hal yang harus dicari dalam tampilan ini adalah rata-rata beban (ditampilkan di sisi kanan baris atas), dan nilai berikut untuk setiap CPU:

  • us :Persentase ini menunjukkan jumlah CPU yang digunakan oleh proses pengguna.
  • sy :Persentase ini menunjukkan jumlah CPU yang digunakan oleh proses sistem.
  • id :Persentase ini menunjukkan seberapa menganggur setiap CPU.

Masing-masing dari ketiga nilai ini dapat memberi Anda ide waktu nyata yang cukup baik tentang apakah CPU terikat oleh proses pengguna atau proses sistem.

Untuk benar-benar menjelaskan rata-rata beban akan membutuhkan artikel tersendiri. Untuk tujuan artikel ini, saya akan berbicara secara umum. Tiga nilai rata-rata beban dari kiri ke kanan mewakili rata-rata satu menit, lima menit, dan 15 menit. Sekali lagi, berbicara sangat umumnya, jika Anda melihat rata-rata satu menit melebihi jumlah CPU fisik yang Anda miliki, maka kemungkinan besar sistem terikat dengan CPU.

Catatan: Untuk informasi lebih lanjut tentang rata-rata pemuatan dan mengapa beberapa orang menganggapnya sebagai angka konyol, lihat penelitian mendalam Brendan Gregg.

Memeriksa semua "3 Besar" dengan sar

Untuk data kinerja CPU historis, saya mengandalkan sar perintah, yang disediakan oleh sysstat kemasan. Pada sebagian besar versi server Linux, sysstat diinstal secara default, tetapi jika tidak, Anda dapat menambahkannya dengan pengelola paket distro Anda. sar utilitas mengumpulkan data sistem setiap 10 menit melalui tugas cron yang terletak di /etc/cron.d/sysstat (CentOS 7.6). Berikut cara memeriksa semua "3 Besar" menggunakan sar .

Catatan: Jika Anda baru saja menginstal sar untuk mengikuti artikel ini, beri perintah beberapa waktu untuk merekam data terlebih dahulu.

Perintah sar -u memberi Anda info tentang semua CPU di sistem, mulai tengah malam:

Seperti halnya top , hal utama yang harus diperiksa di sini adalah %user , %system , %iowait , dan %idle . Informasi ini dapat memberi tahu Anda seberapa jauh server mengalami masalah.

Secara keseluruhan, sar perintah dapat memberikan banyak informasi. Karena artikel ini hanya menjelaskan pemeriksaan cepat tentang apa yang terjadi di server, lihat man sar untuk memecah info ini lebih jauh.

Untuk memeriksa kinerja RAM, saya menggunakan sar -r , yang memberi Anda penggunaan memori hari itu:

Hal utama yang harus diperhatikan dalam penggunaan RAM adalah %memused dan %commit . Sepatah kata tentang %commit field:Kolom ini dapat ditampilkan di atas 100% karena kernel Linux secara rutin melakukan overcommit pada RAM. Jika %commit secara konsisten di atas 100%, hasil ini dapat menjadi indikator bahwa sistem membutuhkan lebih banyak RAM.

Untuk kinerja I/O disk, saya menggunakan sar -d , yang memberi Anda output I/O disk hanya dengan menggunakan nama perangkat. Untuk mendapatkan nama perangkat, gunakan sar -dP :

Untuk keluaran ini, lihat %util dan %await akan memberi Anda gambaran keseluruhan yang baik tentang disk I/O pada sistem. %util bidang ini cukup jelas:Ini adalah penggunaan perangkat itu. await field berisi jumlah waktu yang dihabiskan I/O dalam scheduler. Menunggu diukur dalam milidetik, dan di lingkungan saya, saya telah melihat bahwa apa pun yang lebih besar dari 50 md mulai menimbulkan masalah. Ambang batas tersebut mungkin berbeda di lingkungan Anda.

Jika salah satu dari perintah ini menunjukkan masalah, Anda dapat kembali untuk melihat kapan masalah server dimulai dengan menggunakan sar {-u, -r, -d, -dP} -f /var/log/sa/sa<XX> (di mana XX adalah hari dari bulan yang ingin Anda cari).

Pada titik ini, saya biasanya memiliki ide bagus tentang apa yang sedang terjadi di server, dan apa yang telah terjadi selama 48 jam terakhir atau lebih. Saya akan membalas pengguna dengan tanggapan yang lebih terinformasi. Misalnya:"Saya tidak melihat indikasi kelambatan host dalam 24 jam terakhir. Coba gunakan profil dempul baru ke ssh masuk, dan beri tahu saya jika Anda terus mengalami masalah."

Contoh lain:"Saya tidak melihat apa pun yang saat ini menyebabkan masalah pada host ini, tetapi saya melihat beberapa beban CPU yang lebih tinggi $time . Apakah itu ketika Anda melihat masalah? Jika demikian, coba sekarang dan beri tahu saya jika Anda terus melihat masalah."

Anda mendapatkan idenya. Memiliki informasi yang diberikan dengan melihat login awal dan kemudian menjalankan beberapa sar perintah, yang biasanya membutuhkan waktu kurang dari 10 menit untuk saya jalankan, melakukan banyak hal untuk menghindari lebih banyak pertanyaan dan mencapai resolusi lebih cepat.


Linux
  1. Linux – Bagaimana Cara Memantau Disk I/o Di Direktori Tertentu?

  2. Cara Memeriksa Ukuran Total RAM dan Penggunaan Memori di Linux

  3. Bagaimana cara memeriksa ruang disk di Ubuntu 20.04 dan 20.10?

  1. Cara memeriksa Versi OS dan Linux

  2. Bagaimana Cara Memeriksa Seluruh Hard Disk Untuk Kesalahan Dan Bad Sector?

  3. Bagaimana cara memeriksa penggunaan I/O disk per proses?

  1. Bagaimana cara memeriksa penggunaan disk dari direktori dan penggunaan bandwidth?

  2. Bagaimana cara membersihkan cache I/O disk di Linux?

  3. I/O disk OOM Linux. Juga:tukar, apa gunanya?