Introducing ZYNOO General Purpose & CPU Optimized Servers   Learn More >

Cách khắc phục lỗi 504 Gateway Timeout (7 cách)

Lỗi 504 Gateway Timeout xảy ra khi một máy chủ đóng vai trò cổng kết nối hoặc proxy không nhận được phản hồi kịp thời từ máy chủ khác. Lỗi này thường xảy ra khi ứng dụng phía sau của một trang web chạy chậm, bị quá tải hoặc gặp sự cố kết nối.

Nếu bạn đang truy cập một trang web, hãy đợi một lát rồi tải lại trang. Nếu bạn quản lý trang web, hãy bắt đầu bằng cách kiểm tra nhật ký máy chủ và ứng dụng để xác định sự chậm trễ xảy ra ở đâu.

Dưới đây là bảy cách thiết thực để tìm nguyên nhân và khắc phục lỗi.

Nguyên nhân nào gây ra lỗi 504 Gateway Timeout?

Nhiều trang web sử dụng nhiều máy chủ hoặc dịch vụ để xử lý yêu cầu.

Ví dụ, trình duyệt có thể kết nối với Nginx hoặc CDN, sau đó yêu cầu được chuyển tiếp đến máy chủ ứng dụng.

Nếu ứng dụng đó phản hồi quá chậm, cổng kết nối có thể trả về lỗi 504 thay vì trang được yêu cầu.

Các nguyên nhân thường gặp gồm:

  • Máy chủ ứng dụng bị quá tải hoặc không phản hồi.
  • Truy vấn cơ sở dữ liệu hoặc yêu cầu đến API bên ngoài chạy chậm.
  • Không đủ CPU, RAM hoặc tiến trình xử lý của ứng dụng.
  • Sự cố mạng giữa cổng kết nối và máy chủ phía sau.
  • Giới hạn thời gian chờ của proxy hoặc ứng dụng.
  • CDN hoặc hạ tầng lưu trữ được cấu hình sai.

Lỗi 504 thường là sự cố phía máy chủ, mặc dù đôi khi các vấn đề riêng của từng kết nối có thể ảnh hưởng đến một số khách truy cập.

Nguyên nhân gây ra lỗi 504 Gateway Timeout

1. Tải lại trang web và kiểm tra khả năng truy cập

Nếu bạn chỉ đang truy cập một trang web, hãy đợi một lát rồi tải lại trang.

Tình trạng máy chủ quá tải tạm thời hoặc yêu cầu đến hệ thống phía sau bị gián đoạn có thể tự hết.

Bạn cũng có thể thử một trình duyệt hoặc mạng khác để xem sự cố có chỉ xảy ra với kết nối của mình hay không.

Nếu tất cả mọi người đều gặp lỗi, chủ sở hữu trang web hoặc nhà cung cấp dịch vụ lưu trữ thường sẽ cần điều tra.

Tránh gửi lại nhiều lần các yêu cầu thanh toán, đặt hàng hoặc biểu mẫu. Một thao tác phía sau có thể đã hoàn tất dù cổng kết nối hết thời gian chờ trước khi trả về phản hồi.

2. Kiểm tra nhật ký máy chủ và ứng dụng

Nếu bạn quản lý máy chủ, các tệp nhật ký là nơi tốt nhất để bắt đầu.

Đối với Nginx, hãy kiểm tra nhật ký lỗi:

sudo tail -n 50 /var/log/nginx/error.log

Tìm các thông báo tương tự như:

upstream timed out (110: Connection timed out)

Điều này cho thấy Nginx đã đợi quá lâu để một thao tác trên máy chủ phía sau hoàn tất.

Tiếp theo, hãy kiểm tra nhật ký ứng dụng để xác định lý do hệ thống phía sau phản hồi chậm.

Bạn cũng có thể kiểm tra một dịch vụ do systemd quản lý:

sudo journalctl -u myapp -n 50

Thay myapp bằng tên dịch vụ thực tế của bạn.

3. Kiểm tra mức sử dụng CPU, RAM và ổ đĩa

Máy chủ đang quá bận có thể khó xử lý yêu cầu trong thời gian chờ của cổng kết nối.

Kiểm tra bộ nhớ:

free -h

Kiểm tra dung lượng ổ đĩa:

df -h

Theo dõi các tiến trình:

top

Hãy tìm các dấu hiệu như tài nguyên liên tục bị sử dụng ở mức cao, hết bộ nhớ, hệ thống tệp đầy hoặc tiến trình hoạt động bận bất thường.

Những kết quả này không tự chứng minh được nguyên nhân khiến yêu cầu hết thời gian chờ, nhưng có thể giúp xác định các điểm nghẽn hiệu năng.

