Hi all,

We run a php/mysql University Management System that is facing performance problems.

Currently the active components of the system runs on three servers, two dedicated for the application (dual Xeon 4G RAM) running behind a load balancer and one for the Mysql 4.1 database (dual Woodcrest 8G ram). The DB is about 300 MB, fields are generally small, but one table have 100 thousand records, but with a lot of processing (application and DB), and complicated joins.

The system runs good enough in non-registration periods, but has failed to handle the extra concurrent load generated during registration periods. During this period, the application performance decreased dramatically. The database server had a much severe problem, refusing connections and crashing.

Additional components and users are expected in the near future.

Proposed solution

Adding an additional application server to run behind the load balancer

Using a MySQL Database Cluster to run the system database

At a later stage, Optimize the system.

As we see it this will give us both performance, scalability and redundancy

Each of the three copies of the application will have an SQL node to connect to, the SQL node will connect over a 1gb network to 4 data nodes. Data will have two replica.

Each of the 7 machines will be dual core dual Xeon Woodcrest 2.0 machine with 4 GB of ram.

We have heard that a cluster may have bad performance, but we dont think this is the case with us.

Are we on the right track?