시간 초과 오류

현재 Apigee Edge 문서가 표시되고 있습니다.
Apigee X 문서로 이동
정보

증상

Edge UI 또는 관리 API를 통한 API 프록시 버전 배포가 시간 초과 오류와 함께 실패합니다.

오류 메시지

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

가능한 원인

이 문제의 일반적인 원인은 다음과 같습니다.

원인 세부정보 대상
네트워크 연결 문제 네트워크 연결 문제나 방화벽 규칙으로 인해 관리 서버와 메시지 프로세서 간에 통신이 실패합니다. 프라이빗 클라우드 사용자만
대규모 API 프록시 번들 API 프록시 번들의 크기가 커서 RPC 시간 초과가 발생하는 경우 메시지 프로세서를 활성화하는 데 시간이 오래 걸릴 수 있습니다. 프라이빗 및 퍼블릭 클라우드 사용자

네트워크 연결 문제

참고: Edge Private Cloud 사용자만 다음 단계를 수행할 수 있습니다. Edge Public Cloud를 사용하는 경우 Apigee Edge 지원팀에 문의하세요.

진단

  1. curl -v http://<management-server-IPaddress>:<port#>/organizations/<orgname>/environments/<envname>/apis/<apiname>/deployments -u <username>
    
    관리 API 호출을 사용하여 오류를 보여주는 특정 API의 배포 상태를 가져옵니다.

    오류를 보여주는 샘플 출력:

    { 
                    "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"
                    } 
    

    위의 샘플 출력은 UUID가 "ebbc1078-cbde-4a00-a7db-66a3c1b2b748"인 메시지 프로세서 중 하나에서 오류가 발생했음을 보여줍니다.

  2. API 프록시의 배포 상태 출력에 따라 오류가 표시된 해당 UUID로 각 메시지 프로세서에 로그인하고 다음 단계를 수행합니다.
    1. 메시지 프로세서가 포트 4528에서 수신 대기하는지 확인합니다.
      netstat -an | grep LISTEN | grep 4528
      

      메시지 프로세서가 포트 4528에서 수신 대기하지 않으면 메시지 프로세서를 다시 시작합니다.

      /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
      
    2. 위의 1단계에 표시된 관리 API 호출을 사용하여 API 프록시의 배포 상태를 다시 확인합니다. 오류가 없다면 문제가 해결된 것입니다.
  3. 문제가 지속되면 다음 단계에 따라 관리 서버에서 포트 4528의 메시지 프로세서로의 연결을 테스트하세요.
    1. telnet을 사용할 수 있으면 telnet을 사용합니다.
      telnet <MessageProcessor_IP> 4528
      
    2. telnet을 사용할 수 없는 경우 netcat을 사용하여 다음과 같이 연결을 확인합니다.
      nc -vz <MessageProcessor_IP> 4528
      
    3. '연결 거부됨' 또는 '연결 시간이 초과되었습니다'라는 응답이 표시되면 네트워크 운영팀에 문의하세요.
  4. 다음 단계에 따라 메시지 프로세서와 포트 4526의 관리 서버로의 연결을 테스트합니다.
    1. telnet을 사용할 수 있으면 telnet을 사용합니다.
      telnet <management-server-IP> 4526
      
    2. telnet을 사용할 수 없는 경우 netcat을 사용하여 다음과 같이 연결을 확인합니다.
      nc -vz <management-server-IP> 4526 
      
    3. '연결 거부됨' 또는 '연결 시간이 초과되었습니다'라는 응답이 표시되면 네트워크 운영팀에 문의하세요.
  5. 네트워크 운영팀과 협력하여 다음을 수행합니다.
    1. RPC 프로토콜이 관리 서버와 메시지 프로세서 모두에서 허용되는지 확인하세요.
    2. 관리 서버의 포트 4526에 대한 연결과 관리 서버의 포트 4528에서 메시지 프로세서로의 연결을 허용하도록 관리 서버와 메시지 프로세서 사이에 설정된 방화벽 제한이나 보안 규칙을 삭제합니다.
  6. 배포 상태를 다시 확인합니다 (위의 1단계 참고). 오류가 표시되지 않으면 오류가 해결되었음을 나타냅니다.
  7. 문제가 지속되면 메시지 프로세서에 네트워크 문제가 있는지 확인하세요. 네트워크 문제가 있는 경우 배포 상태 출력에 따라 시간 초과 오류가 표시된 특정 메시지 프로세서를 다시 시작하면 문제가 해결될 수도 있습니다.
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    
  8. 문제가 계속되면 (/opt/apigee/var/log/edge-management-server/logs/system.log)에서 관리 서버 로그를 확인하세요.

    관리 서버 로그의 통화 시간 초과 오류 샘플

    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] 
            
    

    위 예에 표시된 것과 유사한 오류가 발생하면 관리 서버에서 RPC 시간 제한을 늘려 네트워크 속도가 저하되면 관리 서버가 메시지 프로세서에 연결할 수 있는 시간을 제공합니다.

