[racket] SSL and db/postgresql performance
Anyone run into any unusual performance problems when using SSL with a
"db/postgresql" connection, or have ideas why that might happen?
Reason I ask is that a particular large Racket installation has reported
a problem, and I have only a few guesses as to why. This installation
has two libraries for accessing PostgreSQL: an old one using a C
extension and "libpq", and a drop-in replacement that layers over the
Racket "db" library. When SSL is not used, the new library gives vastly
better performance under load, perhaps due mostly to no C mutual
exclusion bottleneck when handling concurrent connections. However,
when the connections are SSL'd, the relative performance difference
becomes reversed, and the old library with "libpq" C extension library
becomes much faster than the one using Racket "db". The SSL protocol
versions should be the same.
Assuming that the performance difference is not due to a configuration
difference or experimental error... my first guess would be a huge
latency difference, such as if "libpq" were flushing I/O and padding
encryption blocks much more aggressively. I'm also suddenly wondering
whether Racket calling out to OpenSSL re-creates the C mutual exclusion
bottleneck that we went to some trouble to get rid of.
As a backup option, I'm considering using SSL tunnels as separate Linux
processes, but there are reasons we'd like to avoid that if there is a
reasonable solution to the SSL performance in Racket.
Neil V.