sách gpt4 ai đã đi

Lỗi mạng ngẫu nhiên và thỉnh thoảng (mã NSURLErrorDomain=-1001 và mã NSURLErrorDomain=-1005)

In lại Tác giả: Technical Little Cat Thời gian cập nhật: 2023-10-29 10:18:03 28 4
mua khóa gpt4 Nike

Vài ngày gần đây tôi đã cố gắng gỡ lỗi mạng từ d00m. Tôi sắp hết ý tưởng/gợi ý rồi và tôi hy vọng những người dùng SO khác có kinh nghiệm quý báu có thể giúp ích cho tôi. Tôi ước mình có thể cung cấp mọi thông tin có liên quan, nhưng cá nhân tôi không thể kiểm soát được môi trường máy chủ.

Mọi chuyện bắt đầu khi người dùng nhận thấy một số "lỗi mạng" trong ứng dụng của chúng tôi. Lỗi này dường như xảy ra ngẫu nhiên, không liên quan đến kết nối internet, phiên bản iOS hoặc bản cập nhật phần mềm. Có hai lỗi đang xảy ra ở hậu cảnh:

Tên miền lỗi=NSURLErrorDomain Code=-1001 "Yêu cầu đã hết thời gian chờ."

Thường xuyên hơn:

Tên miền lỗi=kCFErrorDomainCFNetwork Code=-1005 "Kết nối mạng đã bị mất.

Sau khi gỡ lỗi trong vài ngày, tôi đã tái hiện được những lỗi này (xảy ra ngẫu nhiên) bằng cách khởi chạy khoảng 10 lần. Thực hiện 10 yêu cầu ngẫu nhiên (GET và POST) tới hệ thống phụ trợ của chúng tôi với bộ hẹn giờ ngủ ngẫu nhiên (đặt từ 1-20 giây) giữa mỗi yêu cầu. Tuy nhiên, điều này chỉ xảy ra trong thời gian đó. Những gì tôi đã trải qua trong vài ngày qua là khi "thời kỳ lỗi" bắt đầu, tôi nhận được một trong hai lỗi sau mỗi một hoặc hai lần chạy mã (có nghĩa là tỷ lệ lỗi là 1/10 hoặc 1/20 yêu cầu). Tỷ lệ lỗi này kéo dài trong vài giờ, sau đó lỗi biến mất trong vài giờ, rồi lại bắt đầu.

Một số mẹo về cài đặt:

  • Xảy ra trên thiết bị và trình mô phỏng
  • Xảy ra trên iOS 8.4 và iOS 7.1 - mặc dù phiên bản 8.4 là phiên bản chính tôi sử dụng để thử nghiệm.
  • Chúng tôi sử dụng Phiên NSURL Gửi yêu cầu kết nối mạng. Chúng tôi cũng bao gồm AFNetworking (đã cập nhật lên phiên bản mới nhất), nhưng chúng tôi chỉ sử dụng phần bảo mật cho SSL Pinning. Ngay cả khi tắt hoàn toàn SSL Pinning, lỗi vẫn tiếp diễn.

Sau đây là một số phát hiện tôi đã viết ra trong vài ngày qua:

  • Có vẻ như điều này chỉ xảy ra trong môi trường sản xuất của chúng tôi có cấu hình khác với môi trường dàn dựng. Điều này làm tôi nghĩ rằng nó có thể liên quan đến cuộc thảo luận giữ sống Lỗi liên quan đâyđây Tuy nhiên, bộ phận điều hành của chúng tôi đã thiết lập một môi trường dàn dựng mới gửi cùng một giữ sống tiêu đề, nhưng điều này không gây ra lỗi trên môi trường dàn dựng.
  • Ứng dụng Android của chúng tôi không thể tái tạo lỗi bằng cách sử dụng cùng một thiết lập yêu cầu. Ngoài ra, chúng tôi chưa nhận được bất kỳ sự cố nào từ khách hàng liên quan đến "lỗi mạng" trong ứng dụng Android.

Tôi linh cảm rằng vấn đề này có liên quan đến môi trường máy chủ và việc triển khai HTTP trong iOS. Tuy nhiên, tôi không thể tìm ra một mô hình thuyết phục nào để chứng minh điều gì đó. Tôi đã thiết lập tương tự bằng một tập lệnh Rails đơn giản và khi "chu kỳ lỗi" tiếp theo xảy ra, tôi sẽ sẵn sàng thử tái tạo nó bên ngoài phạm vi iOS. Tôi sẽ cập nhật câu hỏi khi điều này xảy ra.

Tôi không tìm kiếm giải pháp liên quan đến việc thiết lập lại cài đặt wifi, tắt trình giả lập hoặc bất cứ điều gì tương tự như vậy vì tôi không coi đó là giải pháp khả thi trong môi trường sản xuất. Tôi cũng đã nghĩ đến việc sửa lỗi vòng lặp thử lại như đã đề cập trong sự cố GitHub, nhưng tôi coi đây là giải pháp cuối cùng.

Nếu bạn cần thêm thông tin, vui lòng cho tôi biết.

1 Câu trả lời

Theo kinh nghiệm của tôi, những vấn đề như thế này thường chỉ ra tình trạng mất gói tin hàng loạt, đặc biệt là trong mạng di động nơi những thay đổi nhỏ trong nhiễu đa đường và các vấn đề khác có thể tạo nên sự khác biệt giữa việc lưu lượng có được truyền đi đáng tin cậy hay không.

Một khả năng khác có thể xảy ra là việc triển khai NAT kém chất lượng, trong trường hợp không may là khoảng thời gian chờ của máy chủ đủ dài để khiến NAT ngắt kết nối TCP.

Dù bằng cách nào, cách duy nhất để biết chắc chắn điều gì đang xảy ra là theo dõi gói tin. Để thực hiện việc này, hãy kết nối máy Mac của bạn với Internet thông qua kết nối có dây, bật tính năng chia sẻ kết nối qua Wi-Fi, sau đó kết nối thiết bị iOS của bạn với mạng Wi-Fi đó. Sau đó chạy Wireshark và yêu cầu nó giám sát giao diện cầu nối. Sau đây là giải thích:

http://www.howtogeek.com/104278/how-to-use-wireshark-to-capture-filter-and-inspect-packets/

Từ đó, bạn sẽ có thể thấy chính xác nội dung nào đã được gửi và khi nào. Điều này có thể giúp hiểu rõ hơn lý do dẫn đến thất bại.

Liên quan đến iOS - Lỗi mạng ngẫu nhiên và thỉnh thoảng (mã NSURLErrorDomain = -1001 và mã NSURLErrorDomain = -1005), chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/32501604/

28 4 0
Công nghệ mèo con
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com