Tutorial penyelesaian penyelesaian CPU pelayan awan Alibaba

awan 2026-06-02 阅读 14
1

Untuk operasi, penyelenggaraan dan pengembangan, pesan penggera yang paling terbangun di tengah malam adalah "kadar penggunaan CPU sistem contoh ECS pelayan awan anda telah mencapai 100%."

Beban penuh CPU bermaksud bahawa semua kekuatan pengkomputeran pelayan dihimpit seketika, diikuti oleh laman web yang tersekat, lembur tindak balas API, sambungan pangkalan data penuh, dan seluruh perniagaan lumpuh. Menghadapi situasi ini, pemula sering bergegas ke konsol untuk memulakan semula pelayan. Walaupun memulakan semula dapat menyelamatkan kecemasan buat sementara waktu, jika punca tidak dijumpai, CPU masih akan meningkat hingga 100% lagi setelah 5 minit.

Tutorial hari ini akan membawa anda untuk menyiasat dan menyelesaikan masalah CPU pelayan Alibaba Cloud dengan tenang dan standard seperti veteran berpengalaman.

Tahap pertama: penyiasatan salah faham dan persiapan sebelum "berjumpa doktor"

Sebelum memulakan arahan, pergi dulu

Konsol Awan Alibaba

Lihat dan pantau pasaran dan sahkan petunjuk utama:

Jenis asas (siri T) integral CPU

Sekiranya anda membeli "contoh prestasi mendadak" Alibaba Cloud (seperti t5, t6), pelayan jenis ini biasanya menghadkan daya pengkomputeran CPU asas (misalnya, hanya 20%). Apabila perniagaan anda melebihi standard, anda akan menggunakan "mata CPU" untuk mendapatkan kuasa pengkomputeran penuh. Setelah integral habis, pelayan akan dipaksa untuk "membatasi kelajuan", menunjukkan bahawa CPU terkunci pada kuadapan rendah tertentu, dan kad sistem tidak dapat bergerak.

Penyelesaian: Sekiranya integrasi contoh prestasi tiba-tiba habis, sama ada hidupkan "mod tanpa kekangan prestasi" di konsol, atau tingkatkan secara langsung ke contoh "universal" atau "komputasi".

Sekiranya sekatan model perkakasan dikecualikan, ini bermaksud bahawa memang ada proses di dalam pelayan yang menggunakan kuasa pengkomputeran. Kita mesti log masuk ke sistem dan mula "menangkap pencuri".

Tahap kedua: langkah penuh penyelesaian CPU pelayan Linux

Pelayan Linux adalah kawasan kejadian tinggi dari ledakan CPU, yang kebanyakannya disebabkan oleh kod buruk, kesesuaian tinggi, atau Trojan perlombongan.

Langkah 1: Cari pelakunya "makan" kuasa pengkomputeran (

atas

Perintah)

Gunakan SSH untuk menyambung ke pelayan dan masukkan perintah universal secara langsung di terminal:

Bash

atas

Setelah memasuki antara muka interaktif, tekan huruf besar pada papan kekunci

P

(Shift p), biarkan proses disusun dari tinggi ke rendah sesuai dengan penggunaan CPU.

Perhatikan beberapa baris pertama dan perhatikan tiga bidang teras berikut:

PID: Nombor ID proses, proses pembunuhan seterusnya bergantung padanya.

USER: Pengguna mana yang memulakan proses. Sekiranya ia adalah www atau nginx, kemungkinan besar adalah masalah kod; jika ia adalah root dan namanya pelik, berhati-hatilah dengan kuda Trojan.

COMMAND: Nama proses.

Analisis suspek COMMAND biasa:

Php-fpm, java, node, python: Kod perniagaan berjalan dalam gelung yang tidak berkesudahan, atau pangkalan data tidak diindeks pada masa yang sama.

Mysql: Pangkalan data melakukan pertanyaan berkaitan yang kompleks dan imbasan jadual penuh.

Kswapd0: Memori sistem tidak mencukupi, dan data memori dipindahkan ke partisi Swap cakera keras, menyebabkan CPU melambung tinggi.

Kinsing, sysrv, rentetan watak kacau rawak: Tahniah, pelayan telah diretas, ini adalah Trojan perlombongan klasik.

Langkah 2: Putar secara mendalam, lihat apa yang sedang dilakukan dalam proses

Sekiranya anda mendapati bahawa kod anda sendiri (seperti proses Java atau PHP) penuh dengan CPU, mengetahui bahawa PID tidak mencukupi, anda mesti tahu baris kod mana yang menjadi syaitan.

Adegan A: Penyiasatan penuh proses Java (wawancara klasik dan soalan praktikal)

Katakan proses Java penuh PID adalah

1234

Cari nombor utas (TID) yang menggunakan CPU paling banyak dalam proses ini: Bashtop -Hp 1234 Andaikan bahawa utas 1256 menyumbang 90% daripada CPU.

Tukarkan nombor utas ini menjadi heksadesimal (kerana heksadesimal digunakan dalam timbunan Java):Bashprintf "% x \ n" 1256 # Hasil output dianggap sebagai: 4e8

