Owen Taylor, who I pleaded (in person and in this blog) to start blogging, has done so. This is Owen Taylor’s Weblog. If you’re interested in jini, javaspaces or random technological musings, give it a look. Welcome, Owen!
Technology - 7. page
apachebench drops hits when the concurrency switch is used
I’ve used apachebench (or ab
), a free load testing tool written in C and often distributed with the Apache Web Server, to load test a few sites. It’s simple to configure and gives tremendous throughput. (I was seeing about 4 million hits an hour over 1 gigabit ethernet. I saw about 10% of that from jmeter on the same machine; however, the tests that jmeter was running were definitely more compex.)
Apachebench is not perfect, though. The downsides are that you can only hit one url at a time (per ab process). And if you’re trying to load test the path through a system (“can we have folks login, do a search, view a product and logout”), you need to map that out in your shell script carefully. Apachebench has no way to create more complicated tests (like jmeter can). Of course, apachebench doesn’t pretend to be a system test tool–it just hits a set of urls as fast as it can, as hard as it can, just like a load tool should.
However, it would be nice to be able to compare hits recieved on the server side and the log file generated by apachebench; the numbers should reconcile, perhaps with some fudge factor for network errors. I have found that these numbers reconcile as long as you only have one client (-c 1
, or the default). Once you start adding clients, the server records more hits than apachebench. This seems to be deterministic (that is, repeatable), and worked out to around 4500 extra requests for 80 million requests. As the number of clients approached 1, the discrepancy between the server and apachebench numbers decreased as well.
This offset happened with Tomcat 5 and Apache 2, so I don’t think that the issues is with the server–I think apachebench is at fault. I searched the httpd bug database but wasn’t able to find anything related. Just be aware that apachebench is very useful for generating large HTTP request loads, but if you need to reconcile for accuracy, skip the concurrency offered.
The Eolas Matter, or How IE is Going to Change ‘Real Soon Now’
Do you use <object> functionality in your web application? Do you support Microsoft Internet Explorer?
If so, you might want to take a look at this: Microsoft’s Active X D-Day, which details Microsoft’s plans to change IE to deal with the Eolas lawsuit. Apparently the update won’t be critical, but eventually will be rolled into every version of IE.
Here’s a bit more technical explanation of what how to fix object embedding from Microsoft, and a bit of history from 2003.
Via Mezzoblue.
A survey of geocoding options
I wrote a while back about building your own geocoding engine. The Tiger/Line dataset has some flaws as a geocoding service, most notably that once you get out of urban areas many addresses simply cannot be geocoded.
Recently, I was sent a presentation outlining other options (pdf) which seems to be a great place to start an evaluation. The focus is on Lousiana–I’m not sure how the conclusions would apply to other states’ data.
Newsgator goes mobile
Congratulations to Kevin Cawley, whose mobile products company has been acquired by Newsgator. I know Kevin peripherally (we talked about J2ME once or twice) and wish him luck in his new job.
Folks whose opinion I respect really like Newsgator for RSS aggregation; it’ll be interesting to see how they react when Outlook 12 is released with RSS aggregation built in.
Full content feeds and Yahoo ads
I changed the Movable Type template to include full content on feeds. Sorry for the disruption (it may have made the last fifteen entries appear new).
I think sending full content in the feeds (both RSS1 and RSS2) goes nicely with the Yahoo Ads I added a few months ago. Folks who actually subscribe to what I say shouldn’t have to endure ads, while those who find the entries via a search engine can endure some advertising. (Russell Beattie had a much slicker implementation of this idea a few years ago.)
More about the ads: I think that they’re not great, but I think that’s due to my relative lack of traffic–because of the low number of pageviews, Yahoo just doesn’t (can’t) deliver ads that are very targeted. (I’ve seen a lot of ‘Find Dan Moore’). It’s also a beta service (ha, ha). Oh well–it has paid me enough to go to lunch (but I’ll have to wait because they mail a check only when you hit $100).
As long as we’re doing public service announcements, I’ve decided to turn off comments (from the initial post, rather than only on the old ones). Maybe it’s because I’m posting to thin air, or because I’m not posting on inflammatory topics, or because comment spam is so prevalent, but I’m not getting any comments anymore (I think 5 in the last 6 months). So, no more comments.
And that’s the last blog about this blog you’ll see, hopefully for another year.
Choosing a wiki
I am setting up a wiki at work. These are our requirements:
- File based storage–so I don’t have to deal with installing a database on the wiki server
- Authentication of some kind–so that we can know who made changes to what document
- Versioning–so we can roll back changes if need be.
- PHP based–our website already runs php and I don’t want to deal with alternate technologies if I don’t have to.
- Handles binary uploads–in case someone had a legacy doc they wanted to share.
- Publish to PDF–so we can use this wiki for more formal documents. We won’t publish the entire site, but being able to do this on a per document basis is required.
I see this wiki both as a repository for company muscle memory (technical decisions, R&D results) and a place for more formal documents (requirements) that might be published to PDF. Basically, I’m trying to get rid of .doc files as a technical document format. I read about this on some XP mailing lists of which I used to be a part and am interested to see how effective it might be.
I started with PHPWiki but its support for PDF was lacking. (At least, I couldn’t figure it out, even though it was documented.)
After following the wizard process at WikiMatrix (similar to CMSMatrix, which I’ve touched on before), I found PmWiki, which has support for all of our requirements. It also seems to have a nice extensible architecture.
Installation was a snap and after monkeying around with authentication and PDF installation (documented here), I’ve added the following lines to my local/config.php
:
include_once('cookbook/pmwiki2pdf/pmwiki2pdf.php');
$EnablePostAuthorRequired = 1;
$EnableUpload = 1;
$UploadDir = "/path/to/wiki/uploads";
$UploadUrlFmt = "http://www.myco.com/wiki/uploads";
$UploadMaxSize = 100000000; // 100M
Google tricks
Not only can RSS get you a job and Google spare you from remembering URLs, but combining them lets you find when your namesake is in the news. Via the Justin Pfister RSS generator and Q Digital Studio.
Testing XMLHttpRequest’s adherence to HTTP response codes
mnot has a set of tests looking at the behaviour of XMLHttpRequest as it follows various HTTP responses. Some of it is pretty esoteric (how many folks are using the DELETE method?–oh wait). But all in all it’s interesting, especially given the buzz surrounding AJAX, of which XMLHttpRequest is a fundamental part.
Scott Davis pleads “Evolve” to Microsoft
An eloquent plea which points out some of the complexities of Microsoft’s current situation. Microsoft, which had revenues of $9.74 billion in 2006 Q1 (with operating income of $4.05 billion), certainly isn’t an industry darling anymore. I’m sure someone in Redmond is well aware that: