คอขวดด้านประสิทธิภาพฝั่งแบ็กเอนด์
ระบุปัญหาด้านประสิทธิภาพทั่วไปในแอปพลิเคชันฝั่งเซิร์ฟเวอร์ รวมถึง API ที่ช้าและการจัดการทรัพยากรที่ไม่มีประสิทธิภาพ
คอขวดด้านประสิทธิภาพฝั่งแบ็กเอนด์ เป็นบทเรียน Web Performance Optimization & Lighthouse ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Web Performance Optimization & Lighthouse และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Web Performance Optimization & Lighthouse มีบทเรียนทั้งหมด 4 บทเรียน
บางส่วนของบทเรียนนี้ยังไม่ได้รับการแปล และแสดงเป็นภาษาอังกฤษ
Backend Bottlenecks: An Intro
Welcome! In web performance, we often focus on the frontend. But a slow backend can cripple even the most optimized frontend.
A backend bottleneck is any part of your server-side application that slows down requests or consumes excessive resources, impacting overall system performance.
Understanding these bottlenecks is the first step to building faster, more reliable web applications.
What Does Your Server Do?
Think of your server as the brain of your web application. It handles requests from users, processes logic, retrieves data from databases, and sends responses back.
- Request Handling: Receives HTTP requests.
- Business Logic: Executes application rules.
- Data Management: Interacts with databases.
- Response Generation: Prepares and sends data back to the browser.
Each of these steps can become a bottleneck if not managed efficiently.
Database: A Common Culprit
Databases are often the slowest part of a server's operations. When a server needs data, it asks the database.
A slow database query can happen if:
- You're fetching too much data.
- Queries are complex or poorly written.
- Database tables lack proper indexes.
- The database server itself is overloaded.
This delay directly adds to your API's response time.
Slow Query Simulation
Here's a simple Python example that simulates a slow database query using a time.sleep(). Imagine this delay is from a complex database operation.
Run it and observe how long it takes to complete.
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()Inefficient API Design
Even if your database is fast, your API endpoints themselves can introduce bottlenecks. This often comes down to how data is requested and processed.
Key issues include:
- N+1 Problem: Making N extra database calls for N items.
- Over-fetching: Sending more data than the client needs.
- Under-fetching: Requiring multiple API calls for related data.
- Excessive Payload Size: Large responses take longer to transfer.
The N+1 Problem
The N+1 problem occurs when you fetch a list of items, then for each item, make a separate query to get related details. This quickly adds up!
This Python code simulates fetching 3 orders, then making a separate call for each order's details. Notice the cumulative delay.
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()External Service Delays
Modern applications often rely on external services: payment gateways, authentication providers, microservices, or third-party APIs.
If any of these external services are slow or unresponsive, your own server's response time will suffer. Your backend has to wait for them to reply.
This is a common bottleneck that can be harder to control, but important to identify.
Resource Contention
Your server runs on hardware (or virtual hardware) with finite resources. When too many requests hit your server simultaneously, these resources can become overloaded.
- CPU: Intensive computations slow down all processes.
- Memory: Running out of RAM causes swapping, leading to extreme slowness.
- Network I/O: High data transfer rates can saturate network bandwidth.
- Disk I/O: Frequent reads/writes can bottleneck storage access.
Monitoring these can reveal resource contention issues.
Finding the Bottlenecks
How do you actually find these issues in a live application?
- Application Performance Monitoring (APM) Tools: Services like New Relic or Datadog provide deep insights into server performance, database queries, and external calls.
- Logging: Detailed server logs can show slow request times or error patterns.
- Profiling: Tools that analyze code execution to pinpoint slow functions.
- Load Testing: Simulating high user traffic to see where the system breaks.
Quick Check: Backend Issues
You've noticed your API response times are spiking, especially during peak hours. Users are complaining about slow page loads, even though your frontend code is highly optimized.
Which of the following are common backend performance bottlenecks that could cause this?
Recap: Common Bottlenecks
Great job! You now understand some of the most common backend performance bottlenecks:
- Slow Database Queries: Inefficient data retrieval.
- Inefficient API Endpoints: N+1 problems, over/under-fetching.
- External Service Dependencies: Waiting on third parties.
- Resource Contention: Overloaded CPU, memory, I/O.
Identifying these is crucial. In the next lessons, we'll dive into specific strategies to optimize them!
เรียนรู้ Web Performance Optimization & Lighthouse ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 12
- บทเรียน
- 48
คำถามที่พบบ่อย
บทเรียน “คอขวดด้านประสิทธิภาพฝั่งแบ็กเอนด์” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “คอขวดด้านประสิทธิภาพฝั่งแบ็กเอนด์” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Web Performance Optimization & Lighthouse ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Web Performance Optimization & Lighthouse มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “คอขวดด้านประสิทธิภาพฝั่งแบ็กเอนด์”
ระบุปัญหาด้านประสิทธิภาพทั่วไปในแอปพลิเคชันฝั่งเซิร์ฟเวอร์ รวมถึง API ที่ช้าและการจัดการทรัพยากรที่ไม่มีประสิทธิภาพ คุณปฏิบัติ Web Performance Optimization & Lighthouse ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Web Performance Optimization & Lighthouse หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Web Performance Optimization & Lighthouse บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “คอขวดด้านประสิทธิภาพฝั่งแบ็กเอนด์” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Web Performance Optimization & Lighthouse นี้ได้ไหม
ได้ บทเรียน Web Performance Optimization & Lighthouse ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- คอขวดด้านประสิทธิภาพฝั่งแบ็กเอนด์
- การปรับปรุงประสิทธิภาพคำสั่งฐานข้อมูล
- ผลกระทบของการแสดงผลฝั่งเซิร์ฟเวอร์ (SSR)
- การแคชและการบีบอัดการตอบสนองของ API