cassandra-stress mixed
Interleave basic commands with configurable ratio and distribution. The cluster must first be populated by a write test.
Synopsis
cassandra-stress mixed [<arguments>]
Syntax conventions | Description |
---|---|
UPPERCASE |
Literal keyword. |
Lowercase |
Not literal. |
<`Italics>` |
Variable value. Replace with a valid option or user-defined value. |
|
Optional.
Square brackets ( |
|
Group.
Parentheses ( |
|
Or.
A vertical bar ( |
|
Repeatable.
An ellipsis ( |
|
Single quotation ( |
|
Map collection.
Braces ( |
|
Set, list, map, or tuple.
Angle brackets ( |
|
End CQL statement.
A semicolon ( |
|
Separate the command line options from the command arguments with two hyphens ( |
|
Search CQL only: Single quotation marks ( |
|
Search CQL only: Identify the entity and literal value to overwrite the XML element in the schema and solrconfig files. |
Definition
Command options
- cl=?
-
Set the consistency level to use during
cassandra-stress
. Options are ONE, QUORUM, LOCAL_QUORUM, EACH_QUORUM, ALL, and ANY. Default is LOCAL_ONE. - clustering=DIST(?)
-
Distribution clustering runs of operations of the same kind.
- duration=?
-
Specify the time to run, in seconds, minutes or hours.
- err<?
-
Specify a standard error of the mean; when this value is reached,
cassandra-stress
will end. Default is 0.02. - n>?
-
Specify a minimum number of iterations to run before accepting uncertainly convergence.
- n<?
-
Specify a maximum number of iterations to run before accepting uncertainly convergence.
- n=?
-
Specify the number of operations to run.
- no-warmup
-
Do not warmup the process, do a cold start.
- ops(?)
-
Specify what operations to run and the number of each. (only with the user option)
- profile=?
-
Designate the YAML file to use with
cassandra-stress
. (only with the user option) - truncate=?
-
Truncate the table created during
cassandra-stress
. Options are never, once, or always. Default is never.
Command arguments
- -col
-
Column details, such as size and count distribution, data generator, names, and comparator.
Usage:
-col names=? [slice] [super=?] [comparator=?] [timestamp=?] [size=DIST(?)] or -col [n=DIST(?)] [slice] [super=?] [comparator=?] [timestamp=?] [size=DIST(?)]
- -errors
-
How to handle errors when encountered during stress testing.
Usage:
-errors [retries=N] [ignore] [skip-read-validation]
-
retries=<N>
Number of times to try each operation before failing. -
ignore
Do not fail on errors. -
skip-read-validation
Skip read validation and message output.
-
- -graph
-
Graph results of cassandra-stress tests. Multiple tests can be graphed together.
Usage:
-graph file=? [revision=?] [title=?] [op=?]
- -insert
-
Insert specific options relating to various methods for batching and splitting partition updates.
Usage:
-insert [revisit=DIST(?)] [visits=DIST(?)] partitions=DIST(?) [batchtype=?] select-ratio=DIST(?) row-population-ratio=DIST(?)
- -log
-
Where to log progress and the interval to use.
Usage:
-log [level=?] [no-summary] [file=?] [hdrfile=?] [interval=?] [no-settings] [no-progress] [show-queries] [query-log-file=?]
- -mode
-
Thrift or CQL with options.
Usage:
-mode thrift [smart] [user=?] [password=?] or -mode native [unprepared] cql3 [compression=?] [port=?] [user=?] [password=?] [auth-provider=?] [maxPending=?] [connectionsPerHost=?] [protocolVersion=?] or -mode simplenative [prepared] cql3 [port=?]
- -node
-
Nodes to connect to.
Usage:
-node [datacenter=?] [whitelist] [file=?] []
- -pop
-
Population distribution and intra-partition visit order.
Usage:
-pop seq=? [no-wrap] [read-lookback=DIST(?)] [contents=?] or -pop [dist=DIST(?)] [contents=?]
- -port
-
Specify port for connecting Cassandra nodes. Port can be specified for Cassandra native protocol, Thrift protocol or a JMX port for retrieving statistics.
Usage:
-port [native=?] [thrift=?] [jmx=?]
- -rate
-
Set the rate using the following options:
-rate threads=<N> [throttle=<N>] [fixed=<N>]
where
-
threads=<N>
number of clients to run concurrently. -
throttle=<N>
throttle operations per second across all clients to a maximum rate (or less) with no implied schedule. Default is 0. -
fixed=<N>
expect fixed rate of operations per second across all clients with implied schedule. Default is 0.
-
-
OR
-rate [threads>=<N>] [threads<=<N>] [auto]
Where
-
threads>=<N> run at least this many clients concurrently. Default is 4.
-
threads⇐<N> run at most this many clients concurrently. Default is 1000.
-
auto
stop increasing threads once throughput saturates.
-
- -schema
-
Replication settings, compression, compaction, and so on.
Usage:
-schema [replication(?)] [keyspace=?] [compaction(?)] [compression=?]
- -sendto
-
Specify a server to send the stress command to.
Usage:
-sendto <host>
- -tokenrange
-
Token range settings.
Usage:
-tokenrange [no-wrap] [split-factor=?] [savedata=?]
- -transport
-
Custom transport factories.
Usage:
-transport [factory=?] [truststore=?] [truststore-password=?] [keystore=?] [keystore-password=?] [ssl-protocol=?] [ssl-alg=?] [store-type=?] [ssl-ciphers=?]
Run a mixed workload
When running a mixed workload, you must escape parentheses, greater-than and less-than signs, and other such things. This example invokes a workload that is one-quarter writes and three-quarters reads.
$ cassandra-stress mixed ratio\(write=1,read=3\) n=100000 cl=ONE -pop dist=UNIFORM\(1..1000000\) -schema keyspace="keyspace1" -mode native cql3 -rate threads\>=16 threads\<=256 -log file=~/mixed_autorate_50r50w_1M.log
Notice the following in this example:
-
The
ratio
parameter requires backslash-escaped parenthesis. -
The value of
n
used in the read phase is different from the value used in write phase. During the write phase,n
records are written. However in the read phase, ifn
is too large, it is inconvenient to read all the records for simple testing. Generally,n
does not need be large when validating the persistent storage systems of a cluster.The
-pop dist=UNIFORM\(1..1000000\)
portion says that of the n=100,000 operations, select the keys uniformly distributed between 1 and 1,000,000. Use this when you want to specify more data per node than what fits in DRAM. -
In the
rate
section, the greater-than and less-than signs are escaped. If not escaped, the shell attempts to use them for IO redirection: the shell tries to read from a non-existent file called=256
and create a file called=16
. Therate
section tells cassandra-stress to automatically attempt different numbers of client threads and not test less that 16 or more than 256 client threads.