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

Andi Yolanda Sagita

2109116023


Ketika anda harus laporan pengguna, bagaimana Anda memulai men-debug kecepatan server?

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? Perintah ssh memiliki tiga tingkat debug, yang masing-masing memberi Anda banyak informasi bahkan sebelum Anda berada di sistem. Untuk mengaktifkan debug, cukup tambahkan v tambahan ke opsi -v. Misalnya, debug level tiga, yang saya gunakan secara eksklusif, adalah:

 

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

The "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 andsar teratas.

 

Memeriksa penggunaan CPU dengan top

Utilitas teratas memberi Anda tampilan waktu nyata tentang apa yang terjadi dengan server. Secara default, saat dimulai dari atas, 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 mewakili jumlah CPU yang dikonsumsi oleh proses pengguna.

sy: Persentase ini menunjukkan jumlah CPU yang dikonsumsi 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, secara umum, jika Anda melihat rata-rata satu menit melebihi jumlah CPU fisik yang Anda miliki, maka sistem kemungkinan besar terikat dengan CPU.

 

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

 

Memeriksa semua "Top 3" dengan sar

Untuk data kinerja CPU historis, saya mengandalkan perintah sar, yang disediakan oleh paket sysstat. Pada sebagian besar versi server Linux, sysstat diinstal secara default, tetapi jika tidak, Anda dapat menambahkannya dengan pengelola paket distro Anda. Utilitas sar 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.


Seperti di atas, 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, perintah sar 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 dicari dalam penggunaan RAM adalah %memused dan %commit. Sebuah kata singkat tentang bidang %commit: Bidang ini dapat ditampilkan di atas 100% karena kernel Linux secara rutin melakukan overcommit RAM. Jika %commit secara konsisten melebihi 100%, hasil ini bisa 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, melihat %util dan %await akan memberi Anda gambaran keseluruhan yang baik tentang I/O disk pada sistem. Bidang %util cukup jelas: Ini adalah penggunaan perangkat itu. Bidang menunggu berisi jumlah waktu yang dihabiskan I/O di penjadwal. 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 itu 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 dalam bulan yang ingin Anda cari).

 

Pada titik ini, saya biasanya memiliki gagasan 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 untuk 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 waktu pemuatan CPU yang lebih tinggi. Apakah saat itu 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 perintah sar, yang biasanya membutuhkan waktu kurang dari 10 menit untuk saya jalankan, melakukan banyak hal untuk menghindari lebih banyak pertanyaan dan mencapai resolusi lebih cepat.

 

 

 

 

 

 

0 Komentar