Posts Tagged ‘ssl’

The music of Iceland

February 3rd, 2008 by smp | Comments | Filed in Life

I don’t often (ever) talk about my musical taste. It is unremarkable for the most part, with flights into madness and impulsiveness.

Lately, I have discovered Icelandic music. Mainly Sigur Ros, Mum, Apparat Organ Quartet, Aniima, and (of course) Bjork. Apparently Icelandic music is all the rage, with people trying to understand how such a small country can produce such a wide range of artists.

These artists provide a soothing background to my jangled, often confused, mental state. I played it as I slept while I was on my latest trip, and while I was on the plane returning from Chicago.

However, my deep feelings and desire to visit Iceland has its roots back in my very early teens. A Hardy Boys mystery and a Clive Cussler novel brought it to my attention. It’s a nation of extremes, of wonder, isolation, and survival.

It is among one of the few places I feel I have to visit at least once in my life. I cannot explain this desire. Perhaps it is the latent Viking in me.

But the music draws me as much as the place does.

Tags: , , , , , , , , , , , , , , , , , ,

Dear Apache Software Foundation: FIX THE MSIE SSL KEEPALIVE SETTINGS!

June 6th, 2007 by smp | Comments | Filed in Software, Technology, Web Performance, WebPerformance.Org, Work

Dear Apache Software Foundation, and the developers of the Apache Web server:

I would like to thank you for developing a great product. I rely on it daily to host my own sites, and a large number of people on the Internet seem to share my love of this software.

However, it appears that you seem to want to maintain a simple flaw in your logic that continues to make me crazy. I am a Web performance analyst, and at least once a week I sigh, and shake my head whenever I stoop to use Microsoft Internet Explorer (MSIE) to visit secure sites.

I seems that in your SSL configurations, you continue to assume that ALL versions of MSIE can’t handle persistent connections under SSL/TLS.

Is this true? Is a bug initially caught in MSIE 5.x (5.0??) still valid for MSIE 6.0/7.0?

The short answer is: I don’t know.

It seems that no one in the Apache server team has bothered to go back and see if the current versions of MSIE — we are trying to track down the last three people use MSIE 5.x and help them — still share this problem.

In the meantime, can you change your SSL exclusion RegEx to something more, relevant for 2007?

Current RegEx:

SetEnvIf User-Agent ".*MSIE.*" nokeepalive
	ssl-unclean-shutdown
	downgrade-1.0 force-response-1.0

Relvant, updated REGEX:

SetEnvIf User-Agent ".*MSIE [1-5].*"
	nokeepalive ssl-unclean-shutdown
	downgrade-1.0 force-response-1.0
SetEnvIf User-Agent ".*MSIE [6-9].*"
	ssl-unclean-shutdown

Please? PLEASE? It’s so easy…and would solve so many performance problems…

Please?

Thank you.

Tags: , , , , , ,

Tags: , , , , , , , ,

TechCrunch: Ever heard of HTTP Compression?

January 16th, 2007 by smp | Comments | Filed in Blogging, GrabPERF, RANTING, Web Performance

It’s always funny when somewhat tech-savvy folks purposely make their bandwidth bills higher than they need to be.

Here’s TechCrunch’s HTTP header response.


HTTP/1.1 200 OK
Date: Tue, 16 Jan 2007 16:02:23 GMT
Server: Apache/2.2.3 (Debian) DAV/2 SVN/1.4.2 PHP/5.2.0-8 mod_ssl/2.2.3 OpenSSL/0.9.8c
X-Powered-By: PHP/5.2.0-8
X-Pingback: http://www.techcrunch.com/xmlrpc.php
Status: 200 OK
Transfer-Encoding: chunked
Content-Type: text/html; charset="UTF-8"

Compression Gains

Port80 Software’s Compression Checker gives us some idea how much bandwidth Mr. Arrington, et al. could save just by activating this little feature, which comes baked into Apache 2.2.x.

