Lỗi thời gian chờ

Bạn đang xem tài liệu về Apigee Edge.
Truy cập vào tài liệu Apigee X.
thông tin

Dấu hiệu

Việc triển khai các bản sửa đổi của proxy API thông qua giao diện người dùng Edge hoặc API quản lý không thành công do lỗi hết thời gian chờ.

Thông báo lỗi

Click to change deployment status. 
The revision is deployed and traffic can flow, but flow may be impaired. 
Error: Call timed out; either server is down or server is not reachable

Nguyên nhân có thể dẫn đến vấn đề này

Các nguyên nhân thường gặp dẫn đến vấn đề này là:

Nguyên nhân Chi tiết Trong khoảng
Vấn đề về khả năng kết nối mạng Lỗi giao tiếp giữa Máy chủ quản lý và Trình xử lý thông báo do các vấn đề về khả năng kết nối mạng hoặc quy tắc tường lửa. Chỉ dành cho người dùng Đám mây riêng tư
Gói proxy API lớn Trình xử lý thông báo có thể mất nhiều thời gian để kích hoạt nếu gói proxy API có kích thước lớn, dẫn đến hết thời gian chờ RPC. Người dùng đám mây riêng tư và đám mây công cộng

Sự cố về kết nối mạng

Lưu ý: Chỉ người dùng Edge Private Cloud mới có thể thực hiện các bước sau. Nếu bạn đang sử dụng Đám mây công khai Edge, hãy liên hệ với Nhóm hỗ trợ Apigee Edge.

