Ngiêm cấm sử đụng PROXY và VPS vào mục đích trái pháp luật bạn sẽ phải chịu toàn bộ trách nhiệm trước pháp luật khi sử dụng dịch vụ của chúng tôi tks!
Proxy bị chậm: 7 nguyên nhân và cách tăng tốc bằng Python

Proxy bị chậm: 7 nguyên nhân và cách tăng tốc bằng Python

SEO Administrator 07-08-2026 Đang tính... phút đọc

Proxy bị chậm làm tăng thời gian scraping, gây timeout và khiến dữ liệu thu thập bị thiếu. Trong hướng dẫn này, ProxyVN sẽ cùng anh em đo tốc độ đúng cách, xác định điểm nghẽn và tối ưu mã Python. Mục tiêu là cải thiện hiệu suất dựa trên số liệu, thay vì đổi IP hoặc tăng số luồng theo cảm tính.

Proxy bị chậm do đâu? 7 điểm cần kiểm tra

Một request đi theo tuyến: máy khách → proxy → website → proxy → máy khách. Mỗi chặng mạng và bước xử lý đều có thể làm tổng thời gian tăng.

Proxy hoạt động bị chậm

Proxy hoạt động bị chậm

Quy tắc quan trọng: luôn đo kết nối trực tiếp trước. Nếu không có baseline, anh em không thể biết độ trễ đến từ proxy, website mục tiêu hay chính máy chạy chương trình.

1. Máy chủ proxy quá xa website mục tiêu

Khoảng cách địa lý thường làm tăng round-trip time (RTT). Vì vậy, proxy đặt xa website mục tiêu có thể tạo tuyến dữ liệu dài không cần thiết.

Trong ví dụ tham khảo, 1.000 request mất trung bình 180 ms qua proxy châu Âu và 520 ms qua proxy châu Á. Chênh lệch 340 ms/request tương đương 340 giây khi chạy tuần tự.

Cách xử lý: chọn IP gần website mục tiêu. Với residential proxy, nên thử theo khu vực vì hai IP cùng quốc gia vẫn có thể đi qua tuyến khác nhau.

2. Giao thức chưa phù hợp

HTTP proxy phù hợp với API và web scraping. SOCKS5 linh hoạt hơn, nhưng hiệu suất còn phụ thuộc nhà cung cấp, xác thực và định tuyến.

Với thư viện Requests, socks5:// phân giải DNS ở máy khách, còn socks5h:// chuyển việc phân giải tên miền sang proxy. Chi tiết này được xác nhận trong tài liệu proxy và SOCKS của Requests.

python -m pip install requests

# Chỉ cài thêm nếu dùng SOCKS

python -m pip install "requests[socks]"

Hãy benchmark từng giao thức trên website mục tiêu, thay vì mặc định một loại luôn nhanh hơn.

3. Proxy dùng chung bị quá tải

Shared proxy phục vụ nhiều người. Khi băng thông, CPU hoặc số socket chạm ngưỡng, tốc độ dao động và có thể xuất hiện Connection reset by peer.

Dấu hiệu dễ nhận biết gồm:

  • Phản hồi tăng hơn hai lần vào giờ cao điểm.

  • Timeout tăng sau khi nâng số luồng.

  • Tốc độ đầu phiên tốt nhưng giảm dần.

  • IP thường trả lỗi 429, 502, 503 hoặc 504.

Cách xử lý: phân tải trên nhóm IP, thử 5–10 request đồng thời cho mỗi proxy rồi điều chỉnh. Tác vụ tải cao nên cân nhắc IP riêng.

4. Timeout và retry cấu hình chưa đúng

Timeout dài giữ proxy lỗi quá lâu; timeout ngắn lại loại nhầm kết nối. Requests cho phép tách timeout=(connect, read). Theo hướng dẫn timeout chính thức, đây không phải giới hạn cho toàn bộ lượt tải.

Có thể thử connect timeout 3–5 giây cho datacenter, 5–10 giây cho residential và read timeout 10–15 giây với HTML. Sau đó, điều chỉnh theo p95.

Retry cũng cần giới hạn. Nên tự động thử lại GET, HEAD; retry POST có thể tạo thao tác trùng. urllib3 mô tả exponential backoff và header Retry-After.

5. Tạo kết nối TCP/TLS mới liên tục

HTTPS cần thiết lập TCP và TLS. Tạo request độc lập sẽ lặp chi phí này. requests.Session() dùng connection pooling và tự động áp dụng Keep-Alive, theo tài liệu Session của Requests.

TLS 1.3 cải thiện độ trễ khi hai đầu hỗ trợ. Tuy nhiên, không đổi sang HTTP hoặc đặt verify=False chỉ để tăng tốc.

6. DNS làm tăng thời gian chờ

DNS chậm, cache hết hạn hoặc resolver của proxy kém đều cộng thêm độ trễ.

Với SOCKS, thử socks5://socks5h:// để so sánh DNS cục bộ với DNS phía proxy. Không tự thay hostname HTTPS bằng IP vì SNI và chứng chỉ có thể không khớp. Cache thủ công phải có thời hạn để tránh giữ IP cũ.

7. Hạ tầng hoặc tuyến mạng kém ổn định

Băng thông cao chưa đủ. Hãy theo dõi median, p95, tỷ lệ thành công, jitter và packet loss. Proxy trung bình 400 ms nhưng p95 5 giây có thể kém IP ổn định ở 700 ms.