Turn. On. Mod_deflate.

Tags: , , , , , , , , , , , , , , , , , , , , , , , , , , ,

Baseline Testing With cURL

October 3rd, 2006 by smp | Comments | Filed in Web Performance, WebPerformance.Org

cURL is an application that can be used to retrieve any Internet file that uses the standard URL format — http://, ftp://, gopher://, etc. Its power and flexibility can be added to applications by using the libcurl library, whose API can be accessed easily using most of the commonly used scripting and programming languages.

So, how does cURL differ from some of the other command-line URL retrieval tools such as WGET? Both do very similar things, and can be coaxed to retrieve large lists of files or even mirror entire Web sites. In fact, for the automated retrieval of single files for the Internet for storage on local filesystems — such as downloading source files onto servers for building applications — WGET’s syntax is the simplest to use.

However, for simple baseline testing, WGET lacks cURL’s ability to produce timing results that can be written to an output file in a user-configurable format. cURL gathers a large amount of data about a transfer that can then be used for analysis or logging purposes. This makes it a step ahead of WGET for baseline testing.

cURL Installation

For the purposes of our testing, we have used cURL 7.10.5-pre2 as it adds support for downloading and interpreting GZIP-encoded content from Web servers. Because it is a pre-release version, it is currently only available as source for compiling. The compilation was smooth, and straight-forward.

$ ./configure --with-ssl --with-zlib
$ make
$ make test

[...runs about 120 checks to ensure the application and library will work as expected..]

# make install

The application installed in /usr/local/bin on my RedHat 9.0 laptop.

Testing cURL is straight-forward as well.

$ curl http://slashdot.org/

[...many lines of streaming HTML omitted...]

