Bagaimana menemukan penyebab meningkatnya beban server

12

Saya mengalami masalah memuat dengan server saya dan meskipun saya seorang admin Linux yang agak berpengalaman, saya kehabisan ide sekarang.

Masalahnya adalah beban yang perlahan tapi terus meningkat di server tanpa sebab yang jelas.

Server adalah AMD Athlon (tm) 64 X2 Dual Core Processor 6000+ dengan 6GB RAM. Ini menjalankan Debian Stable dengan Linux gir 2.6.26-2-amd64 # 1 SMP Rabu 19 Agustus 22:33:18 UTC 2009 x86_64 GNU / Linux.

Server pada dasarnya menjalankan Lighttpd, beberapa proses PHP FastCGI dan database MySQL. Tugas server web tipikal.

CPU tidak pernah benar-benar habis dan memori terutama digunakan untuk buffer dan cache yang baik-baik saja. Saya mencoba untuk me-restart berbagai layanan untuk melihat apakah salah satu dari mereka akan mengurangi beban lagi, tetapi tidak berhasil.

Berikut ini adalah gambar yang menunjukkan beban, CPU dan IOStat:

Jadi, pertanyaannya adalah: Apa yang bisa menyebabkan beban yang perlahan tapi terus meningkat? Dan bagaimana saya mencari tahu apa yang bertanggung jawab?

Pembaruan: Saya lupa menyebutkan, ketika saya me-reboot server, bebannya akan turun menjadi sekitar 0,3 hingga 0,6 dan akan mulai naik lagi secara perlahan selama beberapa minggu ke depan.

Andreas Gohr
sumber
1
Gambar yang Anda poskan tidak lagi ada. Silakan mengunggahnya kembali jika Anda masih memiliki salinan.
Michael Hampton

Jawaban:

6

Setiap proses zombie menambahkan 1,0 ke beban. Anda mungkin melihat akumulasi zombie.


sumber
Iya. Periksa grafik " Jumlah Proses ".
Teddy
Jika itu benar, maka mengetik for N in {1..100} ; do sleep 60 & done ; exec sleep 500harus cukup untuk menyebabkan beban tinggi. Tapi ternyata tidak. Perintah itu menghasilkan 100 zombie, tetapi beban di komputer saya tetap di bawah 1.
kasperd
5

Saya menemukan petunjuk bagus untuk menjawab pertanyaan yang berbeda .

Mencari proses dalam keadaan 'D' menunjukkan empat proses PHP yang tampaknya menggantung cukup lama sesuai dengan "langkah-langkah" dalam kurva beban:

#> ps aux | awk '$8 ~ /D/  { print $0 }'
wiki      6651  0.0  0.0      0     0 ?        D    Oct04   0:41 [php-cgi]
bugs      6731  0.0  0.0      0     0 ?        D    Oct27   0:14 [php-cgi]
manpages  7536  0.0  0.0      0     0 ?        D    Oct30   0:21 [php5-cgi]
wiki     23847  0.0  0.0      0     0 ?        D    Oct06   1:32 [php-cgi]

Jadi ini tampaknya menjadi masalah. Saya sekarang perlu mencari tahu sementara proses-proses tersebut hang dan bagaimana cara memperbaikinya. Terimakasih semuanya.

Andreas Gohr
sumber
Jawaban ini memecahkan masalah saya. Beban meningkat dari 0,5 menjadi 350 dan terus naik. Itu karena proses zombie mencoba membaca folder jauh yang dihapus.
Philippe Delteil
2

Dugaan saya adalah server kelaparan IO, mungkin Anda harus menambahkan statistik iotop ke grafik

Saya ingin tahu apakah Anda dapat memiliki aktivitas per aplikasi io yang juga merupakan faktor untuk memuat server

http://rt.wiki.kernel.org/index.php/I/Otop_utility

alat lainnya adalah dstat

Mariuz
sumber
Saya menambahkan grafik untuk IOStat juga. IO disk tidak bertambah seperti bebannya. Apakah itu yang Anda tuju?
Andreas Gohr
Oh dan dstat terlihat bermanfaat. Saya harus membaca lebih banyak tentang itu.
Andreas Gohr
2

Jika itu I / O, maka dia akan melihat iowait (merah muda) pada grafik cpu.

3 bulan
sumber
0

Masalah seperti ini sering datang dari harddisk yang tidak cukup cepat untuk melayani data yang dibutuhkan oleh database MySQL dan server HTTP. Anda harus melihat perintah iostat


sumber
IO terlihat normal bagi saya. Dan itu tidak akan menjelaskan mengapa bebannya perlahan meningkat.
Andreas Gohr
-1

Secara umum, sebenarnya bukan hal yang buruk untuk memiliki beban server yang tinggi; itu berarti Anda tidak duduk diam dan melakukan lebih sedikit dari yang seharusnya. Kapasitas 80% -90% dari total kapasitas Anda (dengan ruang "burst") adalah yang biasanya dicari. Saya akan merekomendasikan memeriksa output mpstat dan vmstat. Secara khusus, 2 angka pertama dari vmstat dapat memberi Anda info yang lebih bermakna tentang bagaimana "dicadangkan" Anda dalam hal proses dalam menjalankan antrian. Kolom terakhir ("wa") dari output vmstat dapat memberi tahu Anda jika, dan untuk berapa lama, Anda menunggu penyelesaian I / O. Ukuran antrian run dan waktu tunggu I / O sering berkorelasi. Lihat juga sar (dari paket sysstat): yang memberi Anda pandangan rinci tentang apa yang terjadi selama periode waktu; metrik yang dicatatnya sangat teliti.


sumber