System Properties
Datomic's Java system properties are all named via the convention datomic.somePropertyName.
Memory settings can be specified in plain bytes, or use k / m / g suffixes for kilobytes / megabytes / gigabytes, e.g. 256m.
Peer properties
Datomic Peer properties should be set using command line arguments, for example:
-Ddatomic.txTimeoutMsec=60000
property | use | units | default |
---|---|---|---|
datomic.memcachedExpirationDays | Please contact support before attempting to use this setting | integer | 30 |
datomic.memcachedPassword | memcached password | string | {none} |
datomic.memcachedServers | memcached server list | host:port(,host:port)* | {none} |
datomic.memcachedUsername | memcached username | string | {none} |
datomic.memcachedAutoDiscovery | auto discovery of memcached nodes | boolean | false |
datomic.memcachedConfigTimeoutMsec | timeout for Elasticache auto-discovery | integer milliseconds | 100 |
datomic.objectCacheMax | size of object cache | bytes | 50% of VM RAM, min 32m |
datomic.readConcurrency | soft limit on concurrent storage reads | integer | 2x write concurrency |
datomic.txTimeoutMsec | timeout for Connection.transact | integer milliseconds | 10000 |
datomic.metricsCallback | callback for reporting peer metrics | string | {none} |
datomic.valcachePath | Valcache SSD directory | string | {none} |
datomic.valcacheMaxGb | maximum GB Valcache will try to use | gigabytes | {none} |
Transactor properties
The equivalent names in the transactor properties file have no namespace, and are hyphen delimited lower case, e.g. some-property-name. The exception to this rule is the transactor property corresponding to `datomic.memcachedServers`, which is called `memcached`.
The transactor
script provided with Datomic expects the properties file to be the last argument.
Please note that JVM args other than `-Xmx` and `-Xms` passed to `bin/transactor` (including Java system properties passed via `-D`) override Datomic's default Java options, including the GC settings.
system property | use | units | default | where to set |
---|---|---|---|---|
datomic.cassandraClusterCallback | name of a callback method/fn returning a Cluster | string | {none} | transactor properties file |
datomic.heartbeatIntervalMsec | interval between heartbeat write to storage | integer milliseconds | 5000, also the minimum | transactor properties file |
datomic.licenseKey | transactor license key | string | {none} | transactor properties file |
datomic.memcachedPassword | memcached password | string | {none} | transactor properties file |
datomic.memcachedServers | memcached server list | host:port (,host:port)* | {none} | transactor properties file |
datomic.memcachedUsername | memcached username | string | {none} | transactor properties file |
datomic.memcachedAutoDiscovery | auto discovery of memcached nodes | boolean | false | command line arg or transactor properties file |
datomic.memcachedConfigTimeoutMsec | timeout for Elasticache auto-discovery | integer milliseconds | 100 | command line arg or transactor properties file |
datomic.memoryIndexThreshold | size that kicks off indexing job | bytes | {see recommendations} | transactor properties file |
datomic.memoryIndexMax | transactions throttle to let index job catch up | bytes | {see recommendations} | transactor properties file |
datomic.gcStoragePaceMsec | paces gc-storage delete operations | integer (msec) | 0 | command line arg |
datomic.metricsCallback | the name of a static Java method or Clojure fn | string | RAM | transactor properties file |
datomic.objectCacheMax | size of object cache | bytes | 50% of VM RAM, min 32mb | transactor properties file |
datomic.pidFile | write pid to this file on startup | filename | {none} | transactor properties file |
datomic.printConnectionInfo | print connection info at startup | boolean | false | command line arg |
datomic.sqlUser | username for SQL storage | string | {none} | command line arg or transactor properties file |
datomic.sqlPassword | password for SQL storage | string | {none} | command line arg or transactor properties file |
datomic.sqlValidationQuery | query used to validate JDBC connections | string | {see storage docs} | transactor properties file |
datomic.readConcurrency | soft limit on concurrent storage reads | integer | 2x write concurrency | transactor properties file |
datomic.writeConcurrency | soft limit on concurrent storage writes | integer | 4 | transactor properties file |
Backup properties
property | use | units | default |
---|---|---|---|
datomic.backupPaceMsec | interval to pause between backup writes | integer milliseconds | {none} |
datomic.fileBackupConcurrency | number of threads used for file backup/restore | integer | 5 |
datomic.s3BackupConcurrency | number of threads used for s3 backup/restore | integer | 25 |
backupPaceMsec
can reduce I/O pressure by slowing the pace of backups.
datomic.fileBackupConcurrency
affects the number of concurrent read/writes
on local storage. datomic.s3BackupConcurrency
affects the number of concurrent
read/writes when backing up to S3.
Properties Changes
- In 0.8.3814, datomic.objectCacheBytes was deprecated, and renamed to datomic.objectCacheMax.
- In 0.8.4110, the defaults for datomic.objectCacheMax, datomic.memoryIndexThreshold, and datomic.memoryIndexMax were removed on the transactor, so that the transactor properties file must now specify values for these properties. Peer defaults remain as described above.
- datomic.licenseKey is valid only for Datomic 1.0.6711 version or older.