0Pricing
WebSockets & Realtime Systems Programming · บทเรียน

การวัดประสิทธิภาพ WebSocket

ใช้เครื่องมือและเทคนิคเพื่อวัดประสิทธิภาพ เวลาแฝง และปริมาณงานของเซิร์ฟเวอร์ WebSocket

การวัดประสิทธิภาพ WebSocket เป็นบทเรียน WebSockets & Realtime Systems Programming ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน WebSockets & Realtime Systems Programming และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส WebSockets & Realtime Systems Programming มีบทเรียนทั้งหมด 4 บทเรียน

บางส่วนของบทเรียนนี้ยังไม่ได้รับการแปล และแสดงเป็นภาษาอังกฤษ

Why Benchmark WebSockets?

When building realtime applications with WebSockets, performance is key. Benchmarking helps us understand how our server behaves under different loads.

It's like stress-testing your system before it goes live. You want to know its limits, identify bottlenecks, and ensure it can handle the expected user traffic without breaking a sweat.

  • Capacity Planning: How many users can your server handle?
  • Performance Tuning: Identify slow parts of your code.
  • Regression Testing: Ensure new changes don't degrade performance.

Key WebSocket Metrics

To evaluate performance, we look at specific metrics:

  • Latency: The time it takes for a message to travel from client to server and back (Round-Trip Time). Lower is better.
  • Throughput: The number of messages or bytes processed per second. Higher is better.
  • Concurrency: The maximum number of simultaneous active connections or clients the server can handle. Higher is better.
  • Error Rate: The percentage of failed operations. Lower is better.

Tools for Benchmarking

Several tools can help you benchmark WebSocket applications. These range from simple scripts to dedicated load testing platforms.

  • Custom Scripts: Using libraries like ws (Node.js) to write your own client simulators.
  • Load Testing Tools: Tools like Apache JMeter, k6 (Grafana Labs), or Gatling can simulate thousands of concurrent users and connections.
  • Monitoring Tools: Often integrated with benchmarking to observe server resource usage (CPU, Memory) during tests.

Simple Echo WebSocket Server

Before we can benchmark, we need a WebSocket server to test against. Here's a basic Node.js "echo" server that sends back whatever it receives.

Save this as server.js and run with node server.js (ensure ws is installed: npm install ws).

const WebSocket = require('ws');

const wss = new WebSocket.Server({ port: 8080 });

wss.on('connection', ws => {
  console.log('Client connected');
  ws.on('message', message => {
    // Echo back the received message
    ws.send(message.toString());
  });
  ws.on('close', () => console.log('Client disconnected'));
  ws.on('error', error => console.error('WS Error:', error));
});

console.log('WebSocket server started on port 8080');

Creating a Single Test Client

Now, let's create a client that connects to our echo server, sends a message, and receives it back. This forms the basis for our performance tests.

Save this as client.js and run with node client.js after starting the server.

const WebSocket = require('ws');

const ws = new WebSocket('ws://localhost:8080');

ws.onopen = () => {
  console.log('Connected to server');
  ws.send('Hello WebSocket!');
};

ws.onmessage = event => {
  console.log('Received:', event.data);
  ws.close(); // Close after receiving the echo
};

ws.onerror = error => console.error('WS Error:', error.message);
ws.onclose = () => console.log('Disconnected');

Simulating Multiple Clients

Benchmarking requires simulating many concurrent clients. We can modify our client script to create multiple WebSocket connections.

Each client will connect, send a message, and measure its own performance. Aggregating these results gives us a system-wide view.

  • Use a loop to create many WebSocket instances.
  • Manage connection states and message counts for each client.
  • Collect performance data (e.g., latency) from each client.

Measuring Message Latency

To measure latency, the client sends a message containing a timestamp. When the server echoes it back, the client calculates the time difference.

This example extends our client to measure the round-trip time for a single message.

const WebSocket = require('ws');

const ws = new WebSocket('ws://localhost:8080');
let startTime;