Gunakan alat jstack untuk mencetak timbunan utas Java, dan gunakan grep untuk menangkap nombor utas heksadesimal: Basjstack 1234 | grep -A 20 "4e8" Skrin akan secara langsung memaparkan kelas dan baris kod mana (seperti com.xx. perkhidmatan. impl.OrderServiceImpl.lambda $0(OrderServiceImpl.java:88)) sedang berjalan, gelung tanpa henti jelas sekilas.

Senario B:MySQL menyebabkan CPU penuh

Jika begitu

Mysql

Proses menduduki tempat pertama. Log masuk ke pangkalan data sekarang dan jalankan:

SQL

PAPARKAN SENARAI PROSES PENUH;

Lihat kenyataan SQL yang sedang dijalankan. Fokus pada

Masa

(Masa pelaksanaan) Pernyataan terpanjang, jika anda melihat sebilangan besar

Pilihan

SQL buruk yang berstatus dan tidak diindeks, secara langsung memberitahu pengembangan untuk menambah indeks, atau membiarkan DBA membunuh SQL buruk ini buat sementara waktu.

Langkah 3: Tangani dengan tegas (bagaimana menyelesaikan dengan elegan)

Situasi 1: Gelung tanpa henti kod biasa

Sekiranya kelangsungan hidup terjejas, anda boleh membunuh proses terlebih dahulu dengan PID sebagai pertukaran untuk masa bernafas:

Bash

Kill-9 proses PID

Kemudian cepat-cepat menukar bug kod.

Situasi 2: Kuda Trojan perlombongan

Penggodam biasanya menggantung tugas masa, anda sederhana

Membunuh-9

Ia tidak dapat dibunuh dan akan dibangkitkan dalam satu saat.

Periksa tugas masa: crontab -l, cari skrip muat turun yang pelik, segera gunakan cron

Tab-e dipadamkan.

Periksa proses sisa dan bunuh.

Senjata utama: Sekiranya kuda Trojan dijangkiti di kawasan yang luas, penyelesaian terpantas dan paling bersih adalah "menggunakan snapshot untuk memulihkan sistem", atau memasang semula sistem secara langsung dengan merujuk kepada artikel sebelumnya.

Tahap ketiga: langkah penuh penyelesaian CPU pelayan Windows

Pelayan Windows agak intuitif dan diselesaikan secara langsung melalui antara muka grafik.

Langkah 1: Buka Pengurus Tugas

Desktop jauh disambungkan ke pelayan.

Klik kanan pada bar tugas di bahagian bawah dan pilih Pengurus Tugas.

Klik tajuk pada lajur CPU dan biarkan ia disusun dari tinggi ke rendah mengikut kadar penggunaan.

Langkah 2: Pergi ke Monitor Sumber

Pengurus tugas hanya dapat melihat

W3wp.exe

(Proses IIS) atau

Sqlservr.exe

Sangat tinggi, tidak ada perincian yang dapat dilihat.

Di bahagian bawah Pengurus Tugas, klik untuk membuka Monitor Sumber.

Tukar ke tab CPU.

Di sini anda dapat melihat perkhidmatan khusus setiap proses. Sekiranya w3wp.exe melambung tinggi, ini bermaksud bahawa ada masalah dengan kod laman web tertentu di IIS. Anda boleh menggunakan "proses kerja" IIS untuk memeriksa laman web mana dan URL mana yang menggunakan sumber dengan panik.

Tahap keempat: Pencegahan lebih baik daripada rawatan-bagaimana untuk mengelakkan CPU penuh lagi?

Setelah memadamkan api, agar tidak bangun di tengah malam, anda mesti membina tiga barisan pertahanan:

Konfigurasikan "Peraturan Penggera CPU" di Konsol Awan Alibaba: Masukkan Pemantauan Awan-> Kumpulan Aplikasi atau Pemantauan Host. Tambahkan penggera ke pelayan: Apabila kadar penggunaan CPU> = 85% berlangsung selama 5 minit, segera hantarkan SMS/Dingding ke telefon bimbit. Campur tangan terlebih dahulu sebelum ia mencapai 100%.

Tambahkan "log pertanyaan perlahan" ke pangkalan data: buka slow_query_log MySQL, dan rakam semua SQL dengan masa pelaksanaan lebih dari 1 saat. Ia dikeluarkan untuk pengoptimuman pembangunan setiap hari untuk menghilangkan bahaya yang tersembunyi.

Mekanisme tamat masa tetapan lapisan kod: Sama ada panggilan API luaran, gelung kompleks atau multithreading, masa tamat maksimum mesti ditetapkan. Jangan biarkan gelung tanpa henti menggantung selama-lamanya untuk menghabiskan tenaga pengkomputeran.

Ringkasan

Menyiasat beban penuh CPU adalah seperti menangkap pencuri:

Mula-mula gunakan pengurus atas/tugas untuk mengunci suspek (PID), kemudian gunakan jstack / PROCESSLIST untuk mendapatkan bukti jenayah (baris kod/SQL mana), dan akhirnya dengan tegas menangani dan memasang penggera pemantauan

Jangan panik ketika anda menghadapi masalah. Ikuti proses standard untuk mengupas lapisan demi lapisan. Mana-mana kod buruk atau kuda Trojan yang membuat sistem tersekat tidak ada tempat untuk bersembunyi.

1
← 返回新闻中心