curl slow connect_time

curl, php

Solution

Try:

curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4 ); 

The above will prevent cURL from trying IPv6 first.

Problem

Consider this code in a php file on my VPS server: ``` <?php $url = 'http://www.google.com'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20041001 Firefox/0.10.1" ); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $content = curl_exec($ch); $ci = curl_getinfo($ch); curl_close($ch); var_dump($ci); ?> ``` returns this ``` array(22) { ["url"]=> string(21) "http://www.google.com" ["content_type"]=> string(24) "text/html; charset=UTF-8" ["http_code"]=> int(200) ["header_size"]=> int(2055) ["request_size"]=> int(147) ["filetime"]=> int(-1) ["ssl_verify_result"]=> int(0) ["redirect_count"]=> int(0) ["total_time"]=> float(50.095466) ["namelookup_time"]=> float(0.001114) ["connect_time"]=> float(50.019724) ["pretransfer_time"]=> float(50.019825) ["size_upload"]=> float(0) ["size_download"]=> float(23156) ["speed_download"]=> float(462) ["speed_upload"]=> float(0) ["download_content_length"]=> float(-1) ["upload_content_length"]=> float(0) ["starttransfer_time"]=> float(50.070702) ["redirect_time"]=> float(0) ["certinfo"]=> array(0) { } ["redirect_url"]=> string(0) "" } ``` After testing at several times of day, the "connect_time" is consistently at the 50 seconds mark. I believe it should be 10X faster if not at the 1 second mark and below. I'm not knowledgeable with server config but I was told that my server's CPU or RAM could be at fault. I used the top command line to display the following which seems fine to me: Tasks: 80 total, 1 running, 79 sleeping, 0 stopped, 0 zombie Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 2097152k total, 1273128k used, 824024k free, 0k buffers Swap: 0k total, 0k used, 0k free, 0k cached I am wondering what could be the source of this issue ? EDIT: ADDITIONAL INFORMATION ping www.google.com result. It seemed like it could go on foreover so I stopped the command after the 195th line PING www.l.google.com (74.125.224.178) 56(84) bytes of data. 64 bytes from lax02s01-in-f18.1e100.net (74.125.224.178): icmp_seq=1 ttl=56 time=12.0 ms 64 bytes from lax02s01-in-f18.1e100.net (74.125.224.178): icmp_seq=2 ttl=56 time=12.1 ms 64 bytes from lax02s01-in-f18.1e100.net (74.125.224.178): icmp_seq=3 ttl=56 time=11.9 ms ... 64 bytes from lax02s01-in-f18.1e100.net (74.125.224.178): icmp_seq=194 ttl=56 time=11.9 ms 64 bytes from lax02s01-in-f18.1e100.net (74.125.224.178): icmp_seq=195 ttl=56 time=11.9 ms --- www.l.google.com ping statistics --- 195 packets transmitted, 194 received, 0% packet loss, time 194711ms traceroute wwww.google.com result traceroute to www.google.com (74.125.224.180), 30 hops max, 60 byte packets 1 ip---*-.ip.secureserver.net (.*..) 0.585 ms 0.642 ms 0.778 ms 2 be10.trmd0215-01.ars.mgmt.phx3.gdg (208.109.112.126) 0.599 ms 0.777 ms 0.893 ms 3 ip-97-74-253-122.ip.secureserver.net (97.74.253.122) 11.840 ms 12.119 ms 12.275 ms 4 ip-97-74-253-122.ip.secureserver.net (97.74.253.122) 12.389 ms 12.482 ms 12.600 ms 5 PR01.LAX03.google.com (206.223.123.21) 11.739 ms 11.709 ms 11.707 ms 6 209.85.248.185 (209.85.248.185) 11.986 ms 11.797 ms 11.781 ms 7 72.14.236.11 (72.14.236.11) 12.606 ms 12.363 ms 12.328 ms 8 lax02s01-in-f20.1e100.net (74.125.224.180) 11.774 ms 11.864 ms 11.842 ms

Original source