I cannot scale beyond that value and the funny thing, is that none of the
servers is swapping, or heavy loaded, neither postgres nor apache are
refusing connexions.
Hearing a story like this (throughput hits a hard limit, but
hardware doesn't appear to be 100% utilized), I'd suspect
insufficient concurrency to account for the network latency
between the two servers.
Also check that your disks aren't saturating somewhere (with
iostat or something similar).
You could run pstack against both processes and see what they're
doing while the system is under load. That might give a clue
(e.g. you might see the apache processs waiting on
a response from PG, and the PG processes waiting
on a new query to process).
Since you've proved that your test client and apache can
handle a much higher throughput, the problem must lie
somewhere else (in posgresql or the interface between
the web server and postgresql).