Curl로A서버에서B서버로Request시타임아웃이걸립니다
비공개
( )
2022.08.31 18:54:00
Curl 로 A서버에서 B서버로 Request 시 타임아웃이 걸립니다.

B서버에서 제공해주는 API를 Curl로 데이터를 보내고 받는 작업 중 입니다.

A서버는 도메인 + https
B서버는 IP + 특정포트 + 사무실내 IP에 물린 서버

A서버에서 B서버로 Curl로 데이터를 보내면 응답이 성공 / 실패를 반복합니다.

10초마다 로그를찍고 반복해 보면 패턴은 아래와 같습니다. (timeout은 A서버에서 5초로 변경)

성공
성공
성공
성공
성공
성공
성공
성공
실패
실패
실패
실패
실패
실패
실패
실패
실패
실패
실패
실패
성공
성공
성공
성공
성공

성공과 실패의 순서는 다를 경우도 있습니다.

B서버측 개발자에게 문의를 남겨도 본인들은 정상적인 데이터를 리턴한다 실패 하는 케이스가 없다고만 하고
그외에 조취는 안하는 상태 입니다.

1. A서버에서 B서버로 보내면 위와같이 응답이 거의 50% 확률로 성공실패를 반복한다.
2. Postman 으로 동일한 데이터를 집어 넣으면 정상작동 (A서버에서 실패할때 테스트 해봄)
3. A서버 소스를 그대로 카피해 C라는 서버로 옴긴뒤 동일 테스트를 진행하면 정상작동
4. 이 상황에서 A서버 또는 B서버의 보안쪽 이슈가 아닐까 해서 B서버에 확인을 요청했지만 사용하는 보안정책이 없다라고 답변받음
5. A서버는 해당 서버 말고도 10개 이상의 웹이 vhost로 서비스되고 있는 서버입니다.
6. 동일한 방식으로 다른 서버와 API통신하는 웹이 있는데 잘 동작합니다. (이 경우는 https 도메인으로 통신하고 특정포트를 사용하지 않습니다)
7. A서버의 문제인가 싶어서 iptables 같은 방화벽을 확인해보면 차단된 내역이 없습니다.
8. A서버의 포트 현황중 B서버의 IP로 조회해 보면 TIMEOUT 걸려 있는 연결이 다수 있습니다.

이런경우는 처음이라 저도 해볼 수 있는 방법들을 찾아 보던 와중에 알지롱에 문의 남겨봅니다.

도와주세효 8668

잡담 | 4,363명이 읽었어요.


8개의 댓글
1 비공개
curl 타임아웃 옵션을 더 길게 해도 타임아웃 되나여?
2022/08/31 19:39
2 비공개
1/ 네 60초로 기본 설정대로 하면 테스트가 너무 늘어져서 저렇게 했습니다. 정상일때는 2초가 안넘고 응답이 오구요
2022/08/31 19:47
3 비공개
포스트맨은 실패가 절대 없다 -> 포스트맨에서 curl 커맨드 export 해서 테스트
-> 문제가 안생긴다? 그럼 해결!

그래도 curl 은 timeout 이 종종 있다?
-> postman proxy 설정 된거 있나 확인 (포스트맨 자체 proxy 설정되있어서 curl 과 다른 루트를 타는 경우가 있음)
-> B 서버측에서 cookie 데이터 잘못되면 응답 안하게 되어있진 않은지 다시 확인 (postman 은 쿠키 알아서 저장/전송 해줌)
-> 그래도 안된다? curl 쓰지말고 postman 자동화로 바꾼다
2022/08/31 19:57
4 비공개
/3 서버 구동상 B서버를 무조건 써야 하고
단순 응답 테스트를 위해서 모든데이터를 동일하게 넣고 한시간정도 테스트 하고 있습니다 ㅠ
2022/08/31 20:00
5 비공개
4/ 댓3에 있는 방식들은 따로 B서버를 바꿀 필요가 없는 애들이니까 한번 차례대로 시도해보세용
2022/08/31 20:14
6 비공개
/5 네 답변 감사합니다. 일단 해볼게용
2022/08/31 20:19
7 비공개
댓3처럼 포스트맨이 만드는 request 를 curl로 export 해서 postman이 만든 curl을 동일하게 테스트 해보고 실패/성공 하는지 보셔야할듯
2022/08/31 21:54
8 비공개
음.. 커널에서 설정 한번 확인해 보세여
TW_reuse 옵셥이 돼있나 보시면 될 것 같습니다.
https://meetup.toast.com/posts/55
2022/09/26 18:20
게시판 목록으로 돌아가기