Hãy kiểm tra nhiều thời điểm trên website mục tiêu. Sự ổn định có giá trị hơn một lần speed test đẹp.

Cách đo khi Proxy bị chậm bằng Python

Đo cùng URL, số lượt và máy chạy. Hãy chạy trực tiếp, rồi qua từng proxy. Đo tuần tự trước; khi baseline ổn định mới kiểm thử đồng thời.

Mã sau dùng time.perf_counter(), đọc hết response và tính trung bình, trung vị, p95, tỷ lệ thành công:

import statistics

import time

from collections import Counter

 

import requests



def benchmark(url, proxy=None, samples=20):

    times = []

    errors = Counter()

    proxies = {"http": proxy, "https": proxy} if proxy else None

 

    with requests.Session() as session:

        session.trust_env = False

 

        # Warm-up để kết quả sau ít bị ảnh hưởng bởi kết nối đầu tiên

        try:

            session.get(

                url,

                proxies=proxies,

                timeout=(5, 15)

            ).raise_for_status()

        except requests.RequestException:

            pass

 

        for _ in range(samples):

            start = time.perf_counter()

 

            try:

                response = session.get(

                    url,

                    proxies=proxies,

                    timeout=(5, 15)

                )

                response.raise_for_status()

 

                # Đọc hết nội dung để trả kết nối về pool

                _ = response.content

                times.append(time.perf_counter() - start)

 

            except requests.RequestException as exc:

                errors[type(exc).__name__] += 1

 

    if not times:

        return {

            "success_rate": 0.0,

            "errors": dict(errors)

        }

 

    ordered = sorted(times)

    p95_index = max(

        0,

        round(0.95 * len(ordered)) - 1

    )

 

    return {

        "success_rate": len(times) / samples * 100,

        "mean_ms": statistics.mean(times) * 1000,

        "median_ms": statistics.median(times) * 1000,

        "p95_ms": ordered[p95_index] * 1000,

        "errors": dict(errors),

    }



url = "https://httpbin.org/get"

proxy = "http://user:[email protected]:8080"

 

print("Direct:", benchmark(url))

print("Proxy:", benchmark(url, proxy=proxy))

Không gọi total_time / 2 là latency. Tổng thời gian còn chứa DNS, TCP, TLS, xử lý tại proxy, máy chủ và tải response. RTT mạng phải được đo riêng.

Tối ưu code khi Proxy bị chậm

Sau khi xác định proxy còn đạt tỷ lệ thành công tốt, anh em có thể tối ưu Session như sau:

import requests

from requests.adapters import HTTPAdapter

from urllib3.util.retry import Retry



def build_session():

    retry = Retry(

        total=3,

        connect=3,

        read=2,

        status=2,

        backoff_factor=0.5,

        status_forcelist=(

            429,

            500,

            502,

            503,

            504

        ),

        allowed_methods=frozenset({

            "GET",

            "HEAD",

            "OPTIONS"

        }),

        respect_retry_after_header=True,

    )

 

    adapter = HTTPAdapter(

        max_retries=retry,

        pool_connections=10,

        pool_maxsize=20,

        pool_block=True,

    )

 

    session = requests.Session()

    session.trust_env = False

    session.mount("http://", adapter)

    session.mount("https://", adapter)

 

    return session



proxy = "http://user:[email protected]:8080"

proxies = {

    "http": proxy,

    "https": proxy

}

 

with build_session() as session:

    response = session.get(

        "https://example.com",

        proxies=proxies,

        timeout=(5, 15),

    )

 

    response.raise_for_status()

    print(

        response.status_code,

        len(response.content)

    )

pool_maxsize=20 chỉ là sức chứa pool, không phải mức luồng nên dùng cho một IP. Hãy tăng concurrency dần. Khi chạy đa luồng, tạo Session cho mỗi worker hoặc dùng thread-local.

Checklist xử lý Proxy bị chậm

Anh em có thể thực hiện theo thứ tự dưới đây để tiết kiệm thời gian:

  • Đo direct baseline và proxy trên cùng URL.

  • Ghi median, p95, tỷ lệ thành công và loại lỗi.

  • Chọn proxy gần website mục tiêu.

  • So sánh HTTP, socks5socks5h nếu nhà cung cấp hỗ trợ.

  • Dùng Session để tái sử dụng kết nối.

  • Đặt connect/read timeout riêng và retry có backoff.

  • Giới hạn luồng trên mỗi IP; tăng tải theo từng nấc.

  • Kiểm tra nhiều thời điểm, tự loại proxy vượt ngưỡng p95.

  • Không tắt xác minh TLS và không ghi tài khoản proxy vào mã nguồn công khai.

Qua các dự án request hàng loạt, hiệu quả thường không đến từ một thủ thuật riêng. Chọn đúng vị trí, tái sử dụng kết nối và loại IP kém theo p95 mới tạo ra cải thiện bền vững.

Proxy bị chậm cần được xử lý bằng dữ liệu: đo baseline, kiểm tra vị trí, giao thức, tải, DNS, TLS, timeout và connection pool. Khi cần kết nối ổn định, proxy chất lượng cùng hỗ trợ kỹ thuật liên tục, anh em có thể tham khảo Proxy.vn - Nhà cung cấp dịch vụ proxy chất lượng hàng đầu Việt Nam để hạn chế gián đoạn và tối ưu hiệu suất.

TIN TỨC LIÊN QUAN