ws.onopen = () => {
  console.log('Connected for latency test');
  startTime = Date.now();
  ws.send(JSON.stringify({ timestamp: startTime, msg: 'Ping' }));
};

ws.onmessage = event => {
  const endTime = Date.now();
  const data = JSON.parse(event.data);
  const latency = endTime - data.timestamp;
  console.log(`Received echo: ${data.msg}. Latency: ${latency} ms`);
  ws.close();
};

ws.onerror = error => console.error('WS Error:', error.message);
ws.onclose = () => console.log('Latency test finished');

Measuring Message Throughput

Throughput is often measured as messages per second. A client can continuously send messages and count how many responses it receives within a set timeframe.

This script sends 1000 messages and reports the total time and messages per second.

const WebSocket = require('ws');

const ws = new WebSocket('ws://localhost:8080');
const totalMessages = 1000;
let messagesReceived = 0;
let testStartTime;

ws.onopen = () => {
  console.log('Connected for throughput test');
  testStartTime = Date.now();
  for (let i = 0; i < totalMessages; i++) {
    ws.send(`Message ${i}`);
  }
};

ws.onmessage = event => {
  messagesReceived++;
  if (messagesReceived === totalMessages) {
    const endTime = Date.now();
    const duration = (endTime - testStartTime) / 1000; // seconds
    const throughput = totalMessages / duration;
    console.log(`Received ${totalMessages} messages in ${duration.toFixed(2)}s.`);
    console.log(`Throughput: ${throughput.toFixed(2)} messages/second.`);
    ws.close();
  }
};

ws.onerror = error => console.error('WS Error:', error.message);
ws.onclose = () => console.log('Throughput test finished');

Interpreting Your Results

Raw numbers from benchmarking are just the start. The real value comes from interpreting them in context:

  • Compare to Baselines: How do your current results compare to previous tests or expected performance?
  • Look for Trends: Does latency increase drastically with more concurrent users? Does throughput plateau?
  • Identify Bottlenecks: High CPU usage on the server, network saturation, or database contention are common culprits.
  • Iterate and Improve: Use the data to make changes, then re-benchmark to see the impact.

Quick Check on Metrics

You're testing a WebSocket server and observe that as more clients connect, the time it takes for a message to be sent and received back increases significantly. Which performance metric is primarily degrading?

Recap: Benchmarking WebSockets

In this lesson, we explored the importance of benchmarking WebSocket applications. We learned about key metrics like latency, throughput, and concurrency.

You saw how to set up a simple echo server and write client-side scripts to measure these metrics. Interpreting these results is crucial for optimizing your realtime systems and ensuring they can handle production loads.

คำถามที่พบบ่อย

บทเรียน “การวัดประสิทธิภาพ WebSocket” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การวัดประสิทธิภาพ WebSocket” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส WebSockets & Realtime Systems Programming ให้อัปเกรดเป็น CoddyKit PRO คอร์ส WebSockets & Realtime Systems Programming มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การวัดประสิทธิภาพ WebSocket”

ใช้เครื่องมือและเทคนิคเพื่อวัดประสิทธิภาพ เวลาแฝง และปริมาณงานของเซิร์ฟเวอร์ WebSocket คุณปฏิบัติ WebSockets & Realtime Systems Programming ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน WebSockets & Realtime Systems Programming หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน WebSockets & Realtime Systems Programming บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน

บทเรียน “การวัดประสิทธิภาพ WebSocket” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน WebSockets & Realtime Systems Programming นี้ได้ไหม

ได้ บทเรียน WebSockets & Realtime Systems Programming ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การวัดประสิทธิภาพ WebSocket
  2. การวิเคราะห์ประสิทธิภาพและแก้ไขปัญหาแบบเรียลไทม์
  3. การติดตามและแจ้งเตือนแบบเรียลไทม์
  4. การทดสอบโหลดและการวางแผนความจุสำหรับ WebSockets
← กลับไปที่ WebSockets & Realtime Systems Programming