Variations on this standard theme include:

  • Send output to a file instead of STDOUT
  • 	$ curl -o ~/slashdot.txt http://slashdot.org/
  • Request compressed content if the Web server supports it
  • 	$ curl --compressed http://slashdot.org/
  • Provide total byte count for downloaded HTML
  • 	$ curl -w %{size_download} http://slashdot.org/

    Baseline Testing with cURL

    With the application installed, you can now begin to design a baseline test. This methodology is NOT a replacement for true load testing, but rather a method for giving small and medium-sized businesses a sense of how well their server will perform before it is deployed into production, as well as providing a baseline for future tests. This baseline can then be used as a basis for comparing performance after configuration changes in the server environment, such as caching rule changes or adding solutions that are designed to accelerate Web performance.

    To begin, a list of URLs needs to be drawn up and agreed to as a baseline for the testing. For my purposes, I use the files from the Linux Documentation project, intermingled with a number of images. This provides the test with a variety of file sizes and file types. You could construct your own file-set out of any combination of documents/files/images you wish. However, the file-set should be large — mine runs to 2134 files.

    Once the file-set has been determined, it should be archived so that this same group can be used for future performance tests; burning it to a CD is always a safe bet.

    Next, extract the filenames to a text file so that the configuration file for the tests can be constructed. I have done this for my tests, and have it set up in a generic format so that when I construct the configuration for the next test, I simply have to change/update the URL to reflect the new target.

    The configuration of the rest of the parameters should be added to the configuration file at this point. These are all the same as the command line versions, except for the URL listing format.

  • Listing of test_config.txt
  • -A "Mozilla/4.0 (compatible; cURL 7.10.5-pre2; Linux 2.4.20)"
    -L
    -w @logformat.txt
    -D headers.txt
    -H "Pragma: no-cache"
    -H "Cache-control: no-cache"
    -H "Connection: close"
    
    url="http://www.foobar.com/1.html"
    url="http://www.foobar.com/2.png"
    [...file listing...]

    In the above example, I have set cURL to:

    • Use a custom User-Agent string
    • Follow any re-direction responses that contain a “Location:” response header
    • Dump the server response headers to headers.txt
    • Circumvent cached responses by sending the two main “no-cache” request headers
    • Close the TCP connection after each object is downloaded, overriding cURL’s default use of persistent connections
    • Format the timing and log output using the format that is described in logformat.txt

    Another command-line option that I use a lot is –compressed, which, as of cURL 7.10.5, handles both the deflate and gzip encoding of Web content, including decompression on the fly. This is great for comparing the performance improvements and bandwidth savings from compression solutions against a baseline test without compression. Network administrators may also be interested in testing the improvement that they get using proxy servers and client-side caches by inserting –proxy <proxy[:port]> into the configuration, removing the “no-cache” headers, and testing a list of popular URLs through their proxy servers.

    The logformat.txt file describes the variables that I find of interest and that I want to use for my analysis.

  • Listing of logformat.txt
  • n
    %{url_effective}t%{http_code}t%{content_type}t%{time_total}t%{time_lookup}t /
    	%{time_connect}t%{time_starttransfer}t{size_download}n
    n

    These variables are defined as:

  • url_effective: URL used to make the final request, especially when following re-directions
  • http_code: HTTP code returned by the server when delivering the final HTML page requested
  • content_type: MIME type returned in the final HTML request
  • time_total: Total time for the transfer to complete
  • time_lookup: Time from start of transfer until DNS Lookup complete
  • time_connect: Time from start of transfer until TCP connection complete
  • time_starttransfer: Time from start of transfer until data begins to be returned from the server
  • size_download: Total number of bytes transferred, excluding headers
  • As time_connect and time_starttransfer are cumulative from the beginning of the transfer, you have to do some math to come up with the actual values.

    TCP Connection Time = time_connect - time_lookup
    Time First Byte = time_starttransfer - time_connect
    Redirection Time = time_total - time_starttransfer

    If you are familiar with cURL, you may wonder why I have chosen not to write the output to a file using the -o <file> option. It appears that this option only records the output for the first file requested, even in a large list of files. I prefer to use the following command to start the test and then post-process the results using grep.

    $ curl -K test_config.txt >> output_raw_1.txt
    
    [...lines and lines of output...]
    
    $ grep -i -r "^http://www.foobar.com/.*$" output_raw_1.txt >> output_processed_1.txt

    And voila! You now have a tab delimited file you can drop into your favorite spreadsheet program to generate the necessary statistics.

    Tags: , , , , , , , , , , , , , , ,

    WRT54G(L): Interesting Behaviour

    September 26th, 2006 by smp | Comments | Filed in Technology

    I was futzing around with my WRT54G(L) last night and did something wrong. I thought I had bricked the damn thing. Much cursing and swearing ensued as I put a BEFSX41 on the front-end of the network (I have three of these; don’t ask why) and wandered upstairs with the lump of black and blue plastic that used to be the hub of my wireless network.

    After much fiddling, I thought I had it working, so I plugged it into the network drop I have at my desk…and the damn thing disappeared!

    Not physically, but from the network. I couldn’t connect to it via the network ports, and when I did connect wirelessly, I got an IP address from the wired router..????

    Then the lightbulb went on. It appears that when you put a WRT54G(L) on a network behind another router (most likely only happens with other Linksys devices) , it immediately becomes an access point ONLY.

    This was the way it was supposed to work.

    And people wonder why Linksys/Cisco sells so many of these damn things. With automagic behaviour like this, it makes the world of networking so much easier for morons like me.

    Technorati Tags: , , , , , , ,

    Tags: , , , , , , , , , , , ,

    Suburban Wildlife

    September 15th, 2006 by smp | Comments | Filed in Life

    Over the last 12 hours, we have had some pretty remarkable “wildlife” scenes in our yard.

    Last night, as I took Wiggles out for her walk, she found a cat…a striped, stinky cat.

    Skunk 1, Wiggles 0.

    We suspect that it had been hiding under our back porch. We are taking steps to encourage it to find new digs. But Wiggles did enjoy her bath at 10:30 last night.

    This morning, two squirrels decided to try on their best wrasslin’ moves in the ancient birch tree outside our house. The were tumbling around like crazed…well, squirrels. They rolled down the tree in a ball once, and then fell separately from about 20 feet, bouncing off tree branches on their way to the ground.

    When they broke it up, one of the combatants sat in a tree branch for about 20 minutes, recuperating and literally licking its wounds.

    Who says that we live in a world devoid of natural elements?

    Tags: , , , , , , , , ,

    Upgrade to Wordpress 2.0.4

    July 30th, 2006 by smp | Comments | Filed in Blogging

    In the last three days I have gone from Wordpress 2.0.2 to 2.0.3, then from 2.0.3 to 2.0.4. All went seamlessly, and the blog working as expected.

    Upgrades in both cases took less than 5 minutes.

    I love Wordpress. I now know why Moveable Type is tanking so hard.

    Technorati Tags: , ,

    Tags: , , , , , , ,

    Web Performance: Looking for Sites Using Windows 2000 Server and IIS/5.0

    June 14th, 2006 by smp | Comments | Filed in Web Performance

    I am doing a brief study on something I have noticed in a couple of sites running Windows 2000 Server and IIS/5.0, most notably with server-based SSL in place. In order to verify my findings, I need a larger subset of sites/servers to gather data from.

    If you have such a site, please leave me a comment.

    Technorati Tags: , , , ,

    Tags: , , , , , , , , , , , , , ,

    London: Some final thoughts

    May 17th, 2006 by smp | Comments | Filed in Life

    I am at Heathrow, and my 20:10 BST flight has become a 22:55 BST flight, meaning I will get into Hamburg at around 01:00 CEST tomorrow.

    Gives me some time to write my final impressions of London.

    London is a very busy world city. For a small town boy, I think I did remarkably well in it. I used the Tube on my own for the first time this trip and realized just how well the system works.

    However, the lasting impression I will have is of diesel. The smell of diesel permeates London. In the office, the hotel, the trains, the cabs, the client offices. Everywhere there is diesel. For someone who is sensitive to strong smells, this is a living hell. I know that it was clouded over and the weather did a lot to accentuate the smell, but I can smell it still here at the airport.

    Other than that, the city is a grand dame, unrivalled anywhere. Old and new seamlessly blend, creating a flowing organic place to walk.

    I walked along Carnaby Street and Savile Row in the same day.

    I saw Glasgow and Edinburgh, as a visiting businessman, not a tourist.

    In London, you will hear most of the major languages, within 5 minutes, on the same street.

    It is a wonderful and frightening place.

    It is complex and simple.

    It is like a fine whiskey: repulsive to some, loved by some, and definitely an acquired taste for most.

    Off to Hamburg.

    UPDATE: Flight now set to depart at 21:15 BST

    Technorati Tags: , , ,

    Tags: , , , , , , , , , , , , ,

    Culling the Partial Text Feeds

    May 26th, 2005 by smp | Comments | Filed in RANTING

    There appears to be a meme beating its way around the chaos we call the blogosphere, that of culling out the partial text feeds in favour of the full text versions.

    I usually check this out when I decide to subscribe. Bloglines will occasionally offer up a selection of feeds to choose from, and if given the choice, I always go with the full text.

    Tonight, I began (alomost) mindlessly culling out the partial text feeds. ProBlogger, Moliskinerie and ongoing. LifeHack looked cool, but the partial text feed saw them get the boot.

    I agree with Scoble (ugh…I hate saying that!) on this:

    I’ll visit your site once in a while or whenever one of the bloggers that I read tells me you’ve written something interesting (which is quite often)

    I know why partial text feeds exist. But I have AdBlock installed in Firefox, so even if I click through, you get no benefit. Turn on full feeds.

    Do it. Now.


    Jeremy Zawodny is on the bandwagon.

    Tags: , , , , , , , , , , , , , , ,