curl 속도 문의

curl 속도 문의

QA

curl 속도 문의

본문

curl을 사용하여 데이터를 전송하는걸 만들고있는데요

 

https 로 시작하는 도메인과

http 로 시작하는 도메인  

 

각각 2개가 있는데요

 

https 로 전송을 하면 속도가 느립니다

http 로 전송하면 속도가 무난하고요....

그래서 폭풍 구글링해서 찾은게

https://sir.kr/g5_tip/12431

위 팁인데요

 

팁 내용중에 

테스트 방법은 /etc/hosts에 아이피, 도메인을 매핑후 속도 체크를 하는것입니다

아이피 도메인이  해당 전송하는(본인) 아이피 + 본인도메인 을 적으라는건가요?

 

아 작업하면 산넘어 산이네요.... 해결하면 다른게 튀어나오고 아~~ ㅠㅠ 

 

조언좀 부탁드립니다~

감사합니다.

 

 

 

이 질문에 댓글 쓰기 :

답변 3

호출하는 쪽 서버 아이피, 도메인을 정의해야 합니다.

dns 서버에 질의하지 않고 직접 아이피를 찾아가는 방법이고 그렇기에 좀더 빠른데

이 경우는 http 로 접근했을때와 아닌때의 차이 이므로 그 방법이 크게 도움이 될것 같지는 않습니다.

CURLOPT_SSL_VERIFYPEER, CURLOPT_SSL_VERIFYHOST 를 0 으로 설정해보세요


$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
...
curl_close($ch);

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, "데이터");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
curl_setopt($curl, CURLOPT_TIMEOUT, 5);

위 처럼 해서 전송했었는데요.. 속도는 여전히 느리네요

curl 정보를 받는게 있어서 구해봤는데요

{
  "url": "받는 서버 주소",
  "content_type": "application/json;charset=UTF-8",
  "http_code": 200,
  "header_size": 388,
  "request_size": 238,
  "filetime": -1,
  "ssl_verify_result": 0,
  "redirect_count": 0,
  "total_time": 0.242978,
  "namelookup_time": 0.000009,
  "connect_time": 0.000009,
  "pretransfer_time": 0.000026,
  "size_upload": 234039,
  "size_download": 100,
  "speed_download": 413,
  "speed_upload": 967103,
  "download_content_length": -1,
  "upload_content_length": 234039,
  "starttransfer_time": 0.084271,
  "redirect_time": 0,
  "redirect_url": "",
  "primary_ip": "받는 아이피",
  "certinfo": [],
  "primary_port": 8243,
  "local_ip": "보내는 아이피",
  "local_port": 33852,
  "http_version": 2,
  "protocol": 2,
  "ssl_verifyresult": 0,
  "scheme": "HTTPS",
  "appconnect_time_us": 9,
  "connect_time_us": 9,
  "namelookup_time_us": 9,
  "pretransfer_time_us": 26,
  "redirect_time_us": 0,
  "starttransfer_time_us": 84271,
  "total_time_us": 242978
}

구글링에는 namelookup_time_us  이런게 안보이던데  이 *** _us 붙은쪽에 숫자가 높아서 그런건가요?
아니면 받는 서버가 해외에 있는거라 그럴수도 있을가요?

해외라고 해도 http 가 빠르다면 언급하신 문제는 아닐것 같습니다.
혹시 http 로 확인하는 케이스와 https 로 확인하는 케이스의 도메인이 서로 다른가요?
프로토콜만 다르고 도메인은 동일 하다는 가정으로 답변드린 것입니다.

도메인이 다르면 언급하신 팁이 도움이 될수 있습니다.
다만 호출자와 피호출자간의 물리적 거리가 멀면 그만큼 지연시간도 늘어나는데
그부분은 해당 팁을 적용해도 큰 개선은 없습니다.

도메인이 같고
해당 도메인으로 호출하는 서버가 http / https 프로토콜 모두 지원한다면
각각 확인 해봤을때 해당 서버에 프로토콜에 따른 특별한 작업이 되어있지 않는한
보통 속도가 비슷하게 떨어집니다.

"total_time": 0.242978,
호출했을때 0.24 초 정도 소요 된걸로 보이는데 맞나요?

물리적 거리가 멀면 길게는 1.5 초 3초 넘어가는 경우도 있습니다.

속도는 암만 생각해봐도 정상적인데.... 이게 대량으로 처리 하다 insert를 동시해 하다보니
db 처리하는 부분이 느려서 그런듯 하네요...서버 담당자가 없다보니 처리하는데 한계가 있네요 윽
답변 감사합니다.

내용을 보고 유추해보건데,

1)  https 느리고, http 는  무난한 경우는 서버가 http 의 경우 강제로 https 리다이렉트 응답을 보내는게 아닐까 합니다.

그러니까 실제 api 서버의 로직은 호출되지 않았을 가능성이 있습니다.  이를 확인할려면,

curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); 을 추가합니다.

2) namelookup_time  수치가 낮은 수치임으로 name resolv 이슈로 응답이 느린건 아닌것 같습니다.

 

결론) api 서버가 느린게 아니라, 응답 받은후 처리하는 쪽이 느린게 아닐까 합니다.(웹서버가 느린것일수도 있고,,)

    이를ㄹ 확인하기 위해서 shell 에서 curl 을 호출하여 속도를 비교해보면 좋을것 같네요.

 

p2) xxxxx_us 라고 표기된 시간들은 마이크로 단위로 보입니다. (마이크로 세컨드 = µs)

     마이크로 세컨드로 시간을 환산하면 그렇게 느린 응답들이 이 아닙니다.  242978us = 242.978ms = 0.242978s 

단순히

HTTPS  서버가 느려서(낮은 성능)

그런 거 아닐까요.

답변을 작성하시기 전에 로그인 해주세요.
전체 123,665 | RSS
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT