Hi Danilo,
You should avoid using Sequoia 3, it is not supported anymore. Use the
latest 2.10 branch code until 2.10.10 is released.
What is the workload generated by JDBCBench?
How many reads? How many writes? How much concurrency (how many clients
in parallel)?
Given the throughput you obtain with a single database (3500/sec), I
guess the queries are extremely simple. The fact that your backends are
not doing much with Sequoia is probably because you have a lot of writes
that need to be serialized and it is expected that writes don't scale
with Sequoia (we have to eliminate the indeterminism of the workload by
total ordering).
The high cpu load on the controller is likely due to a bad group
communication configuration. Other possibilities are a bug or another
misconfiguration (avoid caching if you have a lot of writes).
Also if a single node is not saturated by the workload you won't see any
improvement by adding nodes.
Using dedicated nodes add network latency so that can also have a
significant impact especially if you workload has a limited parallelism.
Don't hesitate to give us more details about your JDBCBench workload.
Thanks for your feedback,
Emmanuel
I am trying a RAIDb-1 Sequoia cluster. My configuration consists of:
- one or two dedicated controllers
- each controller supported by 2 PostgreSQL or MySQL hosts as backends
Each controller was tested with different operating systems:
- Slackware 12.0 (with kernel 2.6.21.5-smp SMP)
- Debian 4 (2.6.18-4-686 SMP)
- Gentoo (2.6.24)
- RedHat Enterprise 4 (2.6.9-5.ELsmp SMP)
- Windows XP Professional SP 2
with different Java VMs:
- J2RE 1.4.2
- JDK 1.5.0_15
- JDK 1.6
and with different hardware:
- 2 [EMAIL PROTECTED], 2Gb Ram
- Pentium 4 [EMAIL PROTECTED], 2 Gb Ram
- Pentium 4 @3GHz, 512 Mb Ram
- Virtual Machine
With all the configurations, using the tool JDBCBench (executed from a
dedicated host), I noticed a big cpu load on the controller and very poor
performance.
For example, with a direct access to a single PostgreSQL node I can reach 3500
transactions/sec, instead of a 800txn/s obtained by a controller with 2
PostgreSQL hosts.
In the latter case, the DB hosts are not overloaded: PostgreSQL (and MySql)
uses about 5% CPU and generate only 150Kbyte/s network traffic.
I tried to use both JGroups and Appia (both SEQ and TOKEN, UDP and TCP) with
the same results (only few differences, but always with high cpu load).
I also tried Sequoia 2.10.9, 3.0-beta2 and 3.0-beta3 (I can't use cvs version
because I get a null pointer exception in Controller.java:185, in function
sendJmxNotification(), with respect to notificationBroadcasterSupport).
I used the last available JDBC drivers for PostgreSQL
(postgresql-8.2-508.jdbc3.jar) and for MySQL
(mysql-connector-java-5.1.5-bin.jar).
I also enabled cache and disabled SQL monitoring, without big improvements.
Also tried different schedulers (RoundRobin and LeastPendingRequestsFirst),
with both WaitForCompletion policy "all" and "first".
>From the published presentations, I can read that the performance with Sequoia
should increase, whereas in my case they decrease (I need about 3
controllers, each one with 2 backends, to reach the same performance of a
single PostgreSQL host). Searching in the mailing list I read some users with
the same problems, but I could not find a solution.
Any help is very appreciated.
Yours faithfully,
Danilo Levantesi
_______________________________________________
Sequoia mailing list
[email protected]
https://forge.continuent.org/mailman/listinfo/sequoia
--
Emmanuel Cecchet - Research scientist
EPFL - LABOS/DSLAB - IN.N 317
Phone: +41-21-693-7558
_______________________________________________
Sequoia mailing list
[email protected]
https://forge.continuent.org/mailman/listinfo/sequoia