해상도

참고: Edge Private Cloud 사용자만 다음 단계를 수행할 수 있습니다. Edge Public Cloud를 사용하는 경우 Apigee Edge 지원팀에 문의하세요.

  1. RPC 제한 시간을 늘리려면 다음 단계를 따르세요.
    1. 관리 서버 머신에 /opt/apigee/customer/application/management-server.properties 파일이 아직 없다면 이 파일을 만듭니다.
    2. 이 파일에
      conf_cluster_rpc.connect.timeout=<time in seconds>
      
      줄을 추가합니다.

      기본 RPC 시간 제한 값은 10이며 40초로 늘리는 것이 좋습니다. 다음과 같이 설정합니다.

      conf_cluster_rpc.connect.timeout=40
      
    3. Apigee에서 소유한 파일인지 확인합니다.
      chown apigee:apigee /opt/apigee/customer/application/management-server.properties
      
    4. 관리 서버를 다시 시작합니다.
      /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
      
    5. 관리 서버가 두 개 이상 있으면 모든 관리 서버에서 위 단계를 반복합니다.
    6. Edge UI에서 또는 Edge 관리 API 호출을 사용하여 API 프록시를 배포합니다. API 프록시가 문제 없이 배포되면 문제가 해결되었음을 나타냅니다.
  2. 문제가 지속되면 관리 서버 및 메시지 프로세서에서 tcpdump 명령어를 수집합니다. 각 서버에서 tcpdump 명령어를 사용 설정한 후 UI 또는 관리 API를 사용하여 API 프록시 배포를 시작합니다.
    1. 관리 서버에서 아래 tcpdump 명령어를 실행합니다.
      tcpdump -i any -s 0 host <message-processor-IP address> -w <File name>
      
    2. 메시지 프로세서에서 아래 tcpdump 명령어를 실행합니다.
      tcpdump -i any -s 0 host <management-server-IP address> -w <File name>
      
    3. tcpdumps 분석에 대한 지원을 받고 문제를 해결하려면 Apigee Edge 지원팀에 문의하세요.

대규모 API 프록시 번들

진단

  1. 배포 오류가 관찰되는 API 프록시 번들의 크기를 확인합니다.
  2. 크기가 상당히 큰 경우 (10MB 이상) 메시지 프로세서가 API 프록시를 활성화하는 데 더 많은 시간이 필요할 수 있습니다.
  3. API 프록시 번들 크기가 15MB보다 큰 경우 15MB보다 큰 API 프록시 번들을 진행합니다.

해상도

참고: Edge Private Cloud 사용자만 다음 단계를 수행할 수 있습니다. Edge Public Cloud를 사용하는 경우 Apigee Edge 지원팀에 문의하세요.

메시지 프로세서가 대규모 API 프록시 번들을 활성화하는 데 충분한 시간을 갖도록 관리 서버의 RPC 제한 시간을 늘립니다. RPC 제한 시간 값을 늘리려면 다음 단계를 따르세요.

  1. 관리 서버 머신에 /opt/apigee/customer/application/management-server.properties 파일이 없으면 이 파일을 만듭니다.
  2. 이 파일에
    conf_cluster_rpc.connect.timeout=<time in seconds>
    
    줄을 추가합니다.

    기본 RPC 시간 제한 값은 10이며 40초로 늘리는 것이 좋습니다. 다음과 같이 설정합니다.

    conf_cluster_rpc.connect.timeout=40
    
  3. Apigee에서 소유한 파일인지 확인합니다.
    chown apigee:apigee /opt/apigee/customer/application/management-server.properties
    
  4. 관리 서버를 다시 시작합니다.
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
    
  5. 관리 서버가 두 개 이상인 경우 모든 관리 서버에서 위 단계를 반복합니다.

문제가 계속되면 Apigee Edge 지원팀에 문의하여 추가 지원을 받으세요.