Archive for the ‘Open Source’ Category

HTTP to HTTPS and CDN Transitions in Web Browsers and Email Clients

Wednesday, September 1st, 2010

It’s easy for front-end designers and server-side engineers to create web sites that don’t play well when SSL and Content Delivery Networks (CDNs) are added to the site.

Fortunately it’s also easy to solve that by understanding how to design HTML and site structure in advance to support those.

One of the most helpful things that can be done is to have well-defined URLs for HTML, images, CSS and JavaScript in the following scenarios:

  • homepage content rooted under /, like ., images, css and js respectively
  • admin site content rooted under /app, like ., images, css and js
  • CDNs where you may store content in the future, such as a network-local proxy, Amazon, Akamai or Limelight. Generally a remote URL is overlaid onto the homepage or admin site structures listed above.

If you have localized content, each of the subdirectories above may be subdivided by ISO language code also.

Generally HTML and URLs intended for web browsers and email clients needs to be considered separately:

  • web browsers handle relative URLs well
  • email clients do not handle relative URLs as well as browsers, if at all. For example, not using an absolute URL or not specifying the scheme (ie. ://domain.tld) will cause problems in most email clients.
  • in both cases, HTTP servers can use URL rewriting if necessary to make changes after the design is done.

Relative URLs not only help with HTTP to HTTPS transitions, but also in creating developer sandboxes, and test and QA servers.

Try to make as many links as possible relative in your HTML as possible if you’re planning on using SSL or test servers in the future. Fixing the links later can be expensive as it requires testing the entire site again for broken links.

By having reserved directory paths for images, css and html, it’s possible to set far-future expiry times to improve cacheability of those assets. However, the filename may not be reused, so new version of images need to receive a new filename or else caches will continue serving the old content.

And by having a URL available for items that could be served from a CDN, it’s possible to configure your CMS to be CDN-aware from Day One and avoid site changes and testing later. One of the first things I check when evaluating CMS programs these days is how I would easily be able to change serving images from a local web server to a remote CDN.

Some ZFS News

Friday, August 27th, 2010

Phoronix has a really well-written article on ZFS, including news on a company planning to release a CDDL-licensed linux kernel module.

ZFS is the holy grail of filesystems. Many Database Administrators have switched from Linux to Solaris because ZFS has much better snapshot support than LLVM, as well as good SSD support.

phoronix.com: Native ZFS Is Coming To Linux Next Month (Aug. 27, 2010)
phoronix.com: Btrfs, EXT4 & ZFS On A Solid-State Drive (Aug. 9, 2010)
phoronix.com: Benchmarking ZFS On FreeBSD vs. EXT4 & Btrfs On Linux (July 27, 2010)
phoronix.com: Running ZFS With CAM-based ATA On FreeBSD 8.1 (July 26, 2010)
github: Native ZFS for Linux
FreeBSD Wiki: ZFS

Java and the Software Patent Minefield

Friday, August 13th, 2010

I was always skeptical of Sun’s possessive and schizophrenic licensing of Java … originally CDDL (Open Source, but not quite Free), then licensed under GPL2 in 2006 but with numerous patents filed.

Some versions had “classpath exceptions”, like Standard Edition (SE), and some didn’t, like Mobile Edition (ME.)

So I stuck with C/C++ and Unix scripting languages like Perl, which don’t rely on any one company.

Oracle has clarified what those Java patents mean, with a lawsuit against Google for using Java, over 7 software patents originally granted to Sun. They even tossed in some copyright violation complaints.

(Oracle/Sun also has numerous restrictions on their downloadable Java binaries, including right of agreement termination at any time.)

The US Patent Office created a software and business method process minefield when it allowed patents on the most trivial of ideas reduced to practice.

One of the patents being litigated even involves the JAR format.

This is just the latest example of why software patents are of no benefit, except to monopolists who want to impede progress and openness.

allthingsd.com: Love, Larry: Here is the Oracle Statement and Final Complaint Versus Google
cnet.com: Sun settles Kodak’s Java suit for $92 million (2004)
cnet.com: Sun picks GPL license for Java code (2006)
cnet.com: Why Oracle, not Sun, sued Google over Java

SVLUG meeting: Next-generation Samba with John Terpstra

Wednesday, August 4th, 2010

At the Silicon Valley Linux Users’ Group (SVLUG), John Terpstra lectured on the development history and status of Samba, a high-performance storage project he worked on, and ClearOS.

John is a technology manager and co-author of The Official Samba-3 HOWTO and Reference Guide (Bruce Perens’ Open Source Series).

He has previously worked as a VP at TurboLinux and Caldera on Linux clustering products. (I vaguely remember those products from way back around 2000.)

Some of the Samba tips he gave were:

  • trim your samba configuration file down to essential settings
  • Samba’s ActiveDirectory capabilities enable large networks to scale beyond Microsoft’s implementation
  • network bandwidth consumption can be reduced by proper configuration of WINS and broadcast vs. anycast

John also mentioned that Microsoft is contributing to Samba through their effort to make various protocols available to all POSIX operating systems and also interop testing meetings.

He gave an interesting overview of a document discovery project that required an elaborate storage system. He was able to setup a working test environment with RHEL, LVM, GFS2 and DRBD and various filesystems before switching to Glusterfs on top of Solaris ZFS for more efficient handling of directory metadata with deep directory paths containing 800,000 files per directory. (There were approx. 3 volumes containing 14 TB each.)

Thanks to Symantec for hosting the meeeting once again.

Axceleon acquires Turbolinux’s EnFuzion Clustering Solution (2002)

Defcon 18, Las Vegas

Sunday, August 1st, 2010

DEF CON 18 was held once again in Las Vegas at the Riviera Convention Center.

There were a handful of talks on the subjects of DNS and IPv6.

The hacker Jeopardy session was a lot of fun. I think the audience got more correct answers than the panel. I was impressed with the software somebody wrote to show the game categories – very convincing. Afterward, the EFF had an interesting fundraiser (your photo beside a “model”.)

The weather was hot but clear. The McDonald’s across the street is open 24 hours and has free WiFi.

I walked over to the Fashion Show Mall (about 1 mile.) It has a variety of restaurants on different levels, including a Maggiano’s, the Capital Grille, and a gourmet burger stand.

theregister.co.uk: Defcon speaker calls IPv6 a ’security nightmare’

O’Reilly Open Source Conference 2010, Portland

Friday, July 23rd, 2010

Once again, the O’Reilly Open Source Conference (OSCON) was held in Portland, Oregon.

It was a good conference, and we had beautiful weather all week long.

Executive Summary

The themes promoted by the conference organizers were Cloud Computing, NoSQL, Emerging Languages (Scala, Erlang, Parrot, Go) and Android phone development.

The @oscon twitter channel was heavily used to coordinate amongst organizers and attendees. I used the TwiXtreme twitter client program on my BlackBerry.

Plug Computers were very popular in the Expo area. They are 5 watt ARM-based computers running Debian Linux that fit into a power brick-sized case and cost $99 to $129 depending on features. The Marvell booth had a few models on display, from GlobalScale (GuruPlug) and Ionics. High-end models have dual gigabit NICs, multiple USB ports, a WiFi access point and other expansion ports.

There was also continuing buzz regarding Facebook’s Flashcache SSD module (GPL v2) for linux, and also ZFS snapshots.

Tutorials

I went to the Gearman Cookbook tutorial, the first half of the Chef tutorial and some of the Cloud Summit talks.

The Gearman Cookbook tutorial was excellent. After a detailed overview of the Gearman architecture and implementations in Perl and C, a number of use cases were explored in detail, including before and after code samples. The talk was both easy to listen to as an overall survey, as well as providing immediately useful info for those wanting to deploy it.

The Chef tutorial was very detailed – too much so perhaps. I went to the first half only, since I am not planning to implement Chef soon (I use PXE and anaconda/kickstart with CentOS), and did not need that level of detail at this time. cfengine, puppet and chef are ops tools for configuring servers. Chef uses Ruby data structures for its configuration files, and has include files and other useful syntax. Basically, users can “code” server configuration, as if they were traditional apps.

I went to some of the Cloud Summit talks and BOFs, but found that anybody who has done a simple project using EC2 knew as much or more than the speakers, some I would call blowhards.

Marten Mickos, president of Eucalyptus, is refreshing in that he is always clear about being in it for the money, while also promoting Open Source.

Sessions

Some of the most memorable sessions to me were:

Introduction to MongoDB, Kristina Chodorow (MongoDB)

Kristina is the maintainer of the Perl and PHP drivers for MongoDB. She gave an overview of MongoDB, a NoSQL document store, and its command-line interface, which uses JavaScript.

Some day she will release a sharding tool for MongoDB.

Scaling SourceForge with MongoDB, Nosh Petigara (10gen), Rick Copeland (SourceForge.net / GeekNet)

Nosh and Rick gave an excellent review of incorporating MongoDB into the SourceForge site.

- SF query load is mostly read-only
- ops team benchmarked a few NoSQL candidates, and MongoDB won on performance
- original MySQL servers had 64 GB RAM. After migration to MongoDB, same server machines but only 8 GB RAM
- backup dumps are verified to be bitwise the same as masters
- have to be careful not to dump all documents in your database to the network or it will max out switches
- SF relies on first-class data centers and replication slaves, less worried about MongoDB mmap (not crash-safe)
- I personally looked at their performance numbers and site graphs (on an iPad), and the end result was impressive.

Perl Lightning Talks

As always, the Perl Lightning Talks are a highpoint of the conference.

The “cartoon” of Vincent Pit’s remarkable CPAN module(VPIT) contributions was both informative and hilarious. Vincent is a French Ph.D. candidate in advanced geometry.

Cloud BOF (3 Hours)

The Cloud BOF was disorganized, starting 30 minutes late and for some reason was subdivided into 4 audience groups. Startups and vendors trying to make a cloud sales push led the BOF, including cloud and DNS service providers.

The Health Regulations subgroup came up with a couple ways to make the Cloud palatable to regulators by using encryption on all data due to the multi-tenancy issues with sharing public VMs.

I was in the NoSQL group, which discussed general issues and particular successes. Memcached was the clearest winner, while some people also had success with MongoDB and Redis.

My neighbor was an engineer at Postrank.com. He said that they were happy with HAProxy, but much less happy with the unpredictable IO available when running MySQL on EC2. He also said to carefully look at storage volumes available to your instance, as one is a useful tmpfs. They use AuthSMTP to get around EC2 being generally blacklisted for outbound email.

Database BOFs

MySQL BOF

The MySQL AB engineering staff has left Oracle. Monty Program AB (21 staff) has the core developers, and Percona Inc. (32 staff) has the consultants. Oracle still has some of the InnoDB programmers.

The business plan for Monty Program AB is 60% commercially-sponsored MySQL development, and 40% community-request development. Monty would like commercial users of MySQL to sponsor patches that would benefit them.

Mark mentioned that using Nehalem instructions for CRC were much faster, and that Facebook was using partitions for truncating tables instead of doing multi-record deletes. (See his blog for more details.)

One person mentioned using a commercial backup tool, R1Soft, that inserts a linux kernel module to allow filesystem snapshots. He said to carefully test backup and restore in your environment, especially for filesystems greater than 1 TB which may exceed certain block counter limits. Peter said that some of his clients had used it with varying success.

It worked for him in his environment, and the file browser allows selective file restore (he uses it to restore by priority where a system runs multiple applications.) It starts at $299 for the Standard Edition, and also has MySQL Add-on and Enterprise Editions.

PostgreSQL BOF

The PostgreSQL BOF talked about 30 or so changes that went into version 9.

One of the most exciting new features is a native replication feature, called streaming replication (block-based.) The advantage over Slony-I replication is that Slony-I is trigger-based, so has a variety of issues included inability to replicate DDL commands.

Some of the developers mimed replication events, which was rather amusing to watch. Yes, it was taped.

PostgreSQL is released under the PostgreSQL Licence, which is BSDish.

Peter Zaitsev, co-founder of Percona, organized 3 BOFs, including XtraDB, XtraBackup, Maatkit, Percona Server, Sphinx Search and Running Databases on Flash Storage.

Sphinx Search BOF

Andrew Aksyonoff, the original programmer of Sphinx Search (GPL v2), couldn’t make it to OSCON (the good excuse was that he was busy coding), so Richard Kelm (Sphinx sales/customer support honcho) and Peter filled in (Percona is a business partner with Sphinx, and many of Percona’s clients use it.)

Some of the attendees were existing users, like myself, and some from HP and other companies were looking for a large-scale search solution or alternative to Lucene.

Monty mentioned that the latest MySQL 5.1 should be used, as there have been a number of performance and reliability improvements. Full-text search is supposed to be 10x faster than 5.0, and replication is nearly bug-free by now.

Sphinx Search now has real-time index updates in version 1.1.0 beta. Another very nice feature is SQL+FS indexing.

Here is the full Sphinx 1.1.0 changelog.

Running Databases on Flash Storage BOF

The Running Databases on Flash Storage BOF had a combination of MySQL and Postgres users who have tested or used most of the SSD products: FusionIO, violin, Intel, OCZ, etc. Everybody was happy with SSD IOPS performance, but less so with cost and metadata RAM requirements with the add-in boards (FusionIO may require 4 GB RAM for metadata.)

Peter said that 20% to 30% of his clients are already using SSD – across the spectrum of vendors and models. Some are also trying “massive RAM” solutions, like Cisco servers with 384 GB RAM.

Some users had 1+ TB Postgres databases with very thorny backup and mgmt. issues. One solution was to start a snapshot, but not do the copy operation.

Expo Notes

I had an enjoyable talk with Austin Hook, who has operated the OpenBSD Store for many years. He lives near Calgary, the center of OpenBSD/OpenSSH/PF development. He mentioned that some perennial financial contributors had stopped because of the recession, so here’s the donations link.

I also talked to some reps from a Brazilian outsourcing firm, ActMinds. They currently have 400 employees across Brazil and a sales office in Philadelphia. Brazil is only 2 hours ahead of EST. They said the minimum project size is 2 developers and developer turnover a low 5%/annum. Their pricing is $35 to $45/hour.

And I had fun handling the plug computers on display at the Marvell booth. The Ionics boards are amazingly densely populated.

Discussions

I had the opportunity to talk to a long-time Portland resident who works as a computer consultant. He said that the Portland economy is not doing great, and really hasn’t done well since old-growth logging was stopped after 90% of the forests were cleared. And although hundreds of miles of fiber optic has been laid downtown, it’s not available for residential use. However, the Beaverton area does have ubiquitous FTTH.

I also talked to somebody who attended the Emerging Languages talks. He’s working on his M.Sc. in Computer Science, so found those talks fascinating.

Twitter Humor

There were some humorous tweets:

- “my MongoDB and CouchDB mugs are fighting each other.”
- “I got one MongoDB mug, but need two to safely store coffee.”

Notes

Note to self: skip the nightly parties unless you have a date. The bars are too loud to talk to anybody.

Note to the O’Reilly conference organizers: use meetup.com for the BOFs like ApacheCon does. The average audience was about 10 people, and with meetup it would be 4x that.

OSCON 2010 Slides
Tim Bray: Desperate Perl Hacker
Youtube: OSCON 2010 videos
blip.tv: OSCON2010 videos
wikipedia: Plug Computer
Jeremy Zawodny: MongoDB Early Impressions

SMTP Maximum Body Line Lengths

Thursday, July 15th, 2010

Handy maximum email message body values to know when debugging email line-folding problems.

Generally if ! or !+ characters are inserted into long email lines, the solution is use shorter lines (insert newlines) or use quoted-printable encoding.

MTA Maximum Octets
RFC821 1000 including CRLF
qmail 990
sendmail standard ESMTP 990
sendmail relay 2040

RFC 821: “The maximum total length of a text line including the <CRLF> is 1000 characters (but not counting the leading dot duplicated for transparency).”

Re: sendmail maximum line length
Dan on Body: Line Length

MySQL Storage Capacity Planning

Sunday, July 11th, 2010

Planning how much storage is needed for MySQL databases is an issue that always comes up when buying new servers.

There’s 2 different general cases, OLTP and logging or Data Warehouse databases.

OLTP Database Storage Capacity Planning

Based on experience, I usually recommend total disk space available to MySQL of around 4x the size of the existing OLTP database to ensure enough working space and to make operations, mgmt. and recovery easier.

Let’s analyze why …

Disk space is needed for:

  • size of database data and index files ( du -sh /var/lib/mysql )
  • size of largest table x 2 if tempfiles or sortfiles are needed, per simultaneous process doing this – hopefully one “rogue” process at a time. (This is one of the main reasons to avoid ad hoc queries on production databases.)
  • size of each backup file, for backups that are stored locally (in a disaster, copying a large database over the network just takes too long for Internet services)
  • size of binlogs if stored outside /var/lib/mysql
  • 5% free for general OS processes
  • 5% to 20% is needed for LVM snapshot space if used

Sample Calculation

1 database + 2 backups + largest table (50% of db) * 2 = 3x, plus some binlog growth and 5% = 4x original database size.

For most users with basic hardware, all of that will be on 1 filesystem.

Surprisingly, even with separate filesystems for binlogs and backups, the maximum filesystem size doesn’t get reduced much:

  1. one backup needs to be on the main data filesystem, unless you want to spend several minutes copying it to /var/lib/mysql instead of a 1 second move. Possible exceptions are if you have a small database backup on SSD or other really fast device. But copying 50 GB at 400 MB/s would still take 125 seconds, or 2 minutes – just for the copy operation alone.
  2. table copies and sorts will be done in /var/lib/mysql unless $TMPDIR is set and working correctly.

Logging/Data Warehouse Database Storage Capacity Planning

For logging and Data Warehouse databases, capacity planning depends heavily on your initial planning and environment:

  • depending on SLA, a local copy may not be needed for quick recovery – just copy from the backup server over the network
  • some DW databases are effectively backed up by keeping the original load files available
  • canned reports can be EXPLAINed in advance to avoid tempfiles and sortfiles
  • storage engines (table types) consume space differently: Archive < MyISAM < Innodb
  • some storage engines, like Archive and MyISAM (but not Partitions in 5.1), allow filesystem-level read-only permissions, reducing recovery time substantially in case of power loss or fsck

I get alarmed when I see a filesystem with MySQL data on it more than 50% full, but far more so with OLTP usage than logging.

Regardless of planning, a cross-join on two multi-million row tables is guaranteed to consume all space. In that case, see the MySQL manual link below for the expected behavior.

MySQL 5.1 Manual: How MySQL Handles a Full Disk