PHP CURL 속도를 향상시키는 방법

HYEONG HWAN, MUN/ 10월 18, 2014/ 미분류/ 2 comments

https://blog.lael.be/post/154

CURL 속도가 너무 느려서 문제가 생겼다.

통신하는 양측 서버는 정상이었다.

각 부분을 디버깅한 결과 느린 속도는 DNS name resolving 에서 일어났으며
nameserver 를 hit 하면서 느려진 것이었다.

해결방법은 서버에 hosts 와 ip를 강제 지정하여 DNS lookup 을 방지하면 된다.

hosts 파일 열기 (도메인-IP 강제 연결용 특수목적 파일)

#vi /etc/hosts

 

서버아이피 도메인 설정

아이피 + (스페이스 or 탭) + 도메인명

스크린샷 2015-06-25 오후 7.50.06

< 입력 예시 >

106.185.34.232    blog.lael.be

 

적용 끝.

 

CURL 은 DNS LOOKUP 을 따로 하지 않고 hosts 파일에 정의된 곳으로 연결을 시도할 것이다.

속도가 매우 빨라질 것이다.


#15.06.25 내용추가.

위의 방법은 네임서버 조회 기능을 건너뛰는 해결방법이고,
아래의 방법은 서버에서 빠른 연결을 할 수 있는 네임서버를 찾아서 설정하는 해결방법이다.

아래의 DNS 서버들에 ping 을 날려보고 가장 빠른 것을 선택하자.

다음은 서울 가산 LG IDC 에 위치한 서버에서 테스트 해본 결과이다.

스크린샷 2015-06-25 오후 7.58.11

 

LG파워콤 DNS 2 가 가장 빠른 반응 속도를 내는 것을 알 수 있었다. (결과는 사용자마다 다르다)

 
[SK브로드밴드]
기본 DNS서버 : 219.250.36.130
보조 DNS서버 : 210.220.163.82

[KT DNS]
기본 DNS 서버 : 168.126.63.1
보조 DNS 서버 : 168.126.63.2

[LG파워콤 DNS]
기본 DNS : 164.124.101.2
보조 DNS : 203.248.252.2

[하나로 DNS]
qns1.hananet.net 210.220.163.82
qns2.hananet.net 219.250.36.130

[두루넷 DNS]
nsgr1.thrunet.com 210.117.65.1
nsgr2.thrunet.com 210.117.65.2

[드림라인 DNS]
ns.cjdream.net  210.181.1.24
ns2.cjdream.net  210.181.4.25

[신비로 DNS]
ns.shinbiro.com  202.30.143.11
ns2.shinbiro.com  203.240.193.11

[데이콤 DNS]
ns.dacom.co.kr 164.124.101.2
ns2.dacom.co.kr 203.248.240.31

[파워콤 DNS]
cns3.bora.net 203.248.252.2


#vi /etc/resolv.conf

스크린샷 2015-06-25 오후 8.05.26

가장 빠른 것 하나만 적어도 되지만, 네임서버도 장애가 일어날 수도 있으므로 (확률로 따지면 0.00001%정도?),

두개정도 적도록 하자. (두개 다 장애가 일어날 확률 = 0.00001% * 0.00001%)

DNS ping 결과가, 10ms 미만이면 괜찮다. 작을 수록 좋다.

입력시 행의 순서는 우선순위가 아니다. 서버는 그때그때 랜덤하게 선택해서 사용한다. 만약 선택한 것이 다운되었다면 다른 것을 선택하여 재시도할 것이다.

host 수정 안해도 DNS 조회 딜레이가 걸리지 않아서 curl 이 빨라질 것이다.

다만 /etc/hosts 에 ip 를 직접 입력하는 것이 DNS 조회 단계가 생략되므로 매우매우 빨라지는 것은 사실이다.

2 Comments

  1. cURL 속도가 잘 안나와서 찾고 있었는데 …
    좋은 정보 감사합니다. ^^;

    1. 더 확실한 방법이 있는데 서술하지 않았네요.

      본문에 추가했습니다.

Leave a Comment

작성하신 댓글은 관리자의 수동 승인 후 게시됩니다.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>
*
*