4. Kiểm tra thời gian chờ của Nginx và máy chủ phía sau

Nếu Nginx đóng vai trò proxy ngược, hãy kiểm tra xem ứng dụng phía sau có phản hồi trong giới hạn thời gian chờ đã cấu hình hay không.

Đối với hệ thống phía sau dùng HTTP, cấu hình có thể bao gồm:

location / {
    proxy_pass http://127.0.0.1:3000;
    proxy_read_timeout 60s;
}

Thiết lập proxy_read_timeout kiểm soát khoảng thời gian Nginx chờ giữa các lần đọc dữ liệu liên tiếp từ máy chủ phía sau, chứ không phải tổng thời gian của toàn bộ yêu cầu.

Trước khi tăng giá trị này, hãy kiểm tra trực tiếp ứng dụng phía sau:

curl --max-time 15 -i http://127.0.0.1:3000/

Thay địa chỉ bằng điểm cuối thực tế của ứng dụng. Một số tuyến của ứng dụng có thể yêu cầu xác thực hoặc trả về phản hồi hợp lệ khác HTTP 200.

Nếu bản thân ứng dụng chạy chậm, việc tăng thời gian chờ của Nginx có thể chỉ che giấu vấn đề gốc rễ.

Khi thực sự cần thời gian chờ dài hơn, hãy xem xét cả thiết lập thời gian chờ của ứng dụng. Các ứng dụng dựa trên PHP-FPM và FastCGI sử dụng những chỉ thị Nginx khác với hệ thống phía sau dùng proxy HTTP.

Sau khi thay đổi cấu hình, hãy kiểm tra tính hợp lệ của cấu hình Nginx trước khi tải lại:

sudo nginx -t
sudo systemctl reload nginx

Chỉ tải lại nếu quá trình kiểm tra cấu hình thành công.

5. Kiểm tra Cloudflare hoặc CDN của bạn

Nếu trang web của bạn sử dụng Cloudflare hoặc một mạng phân phối nội dung khác, hãy xác định xem lỗi hết thời gian chờ bắt nguồn từ CDN hay máy chủ gốc.

Kiểm tra thông tin lỗi của CDN và đối chiếu với nhật ký máy chủ gốc.

Lỗi 504 có thể xuất phát từ một dịch vụ phía sau máy chủ gốc hoặc từ một lớp khác trên đường đi của yêu cầu.

Cloudflare có cơ chế riêng về thời gian chờ kết nối và phản hồi, nên việc tăng một thiết lập của Nginx không nhất thiết ghi đè được giới hạn do CDN áp đặt.

Tránh vô hiệu hóa các tính năng bảo mật hoặc bộ nhớ đệm khi chưa xác định được nguồn gốc của lỗi hết thời gian chờ.

6. Kiểm tra truy vấn cơ sở dữ liệu chậm và API bên ngoài

Đôi khi máy chủ web vẫn hoạt động bình thường, nhưng ứng dụng đang chờ một dịch vụ khác.

Các trường hợp thường gặp gồm:

  • Một truy vấn cơ sở dữ liệu mất quá nhiều thời gian.
  • Một API bên ngoài phản hồi chậm.
  • Nhóm tiến trình xử lý của ứng dụng đã cạn kiệt.
  • Các tác vụ nền tranh chấp tài nguyên.
  • Khóa cơ sở dữ liệu làm chậm yêu cầu.

Xem xét nhật ký ứng dụng, nhật ký truy vấn chậm và các chỉ số của dịch vụ để xác định nguyên nhân gây chậm trễ.

Nếu nguyên nhân là một truy vấn cơ sở dữ liệu, hãy kiểm tra chỉ mục, kế hoạch thực thi truy vấn và mức sử dụng kết nối.

Đối với các lệnh gọi API bên ngoài, hãy cấu hình thời gian chờ hợp lý và cơ chế xử lý lỗi. Nếu ứng dụng hỗ trợ, các tác vụ chạy lâu có thể phù hợp hơn với cách xử lý bất đồng bộ.

7. Liên hệ với nhà cung cấp dịch vụ lưu trữ

Nếu bạn không thể khắc phục lỗi 504 Gateway Timeout, hãy liên hệ với nhà cung cấp dịch vụ lưu trữ và cung cấp những thông tin bạn đã thu thập.

Hãy cung cấp tên miền bị ảnh hưởng, thời điểm sự cố bắt đầu, lỗi có xảy ra không liên tục hay không và mọi thông báo nhật ký liên quan.

Đề cập đến những thay đổi gần đây đối với ứng dụng, cơ sở dữ liệu, CDN hoặc cấu hình proxy ngược.

