Hey Corey, first I want to apologize for my tone in my reply to you - I didn't mean to take a negative tone, and on re-reading, that's what I get out of what I said.
I've never used Tsung before myself, so I haven't the slightest clue - I tried installing it just now, and I can't get it to do anything but die a terrible, agonizing death... Oh well.
I tend to use siege for concurrency testing. Tsung looks like it's way, way over the top for what you're looking to do with it, although its graph generation is pretty nice - it's a distributed benchmarking platform for throwing thousands of hits per second at a cluster, more than hundreds at some poor Atom.
Any PHP script might be hitting an SQL database for who-knows-why - An almost completely static contact page might decide it wants to track the number of times the page is loaded. And it may not open a persistent connection to the DB to do it.
A contact form script should just scream right out of the gate in a decent configuration, if it isn't doing anything particularly stupid like writing to a DB or the filesystem.
I think Tchen is on the right track here - I for some reason thought you were slamming a Wordpress install (and was quietly impressed by the results), but I'll throw in a suggestion that you make sure some sort of bytecode caching is installed and enabled - apc, xcache, etc.
To put your numbers into perspective here - I have a pet project server monitor script that, on every single pageload, fopens 6 different multi-megabyte log files, jumps into the end of it, and parses the last five lines lines, performs some operations on them, and belches out a ~100k (ungzipped) page. Without any tweaking at all, this script gets 75-100 peak concurrency with a 2 second response time on a single core, 512MB KVM VPS that's running a variety of other services for real projects.
Edit with some settings on the above config:
php.ini:
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
access.log and error_log are both enabled, for both nginx and php5-fpm, adding even more IO per request.
Using a Unix socket rather than a TCP port.
It's pretty much just a stock nginx/php5-fpm install from their respective ppas.
The setting you may want to look into. to limit your backlog is:
; Set listen(2) backlog.
; Default Value: 65535 (-1 on FreeBSD and OpenBSD)
;listen.backlog = 65535
That'll let 65 thousand outstanding PHP requests sit waiting for your queue to clear out.