[Koha-devel] Some thoughts on the SIP-server scalability

Petter Goksøyr Åsen petter.goksoyr.asen at kul.oslo.kommune.no
Fri Jan 31 13:15:20 CET 2014


Dear Koha devs!

I work at at Oslo public library. We recently decided to go for Koha, and are
now working on planning the migration from our current ILS. 

Our library is fully automated, with RFID-checkin machines taking care of almost
all of our circulation. We currently have around 50 of these running at 15
branches around the city. Because of this, we naturally need the SIP-server to
handle quite a load. I checked the logs of our current ILS, and found the
number of SIP-messages peeked at 58 per second. 

(In addition to the checkin-machines - we have a lot of RFID-workstations which
potentially also will make use of SIP)

Correct me if I'm wrong, but this is what I have found out:
Koha's SIP server can only handle one request at a time. So if you need more
you have to spin up more SIP-severes. This fine for a few, but try to spin up
30 of theese - it takes 15 minutes just to get them all started on a new box
with plenty of RAM & CPU.
The servers are independent processes which share no resources..

Instead of forking seperate processes for each connection - what about a server
which runs as _one_ process and handles multiple tcp connections? I've read about
and tested Poe (http://poe.perl.org/) with this in mind - and it seems pretty nice.
Poe is an evented framework (akin to Node for javascript or EventMachine in Ruby)
which handles such multiplexing of severeal connections.

Poe seems very mature, but I'm not competent to judge if its a good fit. There
are other options as well (ex IO::Async & AnyEvent )

Any thoughts?

We're also very keen on hearing about experiences from other automated Koha libraries,
especially those with more than a checkin-machines.

Best regards,

Petter Goksøyr Åsen
Deichmanske bibliotek / Oslo Public Library


More information about the Koha-devel mailing list