Nhà cung cấp dịch vụ lưu trữ có thể giúp kiểm tra các giới hạn tài nguyên và sự cố hạ tầng nằm ngoài quyền quản trị của bạn.

Lỗi cổng kết nối 502 và 504 khác nhau như thế nào?

Hai lỗi này có liên quan, nhưng cho biết những vấn đề khác nhau ở máy chủ phía sau.

LỗiÝ nghĩa
502 Bad GatewayCổng kết nối nhận được phản hồi không hợp lệ từ máy chủ phía sau
504 Gateway TimeoutCổng kết nối không nhận được phản hồi cần thiết từ máy chủ phía sau kịp thời

Ví dụ, ứng dụng đóng kết nối đột ngột có thể gây ra lỗi 502, trong khi ứng dụng phản hồi quá chậm có thể gây ra lỗi 504.

Cách phòng tránh lỗi 504 Gateway Timeout

Không thể ngăn chặn mọi trường hợp hết thời gian chờ, nhưng quản lý hạ tầng tốt sẽ giúp giảm bớt các trường hợp này.

  • Theo dõi thời gian phản hồi của ứng dụng và mức sử dụng tài nguyên.
  • Kiểm tra các truy vấn cơ sở dữ liệu chạy chậm.
  • Sử dụng bộ nhớ đệm phù hợp cho nội dung được yêu cầu thường xuyên.
  • Cấu hình thời gian chờ hợp lý cho máy chủ phía sau và ứng dụng.
  • Theo dõi các dịch vụ phía sau và khả năng đáp ứng của các tiến trình xử lý.
  • Kiểm tra những thay đổi cấu hình quan trọng trước khi triển khai.

Việc tăng giới hạn thời gian chờ cần được cân nhắc kỹ, thay vì là bước đầu tiên khi tìm nguyên nhân sự cố.

Câu hỏi thường gặp

504 Gateway Timeout có phải là lỗi máy chủ không?

Có. HTTP 504 là mã trạng thái phía máy chủ, cho biết cổng kết nối hoặc proxy không nhận được phản hồi kịp thời từ máy chủ phía sau.

Xóa bộ nhớ đệm của trình duyệt có khắc phục được lỗi 504 không?

Thường là không. Bộ nhớ đệm của trình duyệt không thể khắc phục tình trạng máy chủ phía sau bị quá tải hoặc không phản hồi. Tuy nhiên, thử một trình duyệt hoặc kết nối khác có thể giúp loại trừ các vấn đề chỉ xảy ra cục bộ.

Lỗi 504 có phải chỉ là tạm thời không?

Có thể. Tình trạng quá tải tạm thời hoặc một yêu cầu xử lý chậm ở phía sau có thể nhanh chóng tự hết, còn lỗi hết thời gian chờ tái diễn cho thấy có vấn đề cần được điều tra.

Trang web WordPress có thể gặp lỗi 504 không?

Có. WordPress và các ứng dụng khác có thể gặp lỗi 504 khi truy vấn cơ sở dữ liệu, quá trình xử lý PHP hoặc các dịch vụ phía sau mất quá nhiều thời gian.

Tôi có nên tăng thời gian chờ của Nginx để khắc phục lỗi 504 không?

Chỉ khi ứng dụng thực sự cần thêm thời gian và các giới hạn khác của hạ tầng cho phép. Trước tiên, hãy xác định vì sao phản hồi từ máy chủ phía sau bị chậm.

Kết luận

Lỗi 504 Gateway Timeout có nghĩa là cổng kết nối đã đợi quá lâu để nhận phản hồi từ máy chủ phía sau.

Khách truy cập có thể kiểm tra xem sự cố có phải chỉ là tạm thời hay không, còn quản trị viên nên xem xét nhật ký, tài nguyên máy chủ, hiệu năng ứng dụng và thiết lập proxy.

Cách khắc phục đáng tin cậy nhất là xác định nguồn gốc của sự chậm trễ, thay vì tăng giới hạn thời gian chờ hoặc khởi động lại dịch vụ một cách thiếu căn cứ.

Table of Content

Lỗi 502 Bad Gateway trong Nginx thường có nghĩa là Nginx không nhận được phản

Máy chủ MCP là một chương trình cho phép các ứng dụng AI kết nối

Bạn có cần dịch vụ lưu trữ VPS không? Có lẽ là không, nếu trang

Build your next project with ZYNOO

From your first website to demanding applications, choose the resources and control you need.

Shared Hosting

Start your blog or business website with cPanel, LiteSpeed and CloudLinux.

VPS Hosting

Grow your websites and applications with NVMe storage, KVM virtualization and full root access.

Dedicated Servers

Power demanding projects with your own physical server, dedicated resources and control over your environment.

Lên đầu trang