Lỗi thời gian chờ

Bạn đang xem tài liệu về Apigee Edge.
Chuyển đến Tài liệu về Apigee X.
thông tin

Triệu chứng

Không triển khai được các bản sửa đổi proxy API thông qua giao diện người dùng Edge hoặc API quản lý có 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ể xảy ra

Dưới đây là những nguyên nhân điển hình dẫn đến vấn đề này:

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

Vấn đề 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 đây. Nếu bạn đang sử dụng Edge Public Cloud, hãy liên hệ với Bộ phận hỗ trợ Apigee Edge.

Chẩn đoán

  1. Nhận trạng thái triển khai của API cụ thể hiển thị lỗi bằng cách làm như sau lệnh gọi API quản lý:
    curl -v http://<management-server-IPaddress>:<port#>/organizations/<orgname>/environments/<envname>/apis/<apiname>/deployments -u <username>
    

    Kết quả 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ả mẫu ở trên cho thấy lỗi đã xảy ra trên một trong các Bộ xử lý thư có mã nhận dạng duy nhất (UUID) "ebbc1078-cbde-4a00-a7db-66a3c1b2b748".

  2. Dựa trên kết quả trạng thái triển khai cho proxy API của bạn, hãy đăng nhập vào từng Thông báo Bộ xử lý có mã nhận dạng duy nhất (UUID) tương ứng đã báo lỗi và thực hiện các bước sau:
    1. Kiểm tra xem Bộ xử lý thư có đang nghe trên cổng 4528 hay không:
      netstat -an | grep LISTEN | grep 4528
      

      Nếu Bộ xử lý thông báo không nghe trên cổng 4528, hãy khởi động lại Thông báo Bộ xử lý:

      /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ý được hiển thị ở bước 1 ở trên. Nếu không có lỗi, thì tức là vấn đề đã được giải quyết.
  3. Nếu sự cố vẫn tiếp diễn, hãy kiểm tra kết nối từ Máy chủ quản lý đến Thư Bộ xử lý trên cổng 4528 bằng cách làm theo các bước sau:
    1. Nếu có thể dùng telnet, hãy dùng telnet:
      telnet <MessageProcessor_IP> 4528
      
    2. Nếu không có telnet, hãy sử 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 "Kết nối bị từ chối" hoặc "Kết nối đã hết thời gian chờ", sau đó hãy tương tác đội ngũ vận hành mạng.
  4. Kiểm tra khả năng kết nối từ Bộ xử lý thư đế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ó thể dùng telnet, hãy dùng telnet:
      telnet <management-server-IP> 4526
      
    2. Nếu không có telnet, hãy sử 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 "Kết nối bị từ chối" hoặc "Kết nối đã hết thời gian chờ", hãy thu hút nhóm vận hành mạng.
  5. Hãy làm việc với nhóm vận hành mạng của bạn 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à Thông báo Bộ xử lý.
    2. Loại bỏ mọi quy tắc hạn chế về tường lửa hoặc quy tắc bảo mật được thiết lập giữa các Máy chủ quản lý và Bộ xử lý tin nhắn để cho phép kết nối đến cổng 4526 trên máy chủ quản lý, và khả năng kết nối từ Máy chủ quản lý đến Bộ xử lý thư 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ì nó cho biết lỗi đã được giải quyết.
  7. Nếu sự cố vẫn tiếp diễn, hãy kiểm tra xem có sự cố mạng của Bộ xử lý thông báo hay không. Nếu có sự cố mạng, việc khởi động lại Trình xử lý thông báo cụ thể sẽ hiển thị 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 sự cố vẫn tiếp diễn, hãy kiểm tra nhật ký Máy chủ quản lý tại: (/opt/apigee/var/log/edge-management-server/logs/system.log).

    Lỗi cuộc gọi mẫu đã hết thời gian chờ 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 nhận thấy một lỗi tương tự như trong ví dụ trên, hãy tăng RPC trên Máy chủ quản lý để nếu có mạng bị chậm thì máy chủ sẽ để Máy chủ quản lý kết nối với Trình xử lý thư.

Độ 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 đây. Nếu bạn đang sử dụng Edge Public Cloud, hãy liên hệ với Bộ phận 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 quản lý Máy chủ, nếu chưa tồn tại.
    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 lên 40 giây. Hãy thiết lập như sau:

      conf_cluster_rpc.connect.timeout=40
      
    3. Đảm bảo tệp này thuộc sở hữu của API:
      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ý.
    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 Proxy API được triển khai mà không gặp bất kỳ vấn đề nào, thì điều đó cho thấy vấn đề đã được giải quyết.
  2. Nếu sự cố vẫn tiếp diễn, hãy thu thập tcpdump từ Máy chủ quản lý và Bộ xử lý thư. Bật tcpdump trên từng máy chủ rồi bắt đầu triển khai Proxy API từ giao diện người dùng hoặc 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ư:
      tcpdump -i any -s 0 host <management-server-IP address> -w <File name>
      
    3. Liên hệ với Bộ phận hỗ trợ Apigee Edge để được hỗ trợ về đang phân tích các tcpdumps và khắc phục sự cố hơn nữa.

Lớn Gói proxy API

Chẩn đoán

  1. Kiểm tra kích thước của gói proxy API đang gặp lỗi triển khai quan sát thấy.
  2. Nếu kích thước khá lớn (10MB trở lên) thì rất có thể Thông báo Đơn vị xử lý có thể 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 tiếp tục chuyển đến Gói proxy API 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 đây. Nếu bạn đang sử dụng Edge Public Cloud, hãy liên hệ với Bộ phận hỗ trợ Apigee Edge.

Tăng thời gian chờ RPC trên Máy chủ quản lý để Trình xử lý thư 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 thời gian chờ RPC giá trị:

  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. Hãy thiết lập như sau:

    conf_cluster_rpc.connect.timeout=40
    
  3. Đảm bảo tệp này thuộc sở hữu của API:
    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ủ.

Nếu sự cố vẫn tiếp diễn, hãy liên hệ với Bộ phận hỗ trợ Apigee Edge để để hỗ trợ thêm.