Chẩn đoán

  1. Lấy trạng thái triển khai cho API cụ thể cho thấy lỗi bằng cách sử dụng lệnh gọi API quản lý sau:
    curl -v http://<management-server-IPaddress>:<port#>/organizations/<orgname>/environments/<envname>/apis/<apiname>/deployments -u <username>

    Đầu ra mẫu cho thấy lỗi:

    { 
                    "error": "Call timed out; either server is down or server is not reachable", 
                    "status": "error", 
                    "type": [ 
                    "message-processor" 
                    ], 
                    "uUID": "ebbc1078-cbde-4a00-a7db-66a3c1b2b748" 
                    }, 
                    { 
                    "status": "deployed", 
                    "type": [ 
                    "message-processor" 
                    ], 
                    "uUID": "204e2b7e-52f7-46d9-b458-20f9bfb51e6d" 
                    }, 
                    { 
                    "status": "deployed", 
                    "type": [ 
                    "router" 
                    ], 
                    "uUID": "967e63c6-ee95-47c0-9608-f4a32638fb1e" 
                    }, 
                    { 
                    "status": "deployed", 
                    "type": [ 
                    "router" 
                    ], 
                    "state" : "error"
                    } 

    Kết quả đầu ra mẫu ở trên cho thấy lỗi xảy ra trên một trong các Trình xử lý thông báo có UUID "ebbc1078-cbde-4a00-a7db-66a3c1b2b748".

  2. Dựa trên đầu ra trạng thái triển khai cho proxy API của bạn, hãy đăng nhập vào từng Trình xử lý thông báo bằng UUID tương ứng cho thấy lỗi và thực hiện các bước sau:
    1. Kiểm tra xem Message Processor có đang theo dõi trên cổng 4528 hay không:
      netstat -an | grep LISTEN | grep 4528

      Nếu Trình xử lý tin nhắn không theo dõi trên cổng 4528, hãy khởi động lại Trình xử lý tin nhắn:

      /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    2. Kiểm tra lại trạng thái triển khai của proxy API bằng cách sử dụng lệnh gọi API quản lý như trong bước 1 ở trên. Nếu không có lỗi, tức là vấn đề đã được giải quyết.
  3. Nếu vấn đề vẫn tiếp diễn, hãy kiểm tra khả năng kết nối từ Máy chủ quản lý đến Trình xử lý thông báo trên cổng 4528 theo các bước sau:
    1. Nếu có telnet, hãy dùng telnet:
      telnet <MessageProcessor_IP> 4528
    2. Nếu không có telnet, hãy dùng netcat để kiểm tra khả năng kết nối như sau:
      nc -vz <MessageProcessor_IP> 4528
    3. Nếu bạn nhận được phản hồi "Connection Refused" (Kết nối bị từ chối) hoặc "Connection timed out" (Đã hết thời gian chờ kết nối), hãy liên hệ với nhóm vận hành mạng của bạn.
  4. Kiểm tra khả năng kết nối từ Trình xử lý tin nhắn đến Máy chủ quản lý trên cổng 4526 bằng cách làm theo các bước sau:
    1. Nếu có telnet, hãy dùng telnet:
      telnet <management-server-IP> 4526
    2. Nếu không có telnet, hãy dùng netcat để kiểm tra khả năng kết nối như sau:
      nc -vz <management-server-IP> 4526 
    3. Nếu bạn nhận được phản hồi "Connection Refused" (Kết nối bị từ chối) hoặc "Connection timed out" (Kết nối hết thời gian chờ), hãy liên hệ với nhóm vận hành mạng của bạn.
  5. Làm việc với nhóm vận hành mạng và thực hiện những việc sau:
    1. Đảm bảo giao thức RPC được cho phép trên cả Máy chủ quản lý và Trình xử lý thông báo.
    2. Xoá mọi quy định hạn chế của tường lửa hoặc quy tắc bảo mật được thiết lập giữa Máy chủ quản lý và Trình xử lý thông báo để cho phép kết nối với cổng 4526 trên máy chủ quản lý và kết nối từ Máy chủ quản lý đến Trình xử lý thông báo trên cổng 4528.
  6. Kiểm tra lại trạng thái triển khai (tham khảo bước 1 ở trên). Nếu bạn không thấy lỗi nào, thì có nghĩa là lỗi đã được khắc phục.
  7. Nếu vấn đề vẫn tiếp diễn, hãy kiểm tra xem Bộ xử lý tin nhắn có gặp vấn đề về mạng hay không. Nếu có sự cố về mạng, việc khởi động lại Trình xử lý thông báo cụ thể cho thấy lỗi hết thời gian chờ (theo đầu ra trạng thái triển khai) có thể khắc phục vấn đề:
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
  8. Nếu vấn đề vẫn tiếp diễn, hãy kiểm tra nhật ký của Máy chủ quản lý tại: (/opt/apigee/var/log/edge-management-server/logs/system.log).

    Lỗi hết thời gian chờ của lệnh gọi mẫu trong Nhật ký máy chủ quản lý

    2016-05-17 09:29:56,448 org:myorg env:prod qtp281969267-360792 ERROR DISTRIBUTION - RemoteServicesConfigEventHandler.configureServers() : exception for server with uuid e1381db7-d83b-4752-ae04-2de33f07e555 : cause = RPC Error 504: Call timed out communication error = true 
            com.apigee.rpc.RPCException: Call timed out 
            at com.apigee.rpc.impl.AbstractCallerImpl.handleTimeout(AbstractCallerImpl.java:64) ~[rpc-1.0.0.jar:na] 
            at com.apigee.rpc.impl.RPCMachineImpl$OutgoingCall.handleTimeout(RPCMachineImpl.java:483) ~[rpc-1.0.0.jar:na] 
            at com.apigee.rpc.impl.RPCMachineImpl$OutgoingCall.access$000(RPCMachineImpl.java:402) ~[rpc-1.0.0.jar:na] 
            at com.apigee.rpc.impl.RPCMachineImpl$OutgoingCall$1.run(RPCMachineImpl.java:437) ~[rpc-1.0.0.jar:na] 
            at io.netty.util.HashedWheelTimer$HashedWheelTimeout.expire(HashedWheelTimer.java:532) ~[netty-all-4.0.0.CR1.jar:na] 
            at io.netty.util.HashedWheelTimer$Worker.notifyExpiredTimeouts(HashedWheelTimer.java:430) ~[netty-all-4.0.0.CR1.jar:na] 
            at io.netty.util.HashedWheelTimer$Worker.run(HashedWheelTimer.java:371) ~[netty-all-4.0.0.CR1.jar:na] 
            at java.lang.Thread.run(Thread.java:745) ~[na:1.7.0_79] 
            

    Nếu bạn gặp phải lỗi tương tự như trong ví dụ trên, hãy tăng thời gian chờ RPC trên Máy chủ quản lý để nếu có bất kỳ sự cố nào về tốc độ mạng, thì Máy chủ quản lý sẽ có thời gian kết nối với Trình xử lý thông báo.

