증상
로컬 컴퓨터에서 VPN 또는 프록시 클라이언트를 실행한 상태로 이미지 생성 앱을 개발하거나 디버깅하고 있습니다(많은 개발자가 AI 코딩 도구의 인터넷 접속을 위해 이를 켜 둡니다). 이때 다음과 같은 증상이 나타납니다.- 이미지 요청이
socket hang up,ECONNRESET,RemoteDisconnected또는Connection aborted와 같은 연결 오류로 자주 실패합니다. - 클라이언트 타임아웃을 600초나 심지어 900초로 설정했음에도 약 90~180초 후에 요청이 끊어집니다.
- 여러 요청이 마치 한 번에 끊긴 것처럼 동시에 실패하는 경우가 많습니다.
- 처리 속도가 느린 모델일수록 더 자주 영향을 받습니다(예: 이미지당 보통 60~120초가 소요되는
gpt-image-2-vip). - 호출 로그에서는 이러한 요청 대부분이 성공하여 과금된 것으로 표시됩니다.
빠른 답변
이는 동시 실행 수 제한이나 APIYI 타임아웃이 아닙니다. 컴퓨터의 프록시가 일정 시간 동안 데이터가 전송되지 않은 연결을 닫고 있는 것입니다.이미지가 생성되는 동안에는 연결을 통해 데이터가 전혀 전송되지 않습니다. 이미지 생성에 시간이 오래 걸릴수록 프록시가 해당 연결을 유휴 상태로 간주하여 닫을 가능성이 높아집니다.
api.apiyi.com을(를) 직접 라우팅(프록시 우회)하면 문제가 해결됩니다. APIYI는 중국 본토에서 직접 접속할 수 있습니다.발생 원인
스트리밍을 사용하지 않는 이미지 요청은 세 단계로 진행됩니다:- 업로드: prompt와 참조 이미지를 전송하며, 몇 초에서 수십 초 정도 소요됩니다.
- 대기: 서버에서 이미지를 생성하며, 보통 60~200초가 걸립니다. 이 시간 동안 연결을 통해 오가는 데이터는 없습니다.
- 다운로드: 완결된 이미지가 한 번에 반환됩니다.
connIdle이며 기본값은 300초이지만, 프록시 서버 운영자가 이를 훨씬 낮게 설정할 수 있으며, 사용자의 컴퓨터에서는 이를 확인하거나 변경할 수 없습니다. 당사에서 조사한 사례에서는 이 값이 약 90초였습니다.
그 결과 다음과 같은 현상이 발생합니다:
- 클라이언트 타임아웃 설정으로는 해결할 수 없습니다. 타임아웃은 프로그램이 대기할 의향이 있는 시간만을 지정합니다. 중간의 프록시가 먼저 연결을 종료하므로, 프로그램 입장에서는 연결이 끊어진 것으로만 나타납니다.
- 요청이 한꺼번에 실패하는 이유: 프록시는 일반적으로 타이머에 맞춰 너무 오랫동안 유휴 상태였던 모든 연결을 한 번에 정리하므로, 이미지를 기다리던 여러 요청이 같은 초에 동시에 실패합니다.
- 채팅 및 코딩 도구가 정상 작동하는 이유: 스트리밍 채팅은 데이터를 지속적으로 전송하므로 연결이 유휴 상태가 되지 않습니다. 반면 이미지 생성은 몇 분 동안 아무런 데이터도 전송하지 않습니다.
확인 방법
1
소요 시간 확인
오류가 발생하기 전까지 실패한 각 요청의 실행 시간을 기록합니다. 소요 시간이 특정 고정값(예: 90초 또는 180초) 부근에 집중되어 있고 여러 요청이 동일한 초에 실패하는 경우가 빈번하다면, 프록시 유휴 타임아웃(idle timeout)이 원인일 가능성이 거의 확실합니다.
2
호출 로그와 비교
호출 로그에서 동일한 시간대를 조회합니다. 프로그램에서는 연결 끊김이 보고되었으나 로그에는 성공 및 과금된 요청으로 표시된다면, APIYI가 이미지 생성을 완료했으나 사용자에게 전달되는 연결이 끊어진 것입니다.
3
직접 경로로 소규모 배치 실행
아래 설명에 따라
api.apiyi.com 경로를 직접 연결하고 동일한 파라미터로 10~20개의 이미지를 실행합니다. 연결 끊김 현상이 사라진다면 프록시가 원인이었던 것입니다.해결 방법
- 프록시 클라이언트의 직접 연결 규칙(권장)
- 프로그램 내에서 프록시 우회
- 프록시를 반드시 사용해야 하는 경우
프록시 클라이언트에 APIYI에 대한 직접 연결 규칙을 추가하십시오. 다른 모든 트래픽은 계속 프록시를 통과하므로 AI 코딩 도구에는 영향을 주지 않습니다.Clash / Clash Verge / mihomo의 경우 설정 파일의 v2rayN 및 유사한 클라이언트의 경우 라우팅 설정의 직접 연결 목록에
rules 최상단에 다음을 추가하십시오.apiyi.com을 추가하십시오.TUN 모드 또는 글로벌 모드에서는 프록시가 컴퓨터의 모든 프로그램 트래픽을 캡처하므로 코드에서 이를 우회할 수 없습니다. 이와 같은 직접 연결 규칙을 추가하는 것만이 유일한 해결 방법입니다.
서버에 배포한 후에도 이 문제가 발생합니까?
일반적으로는 발생하지 않습니다. 서버는 보통 프록시 없이 실행되며 APIYI에 직접 연결되므로, 유휴 연결을 닫는 프록시가 존재하지 않습니다. 이는 권장되는 프로덕션 환경 구성이기도 합니다. 중국 본토의 클라우드 서버에서도api.apiyi.com에 직접 접근할 수 있습니다.
서버와 APIYI 사이에 다른 계층이 존재한다면 해당 계층에도 유휴 타임아웃이 적용됩니다. 배포 시 다음 항목을 확인하십시오:
단일 이미지 작업은 대개 클라우드 NAT 기본값보다 짧은 60~200초 이내에 완료됩니다. 자체 리버스 프록시를 추가했거나 서버 역시 프록시를 거치도록 구성된 경우에만 추가 작업이 필요합니다.
자주 묻는 질문
TCP keepalive를 활성화하면 도움이 됩니까?
TCP keepalive를 활성화하면 도움이 됩니까?
클라우드 NAT 게이트웨이 환경에서는 도움이 됩니다. keepalive 프로브가 NAT에 연결이 여전히 유지되고 있음을 알리기 때문입니다. 그러나 실제 데이터를 기준으로 유휴 상태를 판단하는 프록시 클라이언트에는 거의 효과가 없으며, keepalive 프로브는 데이터로 간주되지 않습니다. 로컬 개발 환경의 경우에는 직접 라우팅하는 것이 여전히 올바른 해결책입니다.
웹 콘솔과 AI 코딩 도구는 왜 정상적으로 작동합니까?
웹 콘솔과 AI 코딩 도구는 왜 정상적으로 작동합니까?
해당 도구들의 요청은 빠르게 반환되거나 출력을 지속적으로 스트리밍하므로 연결이 90초 이상 유휴 상태로 유지되지 않습니다. 몇 분 동안 아무것도 전송하지 않다가 한 번에 모든 결과를 반환하는 이미지 생성과 같은 요청에서만 이 문제가 발생합니다.
이것은 빈 502 오류 문제와 동일합니까?
이것은 빈 502 오류 문제와 동일합니까?
두 현상 모두 로컬 프록시로 인해 발생하지만 증상이 다릅니다. 빈 502 오류 사례에서는 프록시가 본문 없는 502 오류를 임의로 생성합니다. 반면 이 문제에서는 이미지를 기다리는 동안 연결이 끊어지며 프로그램에는 연결 끊김 현상으로 나타납니다. 두 경우 모두 해결 방법은 동일합니다. APIYI 요청이 프록시를 거치지 않도록 설정하는 것입니다.
연결이 끊긴 요청에 대한 과금은 환불받을 수 있습니까?
연결이 끊긴 요청에 대한 과금은 환불받을 수 있습니까?
이러한 연결 끊김은 APIYI가 이미 이미지를 생성하고 과금을 완료한 후 사용자와 APIYI 사이의 프록시에서 발생합니다. 금액이 큰 경우 시간대(시간대 정보 포함, 예: 16:30-17:00 (UTC+8))와 사용자 이름을 고객지원팀에 전달해 주시면 호출 로그를 함께 확인해 드리겠습니다.
이렇게 오래 기다리지 않고 호출할 수 있는 방법이 있습니까?
이렇게 오래 기다리지 않고 호출할 수 있는 방법이 있습니까?
이미지 엔드포인트는 현재 동기 방식으로 반환되며 작업 ID 폴링을 지원하지 않습니다. 자세한 내용은 비동기 이미지 API가 있습니까? 작업 ID로 결과를 조회할 수 있습니까?를 참고하십시오. APIYI로 직접 라우팅되면 오랜 대기 시간 자체는 문제가 되지 않습니다.
관련 문서
스크립트에서 502 오류가 발생하지만 호출 로그에는 아무것도 없습니까?
로컬 프록시로 인해 생성된 빈 502 오류입니다. 시스템 프록시를 우회하여 해결하십시오.
API를 사용하는 데 프록시가 필요합니까?
중국 본토에서 직접 접속할 수 있으며 프록시나 VPN이 필요하지 않습니다.
API 타임아웃을 방지하려면 어떻게 해야 합니까?
타임아웃 설정 및 단계별 문제 해결 방법
비동기 이미지 API가 있습니까?
응답이 동기식인 이유와 이를 비동기 방식으로 래핑하는 방법