Hi,

> trying to narrow down the causes we ran JDBCBench
> (http://developer.mimer.com/features/JDBCprogs/JDBCBench.java) against
> our sequoia db.

This benchmark does mostly sequential writes to the same table so there is
basically no parallelism that you can get from such workload. Writes are
very simple, so they are fast on the database and they all have to be
serialized (which is about the worst case you can get). You obtain about
500 tx/s without Sequoia which means that each tx is about 2ms.
The latency seems to increase to 10ms with Sequoia (8ms overhead) which is
possible depending on your configuration (using a dedicated machine,
colocating controller with App Server or database...). I can't really
explain the recovery log overhead on the controller since the recovery log
is fully asynchronous. The only reason I see is that you are using
Postgres for both data and recovery log and that is going to affect both
the performance of the queries and the recovery log. I would recommend
using a separate database for the recovery log.
Finally the distribution overhead greatly depends on your group
communication settings (that you did not provide). This group
communication overhead occurs for every write query sent to Sequoia.

Hope this will help you understand the results you get,
Emmanuel
PS: I'm currently traveling and can't access the web very often, so you
have to expect some delays in my responses!

>
> these are our results so far:
>
> 1) postgresql without sequoia:
>
> ~500 tx/s
>
> 2) sequoia without Recovery Log, with Distribution
>
> ~100 tx/s
>
> 3) sequoia without distribution, with recovery log
>
> ~40 tx/s
>
> 4) sequoia with recovery log, with distribution
>
> ~5 tx/s
>
> this was one controller with one postgresql node.
> we plan to use two controllers each with one postgresql node.
> as our database setup needs to be fault tolerant we planned to use setup
> 4. however the current performance results would rule out sequoia.
>
> i've attached our current configuration. i'd appreciate any comments on
> how to increase the performance.
>
> Environment:
>       sequoia v. 2.10.10
>       java: jdk 1.5.0_15 (additional options: -Xmx512m -server)
>       OS: linux
>       DB: postgresql 8.2.6
>
> controller.xml:
>
> <?xml version="1.0" encoding="UTF-8" ?>
>
> <!DOCTYPE SEQUOIA-CONTROLLER PUBLIC "-//Continuent//DTD
> SEQUOIA-CONTROLLER 2.10.10//EN"
> "http://sequoia.continuent.org/dtds/sequoia-controller-2.10.10.dtd";>
>
> <SEQUOIA-CONTROLLER>
>    <Controller port="25322" ipAddress="a.b.c.d.">
>      <Report hideSensitiveData="true" generateOnShutdown="true"
>               generateOnFatal="true" enableFileLogging="true" />
>
>      <JmxSettings>
>        <RmiJmxAdaptor username="username" password="password"
> port="50090" serverPort="50200"/>
>      </JmxSettings>
>
>      <VirtualDatabase configFile="mps-postgres-1.xml"
>                                  virtualDatabaseName="mpsPostgres" 
> autoEnableBackends="true" />
>
>    </Controller>
> </SEQUOIA-CONTROLLER>
>
> mps-postgres-1.xml:
>
> <?xml version="1.0" encoding="UTF-8"?>
> <!DOCTYPE SEQUOIA PUBLIC "-//Continuent//DTD SEQUOIA 2.10.10//EN"
> "http://sequoia.continuent.org/dtds/sequoia-2.10.10.dtd";>
>
> <SEQUOIA>
>
>    <VirtualDatabase name="mpsPostgres">
>
>      <Distribution groupName="mpsGroup">
>        <MessageTimeouts />
>      </Distribution>
>      <!--
>        <Monitoring>
>        <SQLMonitoring defaultMonitoring="off">
>        <SQLMonitoringRule queryPattern="^select"
>        caseSensitive="false" applyToSkeleton="false" monitoring="on" />
>        </SQLMonitoring>
>        </Monitoring>
>      -->
>      <Backup>
>        <Backuper backuperName="Octopus"
>
> className="org.continuent.sequoia.controller.backup.backupers.PostgreSQLBinaryBackuper"
>          options="authentication=true" />
>      </Backup>
>
>      <AuthenticationManager>
>        <Admin>
>          <User username="admin" password="password" />
>        </Admin>
>
>        <VirtualUsers>
>          <VirtualLogin vLogin="mps" vPassword="password" />
>        </VirtualUsers>
>      </AuthenticationManager>
>
>      <DatabaseBackend name="node1" driver="org.postgresql.Driver"
>        url="jdbc:postgresql://a.b.c.d:5432/mps"
>        connectionTestStatement="select now()">
>
>        <DatabaseSchema dynamicPrecision="table"
>          gatherSystemTables="true">
>          <DefaultStoredProcedureSemantic hasSelect="true"
>            hasInsert="true" hasUpdate="true" hasDelete="true"
>            hasDDL="false" hasTransaction="false"
>            isCausallyDependent="true" isCommutative="false" />
>        </DatabaseSchema>
>        <ConnectionManager vLogin="mps" >
>          <VariablePoolConnectionManager initPoolSize="10" minPoolSize="5"
>            maxPoolSize="100" idleTimeout="30" waitTimeout="10" />
>        </ConnectionManager>
>      </DatabaseBackend>
>
>      <RequestManager>
>        <RequestScheduler>
>          <RAIDb-1Scheduler level="passThrough" />
>        </RequestScheduler>
>
>        <RequestCache>
>          <MetadataCache />
>          <ParsingCache />
>          <!--       <ResultCache granularity="table"/> -->
>        </RequestCache>
>
>        <LoadBalancer>
>          <RAIDb-1>
>            <WaitForCompletion policy="first" />
>            <RAIDb-1-LeastPendingRequestsFirst />
>          </RAIDb-1>
>        </LoadBalancer>
>
>        <RecoveryLog driver="org.postgresql.Driver"
>          url="jdbc:postgresql://a.b.c.d:5432/cluster"
>          login="cluster" password="password" idleConnectionTimeout="60">
>          <RecoveryLogTable tableName="recovery"
>            logIdColumnType="BIGINT NOT NULL"
>            vloginColumnType="VARCHAR NOT NULL"
>            sqlColumnType="VARCHAR NOT NULL"
>            extraStatementDefinition=",PRIMARY KEY (log_id)" />
>          <CheckpointTable tableName="checkpoint"
>            checkpointNameColumnType="VARCHAR NOT NULL" />
>          <BackendTable tableName="backend"
>            databaseNameColumnType="VARCHAR NOT NULL"
>            backendNameColumnType="VARCHAR NOT NULL"
>            checkpointNameColumnType="VARCHAR NOT NULL" />
>          <DumpTable tableName="dump"
>            dumpNameColumnType="VARCHAR NOT NULL"
>            dumpDateColumnType="TIMESTAMP"
>            dumpPathColumnType="VARCHAR NOT NULL"
>            dumpFormatColumnType="VARCHAR NOT NULL"
>            checkpointNameColumnType="VARCHAR NOT NULL"
>            backendNameColumnType="VARCHAR NOT NULL"
>            tablesColumnType="VARCHAR NOT NULL" />
>        </RecoveryLog>
>
>      </RequestManager>
>
>    </VirtualDatabase>
>
> </SEQUOIA>
>
> _______________________________________________
> Sequoia mailing list
> [email protected]
> https://forge.continuent.org/mailman/listinfo/sequoia
>


_______________________________________________
Sequoia mailing list
[email protected]
https://forge.continuent.org/mailman/listinfo/sequoia

Reply via email to