Độ phân giải

Lưu ý: Chỉ người dùng Edge Private Cloud mới có thể thực hiện các bước sau. Nếu bạn đang sử dụng Đám mây công khai Edge, hãy liên hệ với Nhóm hỗ trợ Apigee Edge.

  1. Thực hiện các bước sau để tăng thời gian chờ RPC:
    1. Tạo tệp /opt/apigee/customer/application/management-server.properties trên máy chủ Quản lý nếu chưa có.
    2. Thêm dòng sau vào tệp này:
      conf_cluster_rpc.connect.timeout=<time in seconds>

      Giá trị thời gian chờ RPC mặc định là 10 và bạn nên tăng giá trị này lên 40 giây. Đặt như sau:

      conf_cluster_rpc.connect.timeout=40
    3. Đảm bảo tệp này thuộc sở hữu của apigee:
      chown apigee:apigee /opt/apigee/customer/application/management-server.properties
    4. Khởi động lại Máy chủ quản lý:
      /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
    5. Nếu bạn có nhiều Máy chủ quản lý, hãy lặp lại các bước trên trên tất cả Máy chủ quản lý.
    6. Triển khai proxy API trong giao diện người dùng Edge hoặc bằng cách sử dụng lệnh gọi API quản lý Edge. Nếu API proxy được triển khai mà không gặp vấn đề gì, thì điều đó có nghĩa là vấn đề đã được giải quyết.
  2. Nếu vấn đề vẫn tiếp diễn, hãy thu thập lệnh tcpdump từ Máy chủ quản lý và Trình xử lý thông báo. Bật lệnh tcpdump trên từng máy chủ, sau đó bắt đầu triển khai API Proxy từ giao diện người dùng hoặc bằng cách sử dụng API quản lý:
    1. Chạy lệnh tcpdump bên dưới từ Máy chủ quản lý:
      tcpdump -i any -s 0 host <message-processor-IP address> -w <File name>
    2. Chạy lệnh tcpdump bên dưới từ Trình xử lý thông báo:
      tcpdump -i any -s 0 host <management-server-IP address> -w <File name>
    3. Hãy liên hệ với Nhóm hỗ trợ Apigee Edge để được trợ giúp phân tích tcpdump và khắc phục thêm vấn đề.

Gói proxy API lớn

Chẩn đoán

  1. Kiểm tra kích thước của gói proxy API mà bạn đang gặp lỗi triển khai.
  2. Nếu kích thước này khá lớn (từ 10 MB trở lên), thì rất có thể Trình xử lý thông báo sẽ cần thêm thời gian để kích hoạt proxy API.
  3. Nếu kích thước gói API Proxy lớn hơn 15 MB, hãy chuyển sang phần Gói API Proxy lớn hơn 15 MB.

Độ phân giải

Lưu ý: Chỉ người dùng Edge Private Cloud mới có thể thực hiện các bước sau. Nếu bạn đang sử dụng Đám mây công khai Edge, hãy liên hệ với Nhóm hỗ trợ Apigee Edge.

Tăng thời gian chờ RPC trên Máy chủ quản lý để Trình xử lý thông báo có đủ thời gian kích hoạt các gói proxy API lớn. Thực hiện các bước sau để tăng giá trị thời gian chờ RPC:

  1. Tạo tệp /opt/apigee/customer/application/management-server.properties trên máy chủ quản lý nếu chưa có.
  2. Thêm dòng sau vào tệp này:
    conf_cluster_rpc.connect.timeout=<time in seconds>

    Giá trị thời gian chờ RPC mặc định là 10 và bạn nên tăng giá trị này lên 40 giây. Đặt như sau:

    conf_cluster_rpc.connect.timeout=40
  3. Đảm bảo tệp này thuộc sở hữu của apigee:
    chown apigee:apigee /opt/apigee/customer/application/management-server.properties
  4. Khởi động lại Máy chủ quản lý:
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
  5. Nếu bạn có nhiều Máy chủ quản lý, hãy lặp lại các bước trên cho tất cả Máy chủ quản lý.

Nếu vấn đề vẫn tiếp diễn, hãy liên hệ với Nhóm hỗ trợ Apigee Edge để được trợ giúp thêm.