curl-library
libcurl 7.9.8: Bottleneck on multhithread HTTP fetches?
Date: Mon, 13 Oct 2003 17:30:57 +0100 (BST)
Hi,
First of all, thank you for a fab piece of software
which I've been using for a long time without any
problems.
I've been running some loadtesting on my application
and I've narrowed a high-load bottleneck down to curl.
When a large number of threads (>50 for example)
attempt to HTTP GET a document simultaneously, the CPU
on my computer maxes out for a few minutes.
I've turned on CURLOPT_VERBOSE as per the docs, and I
find : Connection #0 seems to be dead. Could somebody
help explain this to me please? My first reaction was
that my server was being overloaded, but I've
eliminated this possibility.
I've created a test application which mimics this
behaviour, please see attached cpp file. It's an
extension of
http://curl.haxx.se/lxr/source/docs/examples/multithread.c
(except it uses Windows threading, sorry!).
Please also find attached results.txt, which shows the
output of the program above with 50 threads, 2 fetches
per thread.
If it's of any use, I ran the program with the same
arguments through Rational Quantify. It identified
the longest path (in terms of time) as
curl_easy_perform()->ws2_32::getsockopt()->ntdll::NtRemoveIoCompletion()
Of course, I understand that there'll be an inherent
delay when 50 curl instances attempt to grab a
connection simultaneously! However, I'm concerned
about the high CPU usage and the delays associated
with it. It seems to me from curl's verbose output
(see results.txt) that it only ever uses one
connection (#0) - is this correct? Is the approach in
my code incorrect?
Here's my setup information :
libcurl 7.9.8
windows 2000 professional
MSVC++ 6.0
{server : Apache 2.0.47 (win32) }
Thanks for reading this far :) Any suggestions would
be appreciated.
regards
Andrew Fuller
________________________________________________________________________
Want to chat instantly with your online friends? Get the FREE Yahoo!
Messenger http://mail.messenger.yahoo.co.uk
// CurlTest.cpp : Defines the entry point for the console application.
// Requires _MT to be defined to compile
#include <curl/curl.h>
#include <process.h>
#include <stdlib.h>
// wait for many threads to finish
bool WaitForThreadsToFinish(const HANDLE* pHandles, const int nNumHandles);
// executes in own thread : does a curl fetch
unsigned long __stdcall pull_one_url(void* pArg)
{
CURL* pHandle = (CURL*)pArg;
if(pHandle)
{
curl_easy_perform(pHandle);
}
return 1;
}
// main
int main(int argc, char* argv[])
{
// check args
if(argc < 4)
{
printf("\nUsage : %s num_threads fetches_per_thread uri_to_fetch\n\n", argv[0]);
return 1;
}
int nNumThreads = atoi(argv[1]);
int nNumFetchesPerThread = atoi(argv[2]);
// create handles
CURL** pHandles = new CURL*[nNumThreads];
// init
for(int i = 0; i<nNumThreads; i++)
{
pHandles[i] = curl_easy_init();
curl_easy_setopt(pHandles[i], CURLOPT_VERBOSE, 1);
curl_easy_setopt(pHandles[i], CURLOPT_URL, argv[3]);
}
// want each thread to fetch nNumFetchesPerThread times
for(int j = 0; j < nNumFetchesPerThread; j++)
{
printf("\n\n***\nStarting fetch #%d/%d on %d threads\n\n", j, nNumFetchesPerThread, nNumThreads);
// create holder for thread handles
HANDLE* pThreadHandles = new HANDLE[nNumThreads];
// send fetches
for(i = 0; i<nNumThreads; i++)
{
pThreadHandles[i] = CreateThread(0, 0, pull_one_url, pHandles[i], 0, 0);
}
// wait for completion
if(!WaitForThreadsToFinish(pThreadHandles, nNumThreads))
{
printf("Wait #%d failed (%d)!!\n", j, GetLastError());
break;
}
// clean thread handles
delete[] pThreadHandles;
}
// cleanup
for(i = 0; i<nNumThreads; i++)
{
curl_easy_cleanup(pHandles[i]);
}
// clean curl handles
delete[] pHandles;
return 0;
}
// wait for many threads to finish
bool WaitForThreadsToFinish(const HANDLE* pHandles, const int nNumHandles)
{
int i = nNumHandles / MAXIMUM_WAIT_OBJECTS;
int j = nNumHandles % MAXIMUM_WAIT_OBJECTS;
for(int k = 0; k < i; k++)
{
if(WAIT_FAILED == WaitForMultipleObjects(MAXIMUM_WAIT_OBJECTS, pHandles + (k * MAXIMUM_WAIT_OBJECTS), TRUE, INFINITE))
{
return false;
}
}
if(j>0)
{
if(WAIT_FAILED == WaitForMultipleObjects(j, pHandles + (i * MAXIMUM_WAIT_OBJECTS), TRUE, INFINITE))
{
return false;
}
}
// success
return true;
}
{arguments : 50 2 http://10.0.0.180/test.txt}
* About to connect() to 10.0.0.180:80
* About to connect() to 10.0.0.180:80
* Connected to 10.0.0.180 (10.0.0.180) port 80
> GET /test.txt HTTP/1.1
Host: 10.0.0.180
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
* About to connect() to 10.0.0.180:80
* Connected to 10.0.0.180 (10.0.0.180) port 80
> GET /test.txt HTTP/1.1
Host: 10.0.0.180
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
* About to connect() to 10.0.0.180:80
* Connected to 10.0.0.180 (10.0.0.180) port 80
> GET /test.txt HTTP/1.1
Host: 10.0.0.180
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
* About to connect() to 10.0.0.180:80
* Connected to 10.0.0.180 (10.0.0.180) port 80
> GET /test.txt HTTP/1.1
Host: 10.0.0.180
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
* Connected to 10.0.0.180 (10.0.0.180) port 80
> GET /test.txt HTTP/1.1
Host: 10.0.0.180
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
* About to connect() to 10.0.0.180:80
* Connected to 10.0.0.180 (10.0.0.180) port 80
> GET /test.txt HTTP/1.1
Host: 10.0.0.180
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
* Connection #0 left intact
* Connection #0 left intact
* About to connect() to 10.0.0.180:80
* Connection #0 left intact
* About to connect() to 10.0.0.180:80
* Connected to 10.0.0.180 (10.0.0.180) port 80
> GET /test.txt HTTP/1.1
Host: 10.0.0.180
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
* About to connect() to 10.0.0.180:80
* Connected to 10.0.0.180 (10.0.0.180) port 80
> GET /test.txt HTTP/1.1
Host: 10.0.0.180
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
* About to connect() to 10.0.0.180:80
* Connected to 10.0.0.180 (10.0.0.180) port 80
> GET /test.txt HTTP/1.1
Host: 10.0.0.180
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
* About to connect() to 10.0.0.180:80
* About to connect() to 10.0.0.180:80
* About to connect() to 10.0.0.180:80
* About to connect() to 10.0.0.180:80
* About to connect() to 10.0.0.180:80
* About to connect() to 10.0.0.180:80
* About to connect() to 10.0.0.180:80
* About to connect() to 10.0.0.180:80
* About to connect() to 10.0.0.180:80
* About to connect() to 10.0.0.180:80
* About to connect() to 10.0.0.180:80
* About to connect() to 10.0.0.180:80
* About to connect() to 10.0.0.180:80
* About to connect() to 10.0.0.180:80
* About to connect() to 10.0.0.180:80
* About to connect() to 10.0.0.180:80
* About to connect() to 10.0.0.180:80
* About to connect() to 10.0.0.180:80
* About to connect() to 10.0.0.180:80
* About to connect() to 10.0.0.180:80
* About to connect() to 10.0.0.180:80
* Connected to 10.0.0.180 (10.0.0.180) port 80
> GET /test.txt HTTP/1.1
Host: 10.0.0.180
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
* About to connect() to 10.0.0.180:80
* About to connect() to 10.0.0.180:80
* Connection #0 left intact
* About to connect() to 10.0.0.180:80
* Connection #0 left intact
* About to connect() to 10.0.0.180:80
* About to connect() to 10.0.0.180:80
* Connected to 10.0.0.180 (10.0.0.180) port 80
> GET /test.txt HTTP/1.1
Host: 10.0.0.180
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
* Connection #0 left intact
* About to connect() to 10.0.0.180:80
* Connected to 10.0.0.180 (10.0.0.180) port 80
> GET /test.txt HTTP/1.1
Host: 10.0.0.180
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
* About to connect() to 10.0.0.180:80
* About to connect() to 10.0.0.180:80
* About to connect() to 10.0.0.180:80
* Connected to 10.0.0.180 (10.0.0.180) port 80
> GET /test.txt HTTP/1.1
Host: 10.0.0.180
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
* About to connect() to 10.0.0.180:80
* Connected to 10.0.0.180 (10.0.0.180) port 80
> GET /test.txt HTTP/1.1
Host: 10.0.0.180
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
* Connection #0 left intact
* Connection #0 left intact
* Connected to 10.0.0.180 (10.0.0.180) port 80
> GET /test.txt HTTP/1.1
Host: 10.0.0.180
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
* About to connect() to 10.0.0.180:80
* About to connect() to 10.0.0.180:80
* Connected to 10.0.0.180 (10.0.0.180) port 80
> GET /test.txt HTTP/1.1
Host: 10.0.0.180
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
* Connection #0 left intact
* Connected to 10.0.0.180 (10.0.0.180) port 80
> GET /test.txt HTTP/1.1
Host: 10.0.0.180
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
* About to connect() to 10.0.0.180:80
* Connection #0 left intact
* Connected to 10.0.0.180 (10.0.0.180) port 80
> GET /test.txt HTTP/1.1
Host: 10.0.0.180
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
* Connection #0 left intact
* Connection #0 left intact
* Connection #0 left intact
* Connection #0 left intact
* Connection #0 left intact
* Connection #0 left intact
* Connection #0 left intact
* Connection #0 left intact
* About to connect() to 10.0.0.180:80
* About to connect() to 10.0.0.180:80
* Connected to 10.0.0.180 (10.0.0.180) port 80
> GET /test.txt HTTP/1.1
Host: 10.0.0.180
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
* About to connect() to 10.0.0.180:80
* Connection #0 left intact
* Connected to 10.0.0.180 (10.0.0.180) port 80
> GET /test.txt HTTP/1.1
Host: 10.0.0.180
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
* About to connect() to 10.0.0.180:80
* Connection #0 left intact
* Connected to 10.0.0.180 (10.0.0.180) port 80
> GET /test.txt HTTP/1.1
Host: 10.0.0.180
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
* About to connect() to 10.0.0.180:80
* Connection #0 left intact
* Connected to 10.0.0.180 (10.0.0.180) port 80
> GET /test.txt HTTP/1.1
Host: 10.0.0.180
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
* About to connect() to 10.0.0.180:80
* Connection #0 left intact
* Connected to 10.0.0.180 (10.0.0.180) port 80
> GET /test.txt HTTP/1.1
Host: 10.0.0.180
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
* Connection #0 left intact
* Connected to 10.0.0.180 (10.0.0.180) port 80
> GET /test.txt HTTP/1.1
Host: 10.0.0.180
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
* Connection #0 left intact
* Connected to 10.0.0.180 (10.0.0.180) port 80
> GET /test.txt HTTP/1.1
Host: 10.0.0.180
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
* Connection #0 left intact
* Closing connection #0
* Closing connection #0
* Closing connection #0
* Closing connection #0
* Closing connection #0
* Closing connection #0
* Closing connection #0
* Closing connection #0
* Closing connection #0
* Closing connection #0
* Closing connection #0
* Closing connection #0
* Closing connection #0
* Closing connection #0
* Connected to 10.0.0.180 (10.0.0.180) port 80
> GET /test.txt HTTP/1.1
Host: 10.0.0.180
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
* Connection #0 left intact
* Connected to 10.0.0.180 (10.0.0.180) port 80
> GET /test.txt HTTP/1.1
Host: 10.0.0.180
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
* Connected to 10.0.0.180 (10.0.0.180) port 80
> GET /test.txt HTTP/1.1
Host: 10.0.0.180
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
* Connection #0 left intact
* Connection #0 left intact
* Connected to 10.0.0.180 (10.0.0.180) port 80
> GET /test.txt HTTP/1.1
Host: 10.0.0.180
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
* Connection #0 left intact
* Connected to 10.0.0.180 (10.0.0.180) port 80
> GET /test.txt HTTP/1.1
Host: 10.0.0.180
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
* Connection #0 left intact
* Connected to 10.0.0.180 (10.0.0.180) port 80
> GET /test.txt HTTP/1.1
Host: 10.0.0.180
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
* Connection #0 left intact
* Connected to 10.0.0.180 (10.0.0.180) port 80
> GET /test.txt HTTP/1.1
Host: 10.0.0.180
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
* Connection #0 left intact
* Connected to 10.0.0.180 (10.0.0.180) port 80
> GET /test.txt HTTP/1.1
Host: 10.0.0.180
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
* Connection #0 left intact
* Connected to 10.0.0.180 (10.0.0.180) port 80
> GET /test.txt HTTP/1.1
Host: 10.0.0.180
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
* Connected to 10.0.0.180 (10.0.0.180) port 80
> GET /test.txt HTTP/1.1
Host: 10.0.0.180
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
* Connected to 10.0.0.180 (10.0.0.180) port 80
> GET /test.txt HTTP/1.1
Host: 10.0.0.180
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
* Connection #0 left intact
* Connection #0 left intact
* Connection #0 left intact
* Connection 0 seems to be dead!
* Closing connection #0
* About to connect() to 10.0.0.180:80
* Connected to 10.0.0.180 (10.0.0.180) port 80
> GET /test.txt HTTP/1.1
Host: 10.0.0.180
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
* Connection 0 seems to be dead!
* Closing connection #0
* About to connect() to 10.0.0.180:80
* Connection #0 left intact
* Connected to 10.0.0.180 (10.0.0.180) port 80
> GET /test.txt HTTP/1.1
Host: 10.0.0.180
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
* Connection 0 seems to be dead!
* Closing connection #0
* About to connect() to 10.0.0.180:80
* Connection #0 left intact
* Connected to 10.0.0.180 (10.0.0.180) port 80
> GET /test.txt HTTP/1.1
Host: 10.0.0.180
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
* Connection 0 seems to be dead!
* Closing connection #0
* About to connect() to 10.0.0.180:80
* Connection 0 seems to be dead!
* Closing connection #0
* Connection #0 left intact
* Connected to 10.0.0.180 (10.0.0.180) port 80
> GET /test.txt HTTP/1.1
Host: 10.0.0.180
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
* About to connect() to 10.0.0.180:80
* Connection 0 seems to be dead!
* Closing connection #0
* About to connect() to 10.0.0.180:80
* Connection #0 left intact
* Connected to 10.0.0.180 (10.0.0.180) port 80
> GET /test.txt HTTP/1.1
Host: 10.0.0.180
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
* Connection 0 seems to be dead!
* Closing connection #0
* About to connect() to 10.0.0.180:80
* Connection #0 left intact
* Connected to 10.0.0.180 (10.0.0.180) port 80
> GET /test.txt HTTP/1.1
Host: 10.0.0.180
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
* Connection 0 seems to be dead!
* Closing connection #0
* About to connect() to 10.0.0.180:80
* Connection #0 left intact
* Connected to 10.0.0.180 (10.0.0.180) port 80
> GET /test.txt HTTP/1.1
Host: 10.0.0.180
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
* Connection 0 seems to be dead!
* Closing connection #0
* About to connect() to 10.0.0.180:80
* Connection #0 left intact
* Connected to 10.0.0.180 (10.0.0.180) port 80
> GET /test.txt HTTP/1.1
Host: 10.0.0.180
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
* Connection #0 left intact
* Re-using existing connection! (#0)
* Connected to [re-used] (10.0.0.180) port 80
> GET /test.txt HTTP/1.1
Host: 10.0.0.180
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
* Re-using existing connection! (#0)
* Connected to [re-used] (10.0.0.180) port 80
> GET /test.txt HTTP/1.1
Host: 10.0.0.180
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
* Connected to 10.0.0.180 (10.0.0.180) port 80
> GET /test.txt HTTP/1.1
Host: 10.0.0.180
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
* About to connect() to 10.0.0.180:80
* About to connect() to 10.0.0.180:80
* Connection #0 left intact
* Connection #0 left intact
* Connection #0 left intact
* Re-using existing connection! (#0)
* Connected to [re-used] (10.0.0.180) port 80
> GET /test.txt HTTP/1.1
Host: 10.0.0.180
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
* Connection #0 left intact
* Connected to 10.0.0.180 (10.0.0.180) port 80
> GET /test.txt HTTP/1.1
Host: 10.0.0.180
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
* Connected to 10.0.0.180 (10.0.0.180) port 80
> GET /test.txt HTTP/1.1
Host: 10.0.0.180
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
* About to connect() to 10.0.0.180:80
* About to connect() to 10.0.0.180:80
* Connection #0 left intact
* Connection #0 left intact
* Connected to 10.0.0.180 (10.0.0.180) port 80
> GET /test.txt HTTP/1.1
Host: 10.0.0.180
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
* About to connect() to 10.0.0.180:80
* Connection #0 left intact
* Connected to 10.0.0.180 (10.0.0.180) port 80
> GET /test.txt HTTP/1.1
Host: 10.0.0.180
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
* Connected to 10.0.0.180 (10.0.0.180) port 80
> GET /test.txt HTTP/1.1
Host: 10.0.0.180
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
* About to connect() to 10.0.0.180:80
* About to connect() to 10.0.0.180:80
* Connection #0 left intact
* Connection #0 left intact
* Connected to 10.0.0.180 (10.0.0.180) port 80
> GET /test.txt HTTP/1.1
Host: 10.0.0.180
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
* About to connect() to 10.0.0.180:80
* Connection #0 left intact
* Connected to 10.0.0.180 (10.0.0.180) port 80
> GET /test.txt HTTP/1.1
Host: 10.0.0.180
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
* About to connect() to 10.0.0.180:80
* Connection #0 left intact
* Connected to 10.0.0.180 (10.0.0.180) port 80
> GET /test.txt HTTP/1.1
Host: 10.0.0.180
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
* Connection #0 left intact
* Re-using existing connection! (#0)
* Connected to [re-used] (10.0.0.180) port 80
> GET /test.txt HTTP/1.1
Host: 10.0.0.180
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
* Re-using existing connection! (#0)
* Connected to [re-used] (10.0.0.180) port 80
> GET /test.txt HTTP/1.1
Host: 10.0.0.180
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
* Connected to 10.0.0.180 (10.0.0.180) port 80
> GET /test.txt HTTP/1.1
Host: 10.0.0.180
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
* Connection #0 left intact
* Connection #0 left intact
* Connection #0 left intact
* Connection 0 seems to be dead!
* Closing connection #0
* About to connect() to 10.0.0.180:80
* About to connect() to 10.0.0.180:80
* Re-using existing connection! (#0)
* Connected to [re-used] (10.0.0.180) port 80
> GET /test.txt HTTP/1.1
Host: 10.0.0.180
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
* Re-using existing connection! (#0)
* Connected to [re-used] (10.0.0.180) port 80
> GET /test.txt HTTP/1.1
Host: 10.0.0.180
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
* Re-using existing connection! (#0)
* Connected to [re-used] (10.0.0.180) port 80
> GET /test.txt HTTP/1.1
Host: 10.0.0.180
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
* Re-using existing connection! (#0)
* Connected to [re-used] (10.0.0.180) port 80
> GET /test.txt HTTP/1.1
Host: 10.0.0.180
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
* Re-using existing connection! (#0)
* Connected to [re-used] (10.0.0.180) port 80
> GET /test.txt HTTP/1.1
Host: 10.0.0.180
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
* Re-using existing connection! (#0)
* Connected to [re-used] (10.0.0.180) port 80
> GET /test.txt HTTP/1.1
Host: 10.0.0.180
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
* Connected to 10.0.0.180 (10.0.0.180) port 80
> GET /test.txt HTTP/1.1
Host: 10.0.0.180
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
* About to connect() to 10.0.0.180:80
* Connection #0 left intact
* Connection #0 left intact
* Connection #0 left intact
* Connection #0 left intact
* Connection #0 left intact
* Connection #0 left intact
* Connection #0 left intact
* Connected to 10.0.0.180 (10.0.0.180) port 80
> GET /test.txt HTTP/1.1
Host: 10.0.0.180
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
* About to connect() to 10.0.0.180:80
* Connection #0 left intact
* Connected to 10.0.0.180 (10.0.0.180) port 80
> GET /test.txt HTTP/1.1
Host: 10.0.0.180
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
* About to connect() to 10.0.0.180:80
* Connection #0 left intact
* Connected to 10.0.0.180 (10.0.0.180) port 80
> GET /test.txt HTTP/1.1
Host: 10.0.0.180
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
* Connection 0 seems to be dead!
* Closing connection #0
* About to connect() to 10.0.0.180:80
* Connection #0 left intact
* Connected to 10.0.0.180 (10.0.0.180) port 80
> GET /test.txt HTTP/1.1
Host: 10.0.0.180
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
* Connection #0 left intact
* Connection 0 seems to be dead!
* Closing connection #0
* About to connect() to 10.0.0.180:80
* Connected to 10.0.0.180 (10.0.0.180) port 80
> GET /test.txt HTTP/1.1
Host: 10.0.0.180
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
* About to connect() to 10.0.0.180:80
* Connection #0 left intact
* Connected to 10.0.0.180 (10.0.0.180) port 80
> GET /test.txt HTTP/1.1
Host: 10.0.0.180
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
* Connection 0 seems to be dead!
* Closing connection #0
* About to connect() to 10.0.0.180:80
* Connection #0 left intact
* Connected to 10.0.0.180 (10.0.0.180) port 80
> GET /test.txt HTTP/1.1
Host: 10.0.0.180
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
* Connection 0 seems to be dead!
* Closing connection #0
* About to connect() to 10.0.0.180:80
* Connection #0 left intact
* Connected to 10.0.0.180 (10.0.0.180) port 80
> GET /test.txt HTTP/1.1
Host: 10.0.0.180
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
* Connection 0 seems to be dead!
* Closing connection #0
* About to connect() to 10.0.0.180:80
* Connection #0 left intact
* Connected to 10.0.0.180 (10.0.0.180) port 80
> GET /test.txt HTTP/1.1
Host: 10.0.0.180
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
* Connected to 10.0.0.180 (10.0.0.180) port 80
> GET /test.txt HTTP/1.1
Host: 10.0.0.180
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
* Connection 0 seems to be dead!
* Closing connection #0
* About to connect() to 10.0.0.180:80
* Connection 0 seems to be dead!
* Closing connection #0
* About to connect() to 10.0.0.180:80
* Connection #0 left intact
* Connection #0 left intact
* Connected to 10.0.0.180 (10.0.0.180) port 80
> GET /test.txt HTTP/1.1
Host: 10.0.0.180
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
* Connection 0 seems to be dead!
* Closing connection #0
* About to connect() to 10.0.0.180:80
* Connection #0 left intact
* Connected to 10.0.0.180 (10.0.0.180) port 80
> GET /test.txt HTTP/1.1
Host: 10.0.0.180
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
* Connected to 10.0.0.180 (10.0.0.180) port 80
> GET /test.txt HTTP/1.1
Host: 10.0.0.180
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
* Connection 0 seems to be dead!
* Closing connection #0
* About to connect() to 10.0.0.180:80
* Connection 0 seems to be dead!
* Closing connection #0
* About to connect() to 10.0.0.180:80
* Connection #0 left intact
* Connection #0 left intact
* Connected to 10.0.0.180 (10.0.0.180) port 80
> GET /test.txt HTTP/1.1
Host: 10.0.0.180
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
* Connection 0 seems to be dead!
* Closing connection #0
* About to connect() to 10.0.0.180:80
* Connection #0 left intact
* Connected to 10.0.0.180 (10.0.0.180) port 80
> GET /test.txt HTTP/1.1
Host: 10.0.0.180
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
* Connection #0 left intact
* Connected to 10.0.0.180 (10.0.0.180) port 80
> GET /test.txt HTTP/1.1
Host: 10.0.0.180
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
* Connection #0 left intact
* Connection 0 seems to be dead!
* Closing connection #0
* About to connect() to 10.0.0.180:80
* Connection 0 seems to be dead!
* Closing connection #0
* About to connect() to 10.0.0.180:80
* Connected to 10.0.0.180 (10.0.0.180) port 80
> GET /test.txt HTTP/1.1
Host: 10.0.0.180
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
* Connection 0 seems to be dead!
* Closing connection #0
* About to connect() to 10.0.0.180:80
* Connection #0 left intact
* Connected to 10.0.0.180 (10.0.0.180) port 80
> GET /test.txt HTTP/1.1
Host: 10.0.0.180
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
* Connection 0 seems to be dead!
* Closing connection #0
* About to connect() to 10.0.0.180:80
* Connection #0 left intact
* Connected to 10.0.0.180 (10.0.0.180) port 80
> GET /test.txt HTTP/1.1
Host: 10.0.0.180
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
* Connected to 10.0.0.180 (10.0.0.180) port 80
> GET /test.txt HTTP/1.1
Host: 10.0.0.180
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
* Connection #0 left intact
* Connection #0 left intact
* Closing connection #0
* Closing connection #0
* Closing connection #0
* Closing connection #0
* Closing connection #0
* Closing connection #0
* Closing connection #0
* Closing connection #0
* Closing connection #0
* Closing connection #0
* Closing connection #0
* Closing connection #0
* Closing connection #0
* Closing connection #0
* Closing connection #0
* Closing connection #0
* Closing connection #0
* Closing connection #0
* Closing connection #0
* Closing connection #0
* Closing connection #0
* Closing connection #0
* Closing connection #0
* Closing connection #0
* Closing connection #0
* Closing connection #0
* Closing connection #0
* Closing connection #0
* Closing connection #0
* Closing connection #0
* Closing connection #0
* Closing connection #0
* Closing connection #0
* Closing connection #0
* Closing connection #0
* Closing connection #0
* Closing connection #0
* Closing connection #0
* Closing connection #0
* Closing connection #0
* Closing connection #0
* Closing connection #0
* Closing connection #0
* Closing connection #0
* Closing connection #0
* Closing connection #0
* Closing connection #0
* Closing connection #0
* Closing connection #0
* Closing connection #0
-------------------------------------------------------
This SF.net email is sponsored by: SF.net Giveback Program.
SourceForge.net hosts over 70,000 Open Source Projects.
See the people who have HELPED US provide better services:
Click here: http://sourceforge.net/supporters.php
Received on 2003-10-13