Subject Sizing a dedicated Firebird server (Linux)
Author Myles Wakeham
We are considering adding a dedicated server specifically for running
Firebird on CentOS Linux. This server will predominately be serving the
needs of dozens of PHP applications running on separate servers through
Apache. Identifying the number of users is difficult because some of
the applications served do not have a pre-determined user base and are
general Internet applications. However in order to justify the capital
expense of the hardware for the Firebird server, we'd like to be able to
serve about 50-150 concurrent connections (ie. queries) on the Firebird
server from these external connections.

Since PHP connections are typically small and commit/complete at the end
of the page request, the database server would not be dealing with lots
of longer transaction requests, but a large number of smaller, short
burst queries with 90% of them being 'read/only' (ie. lists of data,
record inquiries, etc.).

There will be many databases served from this one server. We do not
anticipate supporting shadowing on the box, but would use a RAID 5 or
similar disk storage setup, probably using 3Ware RAID hardware controllers.

Budget is relatively tight for this, and we would prefer Supermicro
hardware. Although our preference would be to install this as a virtual
server (using VMWare) we are ok with installing the OS directly on the
server. Network access will be through a 1000gb/s Ethernet network
(relatively dedicated to this cause). The machine will be backed up
nightly using standard gbak cron jobs to an external disk array and/or SAN.

What I'm trying to get an idea of are the following:

1. Ideal CPU configuration to support this. Some of the apps need a
Firebird 1.5 server due to backwards compatibility. Until they are
retrofitted to later versions of Firebird, I need to support this
release level. If there are any specific performance tuning options and
ideal hardware configurations for CPU with this, I'd appreciate any

2. Memory requirements to support this number of users. Again, the
queries are typically short and sweet. But some can be taxing on the
server, so I'd like to have the machine sized with adequate memory for
the following levels:

a. 50 concurrent queries
b. 100 concurrent queries
c. 150 concurrent queries

3. Recommended disk drive/array configurations. We can support SATA or
SAS drives

If anyone has gone through a similar exercise in sizing servers for this
type of application, I'd love to hear how your planning went and whether
the end result of actual usage was vastly different in anyway to your
planning, etc.

Thanks in advance for any information.

Myles Wakeham
Director of Engineering
Tech Solutions USA, Inc.
Phone +1-480-451-7440