I am actually doing a side project which you will heard of very
soon. For this project I am using
Play! Framework v2 with
the server side being developed in
Scala. To efficiently push
this new application to production, I am using the
Heroku platform
While my initial thoughts were using MySQL as my relational backend,
the default stack provided by Heroku made me switch to postgresql
that I have barely used in the past. I attempted to set it up on my
machine, but with no luck, Mountain Lion is bundling an old version
(8.4) whereas I wanted the same as on the Heroku platform. My first
attempt with Homebrew was quite a disaster, I never managed to
correctly connect my newly created user.
After a few hours mumbling, I looked for an alternative to the
Homebrew version. Luckily, the guys at Heroku provide a neat
application Postgres.app to
drop that allows to quickly start/stop a postgresql server. My
problem was I didn't had enough connections to allow my application
to start, I was always getting this message :
remaining connection slots are reserved for non-replication
superuser connections
.
I edited the configuration file
vim "~/Library/Application Support/Postgres/var/postgresql.conf"
to bump the number of connections to a lot more (20 instead of 10)
but it prevented my server to start. With a lot of file editing and
restarts, I found that the limit for my machine was 11 connections.
The solution to this problem resides in a special setup of the mac
os kernel which defines the amount of shared memory a process can
allocate. To get rid of this, you can edit your
/etc/sysctl.conf
file (root required) and put the
following lines (it will persist across reboots)
kern.sysv.shmall=65536
kern.sysv.shmmax=16777216
Credits for this tip comes from
http://ruby.zigzo.com/2012/07/07/postgresql-postgres-app-and-a-gotcha-on-mac-osx-lion/