ASP.NET CPU Tinggi Membawa Server ke Lutut mereka

8

Ok, build baru kami memiliki lonjakan cpu 100% di setiap server secara acak. Untuk jangka waktu lama, itu membuat situs benar-benar tidak responsif - ini akan menjadi saat puncak ketika orang-orang di berbagai negara masuk ke situs dll.

Kami telah melihat perfmom, memori profiler, profiler CLR, sql profiler, profiler semut gerbang merah, mencoba pengujian beban dalam UAT - tetapi bahkan tidak dapat mereproduksi masalah. Ini bisa berarti hanya ribuan pengguna yang memukul situs langsung yang menyebabkannya terjadi.

Salah satu pola yang kami perhatikan adalah bahwa kode baru - build rusak - sebenarnya menggunakan thread yang lebih sedikit.

Kami juga menggunakan pegas untuk IOC - apakah ini memiliki reputasi bed?

Untuk memperburuk keadaan, kami tidak dapat menggunakan untuk hidup karena dampak bisnis - jadi tidak dapat mempersempit masalah menjadi subset dari fitur baru yang kami tambahkan.

Kami benar-benar hancur - adakah yang punya bekas luka pertempuran yang bisa menyelamatkan kami beberapa nyawa?


sumber
Apa yang dilaporkan oleh sensor suhu? Saya ingin tahu apakah catu daya Anda tidak dapat mengikuti. (Tidak tahu bagaimana cara memeriksa ini.)
sarnold
2
Ketika Anda mengatakan menurunkan server, dapatkah Anda menambahkan lebih detail, apakah itu BSOD? Maksud Anda restart atau mungkin domain aplikasi restart.
Tidak ada cara sama sekali "100% cpu spike " bisa "menjatuhkan" server. Itu harus dipatok pada 100% untuk waktu yang cukup lama, ditambah dengan masalah dengan disipasi panas.
Andrew Barber
1
Apa yang dilakukannya ?? Proses mana yang menggunakan CPU di puncak? Ini adalah pertanyaan yang paling penting.
Aliostad
Diperbarui pertanyaan saya - apakah ini lebih baik? Terima kasih atas -1 :)

Jawaban:

3

Saya sarankan melakukan dump memori dan menganalisisnya di WinDdg dengan Sos. Saya memperbaiki beberapa masalah pada produksi kami, saya mungkin tidak akan dapat mendiagnosis tanpa WinDbg.

Tess Fernandez memiliki blog yang bagus di mana Anda dapat belajar cara menganalisis dump memori.


sumber
blog itu adalah sumber yang bagus dan kami telah menggunakannya. Masalah kita adalah kita tidak bisa menciptakan kembali masalah dan mendapatkan kesedihan.
1
Untuk menciptakan kembali masalah, Anda dapat memalu sistem pengujian Anda dengan jmeter ( jmeter.apache.org ) dan ab ( httpd.apache.org/docs/2.0/programs/ab.html ). Dengan ini, multicores, LAN cepat dan beberapa kolega, Anda harus bisa menekankan server cukup.
Roman
1

Ini biasanya disebabkan oleh pembersihan objek besar yang berumur panjang di GC ( stackoverflow mengalami masalah ini, lihat tautan ). Apakah Anda menyimpan banyak koleksi objek dalam cache atau sesi?

Penyerangan oleh GC

Saya juga merekomendasikan Anda membangun dan mengkonfigurasi server baru dalam produksi untuk menguji. Jika Anda memiliki kegilaan acak dan tidak tahu mengapa dan tidak bisa mereproduksinya, saya akan mengarahkan jari ke perangkat keras atau konfigurasi, bukan kode.

Rick Schott
sumber
Kami tidak dapat menempatkan kode baru secara langsung karena menambahkan fitur berita. Ketika kode aktif, penggunaan GC adalah sama - termasuk untuk generasi 2. Terima kasih - apakah Anda punya saran lagi?
Bukan tidak mungkin, tetapi perangkat keras dan konfigurasinya hampir sama dengan penyebaran terakhir yang telah kami kembalikan dan bekerja dengan sukses.
1

Apakah ini server virtual dengan sumber daya bersama atau server fisik? Jika yang pertama mungkin Anda bisa melihat mendedikasikan sumber daya ke server ini. Semoga berhasil...

Nigel Findlater
sumber
0

Coba gunakan cache serversebagai frontend like Apache Traffic Server (ATS).

Meskipun ini tidak akan menyelesaikan masalah, mungkin membantu untuk mengidentifikasi karena Anda pada saat yang sama akan memindahkan beban yang berpotensi berbahaya dari backend (melihat apakah frontend juga memiliki masalah) dan membuat hal-hal yang kurang dipanaskan di backend sehingga akan menjadi lebih mudah untuk melihat apa yang salah.

Gil
sumber
0

Mencoba menebak kesalahan tanpa data tidak ada gunanya. Ya, seseorang yang berada di stackoverflow atau di tim teknik Anda mungkin beruntung, tetapi itu hanya rekayasa yang buruk, dan Anda tidak dapat merencanakan berapa lama waktu yang Anda perlukan untuk mencoba setiap tebakan, dan jika Anda bahkan menemukan masalahnya.

  1. Anda harus repro masalah. Jmeter adalah awal yang baik karena luasnya, tetapi kami tidak dapat merekomendasikan alat yang tepat tanpa mengetahui arsitektur kami.
  2. Masuk secara khusus di lapisan aplikasi Anda adalah suatu keharusan. Anda dapat mengaktifkan jejak IIS untuk kinerja lambat, tetapi muppets di Microsoft membuatnya sehingga Anda tidak dapat menangkap seluruh aliran pipa saat lambat. Jika begitu sulit untuk repro, Anda benar-benar seperti beberapa log untuk membantu Anda mempersempit mana masalahnya. (seperti oh, setiap kali kami memanggil proc yang disimpan ini).

CPU 100% agak mencurigakan dalam arti bahwa itu tidak mungkin I / O (menyediakan db adalah kotak lain, database yang lambat seharusnya tidak menyebabkan 100% CPU pada server web). Anda perlu melihat lebih dekat ke rumah.

M Afifi
sumber