Kesesakan Prestasi Bahagian Belakang
Kenal pasti isu prestasi lazim dalam aplikasi sisi pelayan, termasuk API yang perlahan dan pengendalian sumber yang tidak cekap.
Kesesakan Prestasi Bahagian Belakang ialah pelajaran Pengoptimuman Prestasi Web & Lighthouse percuma di CoddyKit. Ini ialah pelajaran 1 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Pengoptimuman Prestasi Web & Lighthouse, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Pengoptimuman Prestasi Web & Lighthouse merangkumi sejumlah 4 pelajaran.
Kesempitan Bahagian Belakang: Pengenalan
Selamat datang! Dalam prestasi Web, kita sering menumpukan perhatian pada bahagian hadapan. Namun, bahagian belakang yang perlahan boleh menjejaskan bahagian hadapan yang paling dioptimumkan sekalipun.
Kesempitan bahagian belakang ialah mana-mana bahagian aplikasi sisi pelayan yang melambatkan permintaan atau menggunakan sumber secara berlebihan, lalu menjejaskan prestasi keseluruhan sistem.
Memahami kesempitan ini merupakan langkah pertama untuk membina aplikasi Web yang lebih pantas dan boleh dipercayai.
Apakah Tugas Pelayan Anda?
Bayangkan pelayan anda sebagai otak aplikasi Web. Pelayan mengendalikan permintaan daripada pengguna, memproses logik, mendapatkan data daripada pangkalan data dan menghantar respons kembali.
- Pengendalian Permintaan: Menerima permintaan HTTP.
- Logik Perniagaan: Melaksanakan peraturan aplikasi.
- Pengurusan Data: Berinteraksi dengan pangkalan data.
- Penjanaan Respons: Menyediakan dan menghantar data kembali kepada penyemak imbas.
Setiap langkah ini boleh menjadi kesempitan jika tidak diurus dengan cekap.
Pangkalan Data: Punca Lazim
Pangkalan data selalunya merupakan bahagian paling perlahan dalam operasi pelayan. Apabila pelayan memerlukan data, pelayan akan memintanya daripada pangkalan data.
Permintaan pangkalan data yang perlahan boleh berlaku jika:
- Anda mendapatkan terlalu banyak data.
- Permintaan adalah rumit atau ditulis dengan buruk.
- Jadual pangkalan data tidak mempunyai indeks yang sesuai.
- Pelayan pangkalan data itu sendiri terlebih beban.
Kelewatan ini menambah masa respons API anda secara langsung.
Simulasi Permintaan Perlahan
Berikut ialah contoh Python mudah yang mensimulasikan permintaan pangkalan data yang perlahan menggunakan time.sleep(). Bayangkan kelewatan ini berpunca daripada operasi pangkalan data yang rumit.
Jalankan contoh ini dan perhatikan tempoh yang diperlukan untuk menyelesaikannya.
import time
def get_user_data(user_id):
# Simulate a complex database query
# This might involve joins, filtering, etc.
time.sleep(0.5) # Simulate 500ms database lookup
return {"id": user_id, "name": f"User {user_id}", "email": f"user{user_id}@example.com"}
def main():
print("Starting data fetch...")
data = get_user_data(123)
print(f"Fetched data: {data}")
print("Data fetch complete.")
if __name__ == "__main__":
main()Reka Bentuk API Tidak Cekap
Walaupun pangkalan data Anda pantas, titik akhir API itu sendiri boleh menyebabkan kesesakan. Hal ini selalunya bergantung pada cara data diminta dan diproses.
Isu utama termasuk:
- Masalah N+1: Membuat N panggilan tambahan ke pangkalan data untuk N item.
- Pengambilan berlebihan: Menghantar lebih banyak data daripada yang diperlukan oleh klien.
- Pengambilan tidak mencukupi: Memerlukan beberapa panggilan API untuk mendapatkan data berkaitan.
- Saiz muatan berlebihan: Respons yang besar mengambil masa lebih lama untuk dipindahkan.
Masalah N+1
Masalah N+1 berlaku apabila Anda mendapatkan senarai item, kemudian membuat pertanyaan berasingan untuk mendapatkan butiran berkaitan bagi setiap item. Jumlahnya boleh meningkat dengan cepat!
Kod Python ini mensimulasikan proses mendapatkan 3 pesanan, kemudian membuat panggilan berasingan untuk mendapatkan butiran setiap pesanan. Perhatikan kelewatan terkumpulnya.
import time
def fetch_orders():
# Simulate fetching a list of order IDs
time.sleep(0.1) # Initial query
return [101, 102, 103]
def fetch_order_details(order_id):
# Simulate fetching details for a single order
time.sleep(0.2) # N queries
return {"order_id": order_id, "item_count": order_id % 3 + 1}
def main():
print("Fetching orders...")
order_ids = fetch_orders()
print(f"Found order IDs: {order_ids}")
all_details = []
print("Fetching details for each order (N+1 problem)...")
for order_id in order_ids:
details = fetch_order_details(order_id)
all_details.append(details)
print(f"All details fetched: {all_details}")
print("Process complete.")
if __name__ == "__main__":
main()Kelewatan Perkhidmatan Luaran
Aplikasi moden sering bergantung pada perkhidmatan luaran: gerbang pembayaran, penyedia pengesahan, perkhidmatan mikro atau API pihak ketiga.
Jika mana-mana perkhidmatan luaran ini lambat atau tidak memberikan respons, masa respons pelayan Anda sendiri akan terjejas. Bahagian belakang Anda perlu menunggu jawapan daripada perkhidmatan tersebut.
Ini ialah kesesakan biasa yang mungkin lebih sukar dikawal, tetapi penting untuk dikenal pasti.
Persaingan Sumber
Pelayan Anda berjalan pada perkakasan (atau perkakasan maya) dengan sumber yang terhad. Apabila terlalu banyak permintaan sampai ke pelayan Anda secara serentak, sumber ini boleh menjadi terlebih beban.
- CPU: Pengiraan yang intensif memperlahankan semua proses.
- Memori: Kehabisan RAM menyebabkan pertukaran memori, lalu mengakibatkan kelembapan yang sangat ketara.
- I/O rangkaian: Kadar pemindahan data yang tinggi boleh memenuhi lebar jalur rangkaian.
- I/O cakera: Bacaan/tulisan yang kerap boleh menyebabkan akses storan menjadi sesak.
Pemantauan terhadap perkara ini boleh mendedahkan isu persaingan sumber.
Mencari Kesesakan
Bagaimanakah Anda benar-benar boleh mencari isu ini dalam aplikasi yang sedang berjalan?
- Alat Pemantauan Prestasi Aplikasi (APM): Perkhidmatan seperti New Relic atau Datadog memberikan gambaran mendalam tentang prestasi pelayan, pertanyaan pangkalan data dan panggilan luaran.
- Perekodan log: Log pelayan yang terperinci boleh menunjukkan masa permintaan yang lambat atau corak ralat.
- Pemprofilan: Alat yang menganalisis pelaksanaan kod untuk mengenal pasti fungsi yang lambat.
- Ujian beban: Mensimulasikan trafik pengguna yang tinggi untuk melihat bahagian yang menyebabkan sistem gagal.
Semakan Pantas: Isu Bahagian Belakang
Anda mendapati masa respons API meningkat dengan mendadak, terutamanya pada waktu puncak. Pengguna mengadu tentang pemuatan halaman yang lambat, walaupun kod bahagian hadapan Anda telah dioptimumkan sepenuhnya.
Antara berikut, yang manakah merupakan kesesakan prestasi bahagian belakang yang biasa dan boleh menyebabkan keadaan ini?
Ringkasan: Kesesakan Biasa
Tahniah! Kini Anda memahami beberapa kesesakan prestasi bahagian belakang yang paling biasa:
- Pertanyaan Pangkalan Data yang Lambat: Pengambilan data yang tidak cekap.
- Titik Akhir API yang Tidak Cekap: Masalah N+1, pengambilan berlebihan/tidak mencukupi.
- Kebergantungan pada Perkhidmatan Luaran: Menunggu pihak ketiga.
- Persaingan Sumber: CPU, memori atau I/O yang terlebih beban.
Mengenal pasti perkara ini amat penting. Dalam pelajaran seterusnya, kita akan membincangkan strategi khusus untuk mengoptimumkannya!
Pelajari Pengoptimuman Prestasi Web & Lighthouse dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 12
- Pelajaran
- 48
Soalan Lazim
Adakah pelajaran “Kesesakan Prestasi Bahagian Belakang” percuma?
Ya — teks penuh “Kesesakan Prestasi Bahagian Belakang” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Pengoptimuman Prestasi Web & Lighthouse, tingkat taraf kepada CoddyKit PRO. Kursus Pengoptimuman Prestasi Web & Lighthouse merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Kesesakan Prestasi Bahagian Belakang”?
Kenal pasti isu prestasi lazim dalam aplikasi sisi pelayan, termasuk API yang perlahan dan pengendalian sumber yang tidak cekap. Anda berlatih Pengoptimuman Prestasi Web & Lighthouse menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Pengoptimuman Prestasi Web & Lighthouse?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Pengoptimuman Prestasi Web & Lighthouse di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 1 daripada 4.
Berapa lamakah pelajaran “Kesesakan Prestasi Bahagian Belakang” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Pengoptimuman Prestasi Web & Lighthouse ini?
Ya. Setiap pelajaran Pengoptimuman Prestasi Web & Lighthouse menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Kesesakan Prestasi Bahagian Belakang
- Pengoptimuman Pertanyaan Pangkalan Data
- Kesan Pemaparan Sisi Pelayan (SSR)
- Penyimpanan Cache dan Pemampatan Respons API