Cách tránh lỗi hết thời gian chờ trong python
Lỗi H12 xảy ra khi yêu cầu HTTP mất hơn 30 giây để hoàn thành. Những lỗi này thường do Show
Bài viết này bao gồm các bước cần thực hiện để giảm thiểu số lượng lỗi H12 trong ứng dụng của bạn Nếu ứng dụng của bạn có nhiều lỗi H12, hãy xem phần Xử lý lỗi H12 (Hết thời gian yêu cầu) để biết các bước khắc phục ngay lập tức
Nếu các yêu cầu phải chạy lâu hơn 30 giây, Heroku hỗ trợ các tính năng như câu trả lời trực tuyến và bỏ phiếu dài cũng như WebSockets Thêm thời gian chờ vào Máy chủ webBộ định tuyến Heroku loại bỏ một yêu cầu chạy dài sau 30 giây, nhưng dyno đằng sau nó tiếp tục xử lý yêu cầu cho đến khi hoàn thành. Việc thêm thời gian chờ đảm bảo rằng dyno loại bỏ yêu cầu chạy nhật ký thay vào đó và tạo không gian cho các yêu cầu khác Đặt thời gian chờ trong ứng dụng trong khoảng 10-20 giây, càng thấp càng tốt mà không ảnh hưởng xấu đến người dùng của bạn. Dưới đây là gợi ý cho các ngôn ngữ cụ thể
Giao dịch hết thời gian yêu cầu gỡ lỗiGiá trị thời gian chờ của bộ định tuyến Heroku không thể định cấu hình. Để giảm thiểu lỗi H12, hãy xem xét và sửa mã chậm và sử dụng các công việc nền Xác định độ chậm trong mã ứng dụng và cuộc gọi bên ngoàiMặc dù Bảng điều khiển Heroku hiển thị một số chỉ số nhưng nó không cung cấp thông tin chi tiết cần thiết để chẩn đoán phần nào của yêu cầu mất nhiều thời gian nhất để hoàn thành. Sử dụng tiện ích bổ sung như Di tích mới hoặc tiện ích bổ sung theo dõi hiệu suất khác để theo dõi các giao dịch chậm Tham khảo tài liệu của công cụ giám sát để tìm hiểu cách
Sau khi bạn đã xác định được phần nào trong giao dịch chậm của mình đang gây ra tắc nghẽn, hãy thực hiện các bước để giảm thiểu tình trạng chậm đó. Ví dụ
Điều tra các phản hồi của Node JSNút. js không ngầm xử lý các yêu cầu bằng cách gửi phản hồi. Thay vào đó, các nhà phát triển phải tạo logic xử lý riêng. Kết quả là, một sự giám sát phổ biến trong Node. ứng dụng js là đường dẫn mã bị thiếu logic phản hồi
Với Express, hãy sử dụng mẫu chuỗi trách nhiệm thay vì sử dụng một chức năng duy nhất có nhiều nhánh để giảm thiểu các lỗi logic này Ví dụ, thay vì
Sử dụng mô hình chuỗi trách nhiệm
Mẫu trên bổ sung lợi ích của việc xử lý lỗi thống nhất thông qua ngăn xếp phần mềm trung gian lỗi Xác định độ chậm trong cơ sở dữ liệuXem các truy vấn đắt tiền trong cơ sở dữ liệu tại dữ liệu. heroku. com. Chọn cơ sở dữ liệu từ danh sách và điều hướng đến tab Chẩn đoán của nó. Tìm kiếm trong nhật ký để tìm các tham số chính xác được chuyển đến các truy vấn này trong quá trình điều tra Lệnh Xem lại phần Giám sát Heroku Postgres để xác định và giải quyết các sự cố hiệu suất cơ sở dữ liệu tiềm ẩn, chẳng hạn như khóa cơ sở dữ liệu và phình to Tối ưu hóa đồng thời webĐồng thời là xử lý nhiều yêu cầu cùng một lúc. Chia thành nhiều quy trình con hoặc sử dụng nhiều luồng làm tăng tính đồng thời. Nói chung, nhiều quy trình con hơn có nghĩa là sử dụng nhiều bộ nhớ hơn, trong khi nhiều luồng hơn có nghĩa là tải nhiều hơn trên dyno Thu thập số liệu cơ bảnXác định đồng thời web chính xác, số lượng và loại dynos là một nhiệm vụ không hề nhỏ đòi hỏi phải lặp lại liên tục. Thực hiện các quan sát về tải dyno và bộ nhớ để hiểu mức độ sử dụng tài nguyên dyno và liệu chúng có cao hơn hoặc thấp hơn các khuyến nghị của chúng tôi hay không. Trong Bảng điều khiển Heroku, trong tab Số liệu hoặc, nếu được kết nối, công cụ giám sát của ứng dụng, lưu ý tải dyno và mức sử dụng bộ nhớ trong bảy ngày qua. So sánh các số liệu này với các nguyên tắc được đề xuất
Tối ưu hóa việc sử dụng tài nguyênNếu các số liệu cơ bản của ứng dụng cho thấy các vấn đề về tải cao, hãy chuyển các tác vụ nặng của CPU sang các tác vụ nền Xem lại các số liệu cơ bản về bộ nhớ. Tổng mức sử dụng bộ nhớ bao gồm RAM và bộ nhớ trao đổi. Nếu trao đổi đang được sử dụng hoặc các lỗi liên quan đến bộ nhớ R14 hoặc R15 được ghi lại, hãy kiểm tra rò rỉ bộ nhớ hoặc phình to. Người ta thường thấy một số trao đổi, ~50 MB trên Thời gian chạy chung. Không gian riêng tư dynos không hoán đổi bộ nhớ mà thay vào đó sẽ khởi động lại khi hết bộ nhớ. Xem R14 - Vượt quá hạn ngạch bộ nhớ trong Ruby (MRI) và Nút khắc phục sự cố. js Sử dụng bộ nhớ để có hướng dẫn cụ thể về điều tra việc sử dụng bộ nhớ trong các ngôn ngữ đó Điều chỉnh và kiểm tra cài đặt đồng thờiTrước tiên, luôn điều chỉnh cài đặt đồng thời trong môi trường dàn dựng để kiểm tra chúng trước khi áp dụng chúng vào sản xuất Sau khi tối ưu hóa các giao dịch chậm và sử dụng tài nguyên, hãy điều chỉnh cài đặt đồng thời. Mức đồng thời lý tưởng kết hợp thời gian phản hồi mong muốn trong khi vẫn nằm trong các nguyên tắc được đề xuất cho tải dyno và dưới hạn ngạch bộ nhớ 85%. Điều chỉnh đồng thời bằng cách thay đổi số lượng luồng, quy trình và dynos
Mặc dù mỗi ứng dụng là duy nhất, đây là thông tin thêm và cài đặt đồng thời mặc định được đề xuất cho một số ngôn ngữ
Luôn kiểm tra các thay đổi đối với cài đặt đồng thời trong môi trường dàn dựng trước khi áp dụng chúng vào sản xuất. Kiểm tra thời gian phản hồi, tải dyno và mức sử dụng bộ nhớ trong quá trình thử nghiệm để giúp điều chỉnh đồng thời. Kiểm tra bằng cách sử dụng các mẫu lưu lượng truy cập khác nhau để xác định có bao nhiêu dyno đáp ứng nhu cầu lưu lượng truy cập cao, thấp và trung bình. Xem bài viết Kiểm tra tải để được hướng dẫn thêm Kích hoạt hoặc điều chỉnh AutoscalingAutoscaling cho phép số lượng web dynos tự động điều chỉnh. Kích hoạt tính năng tự động thay đổi quy mô khi thời gian phản hồi đạt đến ngưỡng giúp ngăn ngừa lỗi H12 vì tính năng này làm tăng tính đồng thời của web bằng cách thêm nhiều dynos. Chọn số lượng dynos tối thiểu và tối đa để chạy dựa trên các bài kiểm tra tải trước đó đối với các mẫu lưu lượng truy cập khác nhau. Luôn kiểm tra các thay đổi đối với cài đặt tự động thay đổi quy mô trong môi trường dàn dựng trước khi áp dụng chúng vào sản xuất. Xem Autoscaling để biết thêm thông tin Rà soát định kỳLên lịch đánh giá hàng quý hoặc hàng năm để thực hiện các bước trong bài viết này. Điều chỉnh tài nguyên một cách thích hợp trong các đánh giá này dựa trên cách mã và mẫu lưu lượng truy cập thay đổi Điều gì gây ra lỗi hết thời gian chờ trong Python?Lý do tạo thời gian chờ là do chương trình đang cố viết 50000 tài liệu cùng một lúc , SDK Python có giá trị mặc định . 5 giây. Có một vài lựa chọn ở đây. Tăng thời gian chờ. Giảm kích thước lô của nhiều hoạt động.
Làm cách nào để tránh ngoại lệ hết thời gian chờ trong Selenium Webdriver Python?Giải pháp . Bạn có thể tăng thời gian chờ theo cách thủ công bằng cách nhấn và dùng thử. Nếu sự cố vẫn tiếp diễn trong một khoảng thời gian dài hơn, có thể có một số vấn đề khác và bạn nên tiếp tục giải pháp tiếp theo Bạn có thể thêm thời gian chờ một cách rõ ràng bằng cách sử dụng JavaScript Executor Python có thời gian chờ không?Sử dụng quy trình con để hết thời gian chờ lệnh bên ngoài
. 5, có một API run() tiện dụng và được khuyên dùng trong mô-đun quy trình con, có hỗ trợ hết thời gian chờ tích hợp sẵn Since Python 3.5, there's a handy and recommended run() API in subprocess module, which has built-in timeout support . Khi hết thời gian, nó sẽ tăng ngoại lệ TimeoutExpired. |