· 7 years ago · Jan 23, 2019, 03:20 AM
1# Scylla storage config YAML
2
3#######################################
4# This file is split to two sections:
5# 1. Supported parameters
6# 2. Unsupported parameters: reserved for future use or backwards
7# compatibility.
8# Scylla will only read and use the first segment
9#######################################
10
11### Supported Parameters
12
13# The name of the cluster. This is mainly used to prevent machines in
14# one logical cluster from joining another.
15# It is recommended to change the default value when creating a new cluster.
16# You can NOT modify this value for an existing cluster
17cluster_name: 'udb'
18
19# This defines the number of tokens randomly assigned to this node on the ring
20# The more tokens, relative to other nodes, the larger the proportion of data
21# that this node will store. You probably want all nodes to have the same number
22# of tokens assuming they have equal hardware capability.
23#
24# If you already have a cluster with 1 token per node, and wish to migrate to
25# multiple tokens per node, see http://cassandra.apache.org/doc/latest/operating
26num_tokens: 256
27
28# Directory where Scylla should store data on disk.
29# If not set, the default directory is /var/lib/scylla/data.
30data_file_directories:
31 - /var/lib/scylla/data
32
33# commit log. when running on magnetic HDD, this should be a
34# separate spindle than the data directories.
35# If not set, the default directory is /var/lib/scylla/commitlog.
36commitlog_directory: /var/lib/scylla/commitlog
37
38# commitlog_sync may be either "periodic" or "batch."
39#
40# When in batch mode, Scylla won't ack writes until the commit log
41# has been fsynced to disk. It will wait
42# commitlog_sync_batch_window_in_ms milliseconds between fsyncs.
43# This window should be kept short because the writer threads will
44# be unable to do extra work while waiting. (You may need to increase
45# concurrent_writes for the same reason.)
46#
47# commitlog_sync: batch
48# commitlog_sync_batch_window_in_ms: 2
49#
50# the other option is "periodic" where writes may be acked immediately
51# and the CommitLog is simply synced every commitlog_sync_period_in_ms
52# milliseconds.
53commitlog_sync: periodic
54commitlog_sync_period_in_ms: 10000
55
56# The size of the individual commitlog file segments. A commitlog
57# segment may be archived, deleted, or recycled once all the data
58# in it (potentially from each columnfamily in the system) has been
59# flushed to sstables.
60#
61# The default size is 32, which is almost always fine, but if you are
62# archiving commitlog segments (see commitlog_archiving.properties),
63# then you probably want a finer granularity of archiving; 8 or 16 MB
64# is reasonable.
65commitlog_segment_size_in_mb: 32
66
67# seed_provider class_name is saved for future use.
68# seeds address(es) are mandatory!
69seed_provider:
70 # Addresses of hosts that are deemed contact points.
71 # Scylla nodes use this list of hosts to find each other and learn
72 # the topology of the ring. You must change this if you are running
73 # multiple nodes!
74 - class_name: org.apache.cassandra.locator.SimpleSeedProvider
75 parameters:
76 # seeds is actually a comma-delimited list of addresses.
77 # Ex: "<ip1>,<ip2>,<ip3>"
78 - seeds: "35.176.156.51,18.130.27.177,34.205.88.191,34.201.255.84,13.229.6.48,3.0.164.149"
79
80# Address or interface to bind to and tell other Scylla nodes to connect to.
81# You _must_ change this if you want multiple nodes to be able to communicate!
82#
83# Setting listen_address to 0.0.0.0 is always wrong.
84#listen_address: "172.26.13.112"
85listen_address: "172.26.13.112"
86
87# Address to broadcast to other Scylla nodes
88# Leaving this blank will set it to the same value as listen_address
89broadcast_address: "13.229.6.48"
90
91
92# When using multiple physical network interfaces, set this to true to listen on broadcast_address
93# in addition to the listen_address, allowing nodes to communicate in both interfaces.
94# Ignore this property if the network configuration automatically routes between the public and private networks such as EC2.
95#
96listen_on_broadcast_address: true
97
98# port for the CQL native transport to listen for clients on
99# For security reasons, you should not expose this port to the internet. Firewall it if needed.
100native_transport_port: 9042
101
102# Enabling native transport encryption in client_encryption_options allows you to either use
103# encryption for the standard port or to use a dedicated, additional port along with the unencrypted
104# standard native_transport_port.
105# Enabling client encryption and keeping native_transport_port_ssl disabled will use encryption
106# for native_transport_port. Setting native_transport_port_ssl to a different value
107# from native_transport_port will use encryption for native_transport_port_ssl while
108# keeping native_transport_port unencrypted.
109#native_transport_port_ssl: 9142
110
111# How long the coordinator should wait for read operations to complete
112read_request_timeout_in_ms: 5000
113
114# How long the coordinator should wait for writes to complete
115write_request_timeout_in_ms: 2000
116
117# phi value that must be reached for a host to be marked down.
118# most users should never need to adjust this.
119# phi_convict_threshold: 8
120
121# IEndpointSnitch. The snitch has two functions:
122# - it teaches Scylla enough about your network topology to route
123# requests efficiently
124# - it allows Scylla to spread replicas around your cluster to avoid
125# correlated failures. It does this by grouping machines into
126# "datacenters" and "racks." Scylla will do its best not to have
127# more than one replica on the same "rack" (which may not actually
128# be a physical location)
129#
130# IF YOU CHANGE THE SNITCH AFTER DATA IS INSERTED INTO THE CLUSTER,
131# YOU MUST RUN A FULL REPAIR, SINCE THE SNITCH AFFECTS WHERE REPLICAS
132# ARE PLACED.
133#
134# Out of the box, Scylla provides
135# - SimpleSnitch:
136# Treats Strategy order as proximity. This can improve cache
137# locality when disabling read repair. Only appropriate for
138# single-datacenter deployments.
139# - GossipingPropertyFileSnitch
140# This should be your go-to snitch for production use. The rack
141# and datacenter for the local node are defined in
142# cassandra-rackdc.properties and propagated to other nodes via
143# gossip. If cassandra-topology.properties exists, it is used as a
144# fallback, allowing migration from the PropertyFileSnitch.
145# - PropertyFileSnitch:
146# Proximity is determined by rack and data center, which are
147# explicitly configured in cassandra-topology.properties.
148# - Ec2Snitch:
149# Appropriate for EC2 deployments in a single Region. Loads Region
150# and Availability Zone information from the EC2 API. The Region is
151# treated as the datacenter, and the Availability Zone as the rack.
152# Only private IPs are used, so this will not work across multiple
153# Regions.
154# - Ec2MultiRegionSnitch:
155# Uses public IPs as broadcast_address to allow cross-region
156# connectivity. (Thus, you should set seed addresses to the public
157# IP as well.) You will need to open the storage_port or
158# ssl_storage_port on the public IP firewall. (For intra-Region
159# traffic, Scylla will switch to the private IP after
160# establishing a connection.)
161# - RackInferringSnitch:
162# Proximity is determined by rack and data center, which are
163# assumed to correspond to the 3rd and 2nd octet of each node's IP
164# address, respectively. Unless this happens to match your
165# deployment conventions, this is best used as an example of
166# writing a custom Snitch class and is provided in that spirit.
167#
168# You can use a custom Snitch by setting this to the full class name
169# of the snitch, which will be assumed to be on your classpath.
170#endpoint_snitch: SimpleSnitch
171endpoint_snitch: GossipingPropertyFileSnitch
172
173# The address or interface to bind the Thrift RPC service and native transport
174# server to.
175#
176# Set rpc_address OR rpc_interface, not both. Interfaces must correspond
177# to a single address, IP aliasing is not supported.
178#
179# Leaving rpc_address blank has the same effect as on listen_address
180# (i.e. it will be based on the configured hostname of the node).
181#
182# Note that unlike listen_address, you can specify 0.0.0.0, but you must also
183# set broadcast_rpc_address to a value other than 0.0.0.0.
184#
185# For security reasons, you should not expose this port to the internet. Firewall it if needed.
186#
187# If you choose to specify the interface by name and the interface has an ipv4 and an ipv6 address
188# you can specify which should be chosen using rpc_interface_prefer_ipv6. If false the first ipv4
189# address will be used. If true the first ipv6 address will be used. Defaults to false preferring
190# ipv4. If there is only one address it will be selected regardless of ipv4/ipv6.
191rpc_address: "172.26.13.112"
192# rpc_interface: eth1
193# rpc_interface_prefer_ipv6: false
194
195# port for Thrift to listen for clients on
196rpc_port: 9160
197
198# port for REST API server
199api_port: 10000
200
201# IP for the REST API server
202api_address: 127.0.0.1
203
204# Log WARN on any batch size exceeding this value. 5kb per batch by default.
205# Caution should be taken on increasing the size of this threshold as it can lead to node instability.
206batch_size_warn_threshold_in_kb: 5
207
208# Fail any multiple-partition batch exceeding this value. 50kb (10x warn threshold) by default.
209batch_size_fail_threshold_in_kb: 50
210
211# Authentication backend, identifying users
212# Out of the box, Scylla provides org.apache.cassandra.auth.{AllowAllAuthenticator,
213# PasswordAuthenticator}.
214#
215# - AllowAllAuthenticator performs no checks - set it to disable authentication.
216# - PasswordAuthenticator relies on username/password pairs to authenticate
217# users. It keeps usernames and hashed passwords in system_auth.credentials table.
218# Please increase system_auth keyspace replication factor if you use this authenticator.
219# authenticator: AllowAllAuthenticator
220
221# Authorization backend, implementing IAuthorizer; used to limit access/provide permissions
222# Out of the box, Scylla provides org.apache.cassandra.auth.{AllowAllAuthorizer,
223# CassandraAuthorizer}.
224#
225# - AllowAllAuthorizer allows any action to any user - set it to disable authorization.
226# - CassandraAuthorizer stores permissions in system_auth.permissions table. Please
227# increase system_auth keyspace replication factor if you use this authorizer.
228# authorizer: AllowAllAuthorizer
229
230# initial_token allows you to specify tokens manually. While you can use # it with
231# vnodes (num_tokens > 1, above) -- in which case you should provide a
232# comma-separated list -- it's primarily used when adding nodes # to legacy clusters
233# that do not have vnodes enabled.
234# initial_token:
235
236# RPC address to broadcast to drivers and other Scylla nodes. This cannot
237# be set to 0.0.0.0. If left blank, this will be set to the value of
238# rpc_address. If rpc_address is set to 0.0.0.0, broadcast_rpc_address must
239# be set.
240broadcast_rpc_address: "13.229.6.48"
241
242# Uncomment to enable experimental features
243# experimental: true
244
245# The directory where hints files are stored if hinted handoff is enabled.
246# hints_directory: /var/lib/scylla/hints
247
248# The directory where hints files are stored for materialized-view updates
249# view_hints_directory: /var/lib/scylla/view_hints
250
251# See https://docs.scylladb.com/architecture/anti-entropy/hinted-handoff
252# May either be "true" or "false" to enable globally, or contain a list
253# of data centers to enable per-datacenter.
254# hinted_handoff_enabled: DC1,DC2
255# hinted_handoff_enabled: true
256
257# this defines the maximum amount of time a dead host will have hints
258# generated. After it has been dead this long, new hints for it will not be
259# created until it has been seen alive and gone down again.
260# max_hint_window_in_ms: 10800000 # 3 hours
261
262# Maximum throttle in KBs per second, per delivery thread. This will be
263# reduced proportionally to the number of nodes in the cluster. (If there
264# are two nodes in the cluster, each delivery thread will use the maximum
265# rate; if there are three, each will throttle to half of the maximum,
266# since we expect two nodes to be delivering hints simultaneously.)
267# hinted_handoff_throttle_in_kb: 1024
268# Number of threads with which to deliver hints;
269# Consider increasing this number when you have multi-dc deployments, since
270# cross-dc handoff tends to be slower
271# max_hints_delivery_threads: 2
272
273###################################################
274## Not currently supported, reserved for future use
275###################################################
276
277# Maximum throttle in KBs per second, total. This will be
278# reduced proportionally to the number of nodes in the cluster.
279# batchlog_replay_throttle_in_kb: 1024
280
281# Validity period for permissions cache (fetching permissions can be an
282# expensive operation depending on the authorizer, CassandraAuthorizer is
283# one example). Defaults to 10000, set to 0 to disable.
284# Will be disabled automatically for AllowAllAuthorizer.
285# permissions_validity_in_ms: 10000
286
287# Refresh interval for permissions cache (if enabled).
288# After this interval, cache entries become eligible for refresh. Upon next
289# access, an async reload is scheduled and the old value returned until it
290# completes. If permissions_validity_in_ms is non-zero, then this also must have
291# a non-zero value. Defaults to 2000. It's recommended to set this value to
292# be at least 3 times smaller than the permissions_validity_in_ms.
293# permissions_update_interval_in_ms: 2000
294
295# The partitioner is responsible for distributing groups of rows (by
296# partition key) across nodes in the cluster. You should leave this
297# alone for new clusters. The partitioner can NOT be changed without
298# reloading all data, so when upgrading you should set this to the
299# same partitioner you were already using.
300#
301# Besides Murmur3Partitioner, partitioners included for backwards
302# compatibility include RandomPartitioner, ByteOrderedPartitioner, and
303# OrderPreservingPartitioner.
304#
305partitioner: org.apache.cassandra.dht.Murmur3Partitioner
306
307# Maximum size of the key cache in memory.
308#
309# Each key cache hit saves 1 seek and each row cache hit saves 2 seeks at the
310# minimum, sometimes more. The key cache is fairly tiny for the amount of
311# time it saves, so it's worthwhile to use it at large numbers.
312# The row cache saves even more time, but must contain the entire row,
313# so it is extremely space-intensive. It's best to only use the
314# row cache if you have hot rows or static rows.
315#
316# NOTE: if you reduce the size, you may not get you hottest keys loaded on startup.
317#
318# Default value is empty to make it "auto" (min(5% of Heap (in MB), 100MB)). Set to 0 to disable key cache.
319# key_cache_size_in_mb:
320
321# Duration in seconds after which Scylla should
322# save the key cache. Caches are saved to saved_caches_directory as
323# specified in this configuration file.
324#
325# Saved caches greatly improve cold-start speeds, and is relatively cheap in
326# terms of I/O for the key cache. Row cache saving is much more expensive and
327# has limited use.
328#
329# Default is 14400 or 4 hours.
330# key_cache_save_period: 14400
331
332# Number of keys from the key cache to save
333# Disabled by default, meaning all keys are going to be saved
334# key_cache_keys_to_save: 100
335
336# Maximum size of the row cache in memory.
337# NOTE: if you reduce the size, you may not get you hottest keys loaded on startup.
338#
339# Default value is 0, to disable row caching.
340# row_cache_size_in_mb: 0
341
342# Duration in seconds after which Scylla should
343# save the row cache. Caches are saved to saved_caches_directory as specified
344# in this configuration file.
345#
346# Saved caches greatly improve cold-start speeds, and is relatively cheap in
347# terms of I/O for the key cache. Row cache saving is much more expensive and
348# has limited use.
349#
350# Default is 0 to disable saving the row cache.
351# row_cache_save_period: 0
352
353# Number of keys from the row cache to save
354# Disabled by default, meaning all keys are going to be saved
355# row_cache_keys_to_save: 100
356
357# Maximum size of the counter cache in memory.
358#
359# Counter cache helps to reduce counter locks' contention for hot counter cells.
360# In case of RF = 1 a counter cache hit will cause Scylla to skip the read before
361# write entirely. With RF > 1 a counter cache hit will still help to reduce the duration
362# of the lock hold, helping with hot counter cell updates, but will not allow skipping
363# the read entirely. Only the local (clock, count) tuple of a counter cell is kept
364# in memory, not the whole counter, so it's relatively cheap.
365#
366# NOTE: if you reduce the size, you may not get you hottest keys loaded on startup.
367#
368# Default value is empty to make it "auto" (min(2.5% of Heap (in MB), 50MB)). Set to 0 to disable counter cache.
369# NOTE: if you perform counter deletes and rely on low gcgs, you should disable the counter cache.
370# counter_cache_size_in_mb:
371
372# Duration in seconds after which Scylla should
373# save the counter cache (keys only). Caches are saved to saved_caches_directory as
374# specified in this configuration file.
375#
376# Default is 7200 or 2 hours.
377# counter_cache_save_period: 7200
378
379# Number of keys from the counter cache to save
380# Disabled by default, meaning all keys are going to be saved
381# counter_cache_keys_to_save: 100
382
383# The off-heap memory allocator. Affects storage engine metadata as
384# well as caches. Experiments show that JEMAlloc saves some memory
385# than the native GCC allocator (i.e., JEMalloc is more
386# fragmentation-resistant).
387#
388# Supported values are: NativeAllocator, JEMallocAllocator
389#
390# If you intend to use JEMallocAllocator you have to install JEMalloc as library and
391# modify cassandra-env.sh as directed in the file.
392#
393# Defaults to NativeAllocator
394# memory_allocator: NativeAllocator
395
396# saved caches
397# If not set, the default directory is /var/lib/scylla/saved_caches.
398# saved_caches_directory: /var/lib/scylla/saved_caches
399
400
401
402# For workloads with more data than can fit in memory, Scylla's
403# bottleneck will be reads that need to fetch data from
404# disk. "concurrent_reads" should be set to (16 * number_of_drives) in
405# order to allow the operations to enqueue low enough in the stack
406# that the OS and drives can reorder them. Same applies to
407# "concurrent_counter_writes", since counter writes read the current
408# values before incrementing and writing them back.
409#
410# On the other hand, since writes are almost never IO bound, the ideal
411# number of "concurrent_writes" is dependent on the number of cores in
412# your system; (8 * number_of_cores) is a good rule of thumb.
413# concurrent_reads: 32
414# concurrent_writes: 32
415# concurrent_counter_writes: 32
416
417# Total memory to use for sstable-reading buffers. Defaults to
418# the smaller of 1/4 of heap or 512MB.
419# file_cache_size_in_mb: 512
420
421# Total space to use for commitlogs.
422#
423# If space gets above this value (it will round up to the next nearest
424# segment multiple), Scylla will flush every dirty CF in the oldest
425# segment and remove it. So a small total commitlog space will tend
426# to cause more flush activity on less-active columnfamilies.
427#
428# A value of -1 (default) will automatically equate it to the total amount of memory
429# available for Scylla.
430commitlog_total_space_in_mb: -1
431
432# A fixed memory pool size in MB for for SSTable index summaries. If left
433# empty, this will default to 5% of the heap size. If the memory usage of
434# all index summaries exceeds this limit, SSTables with low read rates will
435# shrink their index summaries in order to meet this limit. However, this
436# is a best-effort process. In extreme conditions Scylla may need to use
437# more than this amount of memory.
438# index_summary_capacity_in_mb:
439
440# How frequently index summaries should be resampled. This is done
441# periodically to redistribute memory from the fixed-size pool to sstables
442# proportional their recent read rates. Setting to -1 will disable this
443# process, leaving existing index summaries at their current sampling level.
444# index_summary_resize_interval_in_minutes: 60
445
446# Whether to, when doing sequential writing, fsync() at intervals in
447# order to force the operating system to flush the dirty
448# buffers. Enable this to avoid sudden dirty buffer flushing from
449# impacting read latencies. Almost always a good idea on SSDs; not
450# necessarily on platters.
451# trickle_fsync: false
452# trickle_fsync_interval_in_kb: 10240
453
454# TCP port, for commands and data
455# For security reasons, you should not expose this port to the internet. Firewall it if needed.
456# storage_port: 7000
457
458# SSL port, for encrypted communication. Unused unless enabled in
459# encryption_options
460# For security reasons, you should not expose this port to the internet. Firewall it if needed.
461# ssl_storage_port: 7001
462
463# listen_interface: eth0
464# listen_interface_prefer_ipv6: false
465
466# Internode authentication backend, implementing IInternodeAuthenticator;
467# used to allow/disallow connections from peer nodes.
468# internode_authenticator: org.apache.cassandra.auth.AllowAllInternodeAuthenticator
469
470# Whether to start the native transport server.
471# Please note that the address on which the native transport is bound is the
472# same as the rpc_address. The port however is different and specified below.
473# start_native_transport: true
474
475# The maximum threads for handling requests when the native transport is used.
476# This is similar to rpc_max_threads though the default differs slightly (and
477# there is no native_transport_min_threads, idle threads will always be stopped
478# after 30 seconds).
479# native_transport_max_threads: 128
480#
481# The maximum size of allowed frame. Frame (requests) larger than this will
482# be rejected as invalid. The default is 256MB.
483# native_transport_max_frame_size_in_mb: 256
484
485# The maximum number of concurrent client connections.
486# The default is -1, which means unlimited.
487# native_transport_max_concurrent_connections: -1
488
489# The maximum number of concurrent client connections per source ip.
490# The default is -1, which means unlimited.
491# native_transport_max_concurrent_connections_per_ip: -1
492
493# Whether to start the thrift rpc server.
494# start_rpc: true
495
496# enable or disable keepalive on rpc/native connections
497# rpc_keepalive: true
498
499# Scylla provides two out-of-the-box options for the RPC Server:
500#
501# sync -> One thread per thrift connection. For a very large number of clients, memory
502# will be your limiting factor. On a 64 bit JVM, 180KB is the minimum stack size
503# per thread, and that will correspond to your use of virtual memory (but physical memory
504# may be limited depending on use of stack space).
505#
506# hsha -> Stands for "half synchronous, half asynchronous." All thrift clients are handled
507# asynchronously using a small number of threads that does not vary with the amount
508# of thrift clients (and thus scales well to many clients). The rpc requests are still
509# synchronous (one thread per active request). If hsha is selected then it is essential
510# that rpc_max_threads is changed from the default value of unlimited.
511#
512# The default is sync because on Windows hsha is about 30% slower. On Linux,
513# sync/hsha performance is about the same, with hsha of course using less memory.
514#
515# Alternatively, can provide your own RPC server by providing the fully-qualified class name
516# of an o.a.c.t.TServerFactory that can create an instance of it.
517# rpc_server_type: sync
518
519# Uncomment rpc_min|max_thread to set request pool size limits.
520#
521# Regardless of your choice of RPC server (see above), the number of maximum requests in the
522# RPC thread pool dictates how many concurrent requests are possible (but if you are using the sync
523# RPC server, it also dictates the number of clients that can be connected at all).
524#
525# The default is unlimited and thus provides no protection against clients overwhelming the server. You are
526# encouraged to set a maximum that makes sense for you in production, but do keep in mind that
527# rpc_max_threads represents the maximum number of client requests this server may execute concurrently.
528#
529# rpc_min_threads: 16
530# rpc_max_threads: 2048
531
532# uncomment to set socket buffer sizes on rpc connections
533# rpc_send_buff_size_in_bytes:
534# rpc_recv_buff_size_in_bytes:
535
536# Uncomment to set socket buffer size for internode communication
537# Note that when setting this, the buffer size is limited by net.core.wmem_max
538# and when not setting it it is defined by net.ipv4.tcp_wmem
539# See:
540# /proc/sys/net/core/wmem_max
541# /proc/sys/net/core/rmem_max
542# /proc/sys/net/ipv4/tcp_wmem
543# /proc/sys/net/ipv4/tcp_rmem
544# and: man tcp
545# internode_send_buff_size_in_bytes:
546# internode_recv_buff_size_in_bytes:
547
548# Frame size for thrift (maximum message length).
549# thrift_framed_transport_size_in_mb: 15
550
551# Set to true to have Scylla create a hard link to each sstable
552# flushed or streamed locally in a backups/ subdirectory of the
553# keyspace data. Removing these links is the operator's
554# responsibility.
555# incremental_backups: false
556
557# Whether or not to take a snapshot before each compaction. Be
558# careful using this option, since Scylla won't clean up the
559# snapshots for you. Mostly useful if you're paranoid when there
560# is a data format change.
561# snapshot_before_compaction: false
562
563# Whether or not a snapshot is taken of the data before keyspace truncation
564# or dropping of column families. The STRONGLY advised default of true
565# should be used to provide data safety. If you set this flag to false, you will
566# lose data on truncation or drop.
567# auto_snapshot: true
568
569# When executing a scan, within or across a partition, we need to keep the
570# tombstones seen in memory so we can return them to the coordinator, which
571# will use them to make sure other replicas also know about the deleted rows.
572# With workloads that generate a lot of tombstones, this can cause performance
573# problems and even exaust the server heap.
574# (http://www.datastax.com/dev/blog/cassandra-anti-patterns-queues-and-queue-like-datasets)
575# Adjust the thresholds here if you understand the dangers and want to
576# scan more tombstones anyway. These thresholds may also be adjusted at runtime
577# using the StorageService mbean.
578# tombstone_warn_threshold: 1000
579# tombstone_failure_threshold: 100000
580
581# Granularity of the collation index of rows within a partition.
582# Increase if your rows are large, or if you have a very large
583# number of rows per partition. The competing goals are these:
584# 1) a smaller granularity means more index entries are generated
585# and looking up rows withing the partition by collation column
586# is faster
587# 2) but, Scylla will keep the collation index in memory for hot
588# rows (as part of the key cache), so a larger granularity means
589# you can cache more hot rows
590# column_index_size_in_kb: 64
591
592
593# Number of simultaneous compactions to allow, NOT including
594# validation "compactions" for anti-entropy repair. Simultaneous
595# compactions can help preserve read performance in a mixed read/write
596# workload, by mitigating the tendency of small sstables to accumulate
597# during a single long running compactions. The default is usually
598# fine and if you experience problems with compaction running too
599# slowly or too fast, you should look at
600# compaction_throughput_mb_per_sec first.
601#
602# concurrent_compactors defaults to the smaller of (number of disks,
603# number of cores), with a minimum of 2 and a maximum of 8.
604#
605# If your data directories are backed by SSD, you should increase this
606# to the number of cores.
607#concurrent_compactors: 1
608
609# Throttles compaction to the given total throughput across the entire
610# system. The faster you insert data, the faster you need to compact in
611# order to keep the sstable count down, but in general, setting this to
612# 16 to 32 times the rate you are inserting data is more than sufficient.
613# Setting this to 0 disables throttling. Note that this account for all types
614# of compaction, including validation compaction.
615# compaction_throughput_mb_per_sec: 16
616
617# Log a warning when compacting partitions larger than this value
618# compaction_large_partition_warning_threshold_mb: 100
619
620# When compacting, the replacement sstable(s) can be opened before they
621# are completely written, and used in place of the prior sstables for
622# any range that has been written. This helps to smoothly transfer reads
623# between the sstables, reducing page cache churn and keeping hot rows hot
624# sstable_preemptive_open_interval_in_mb: 50
625
626# Throttles all streaming file transfer between the datacenters,
627# this setting allows users to throttle inter dc stream throughput in addition
628# to throttling all network stream traffic as configured with
629# stream_throughput_outbound_megabits_per_sec
630# inter_dc_stream_throughput_outbound_megabits_per_sec:
631
632# How long the coordinator should wait for seq or index scans to complete
633# range_request_timeout_in_ms: 10000
634# How long the coordinator should wait for writes to complete
635# counter_write_request_timeout_in_ms: 5000
636# How long a coordinator should continue to retry a CAS operation
637# that contends with other proposals for the same row
638# cas_contention_timeout_in_ms: 1000
639# How long the coordinator should wait for truncates to complete
640# (This can be much longer, because unless auto_snapshot is disabled
641# we need to flush first so we can snapshot before removing the data.)
642# truncate_request_timeout_in_ms: 60000
643# The default timeout for other, miscellaneous operations
644# request_timeout_in_ms: 10000
645
646# Enable operation timeout information exchange between nodes to accurately
647# measure request timeouts. If disabled, replicas will assume that requests
648# were forwarded to them instantly by the coordinator, which means that
649# under overload conditions we will waste that much extra time processing
650# already-timed-out requests.
651#
652# Warning: before enabling this property make sure to ntp is installed
653# and the times are synchronized between the nodes.
654# cross_node_timeout: false
655
656# Enable socket timeout for streaming operation.
657# When a timeout occurs during streaming, streaming is retried from the start
658# of the current file. This _can_ involve re-streaming an important amount of
659# data, so you should avoid setting the value too low.
660# Default value is 0, which never timeout streams.
661# streaming_socket_timeout_in_ms: 0
662
663# controls how often to perform the more expensive part of host score
664# calculation
665# dynamic_snitch_update_interval_in_ms: 100
666
667# controls how often to reset all host scores, allowing a bad host to
668# possibly recover
669# dynamic_snitch_reset_interval_in_ms: 600000
670
671# if set greater than zero and read_repair_chance is < 1.0, this will allow
672# 'pinning' of replicas to hosts in order to increase cache capacity.
673# The badness threshold will control how much worse the pinned host has to be
674# before the dynamic snitch will prefer other replicas over it. This is
675# expressed as a double which represents a percentage. Thus, a value of
676# 0.2 means Scylla would continue to prefer the static snitch values
677# until the pinned host was 20% worse than the fastest.
678# dynamic_snitch_badness_threshold: 0.1
679
680# request_scheduler -- Set this to a class that implements
681# RequestScheduler, which will schedule incoming client requests
682# according to the specific policy. This is useful for multi-tenancy
683# with a single Scylla cluster.
684# NOTE: This is specifically for requests from the client and does
685# not affect inter node communication.
686# org.apache.cassandra.scheduler.NoScheduler - No scheduling takes place
687# org.apache.cassandra.scheduler.RoundRobinScheduler - Round robin of
688# client requests to a node with a separate queue for each
689# request_scheduler_id. The scheduler is further customized by
690# request_scheduler_options as described below.
691# request_scheduler: org.apache.cassandra.scheduler.NoScheduler
692
693# Scheduler Options vary based on the type of scheduler
694# NoScheduler - Has no options
695# RoundRobin
696# - throttle_limit -- The throttle_limit is the number of in-flight
697# requests per client. Requests beyond
698# that limit are queued up until
699# running requests can complete.
700# The value of 80 here is twice the number of
701# concurrent_reads + concurrent_writes.
702# - default_weight -- default_weight is optional and allows for
703# overriding the default which is 1.
704# - weights -- Weights are optional and will default to 1 or the
705# overridden default_weight. The weight translates into how
706# many requests are handled during each turn of the
707# RoundRobin, based on the scheduler id.
708#
709# request_scheduler_options:
710# throttle_limit: 80
711# default_weight: 5
712# weights:
713# Keyspace1: 1
714# Keyspace2: 5
715
716# request_scheduler_id -- An identifier based on which to perform
717# the request scheduling. Currently the only valid option is keyspace.
718# request_scheduler_id: keyspace
719
720# Enable or disable inter-node encryption.
721# You must also generate keys and provide the appropriate key and trust store locations and passwords.
722# No custom encryption options are currently enabled. The available options are:
723#
724# The available internode options are : all, none, dc, rack
725# If set to dc scylla will encrypt the traffic between the DCs
726# If set to rack scylla will encrypt the traffic between the racks
727#
728# server_encryption_options:
729internode_encryption: all
730certificate: conf/db.crt
731keyfile: conf/db.key
732truststore: conf/cadb.pem
733# require_client_auth: False
734# priority_string: <none, use default>
735
736# enable or disable client/server encryption.
737# client_encryption_options:
738# enabled: false
739# certificate: conf/scylla.crt
740# keyfile: conf/scylla.key
741# truststore: <none, use system trust>
742# require_client_auth: False
743# priority_string: <none, use default>
744
745# internode_compression controls whether traffic between nodes is
746# compressed.
747# can be: all - all traffic is compressed
748# dc - traffic between different datacenters is compressed
749# none - nothing is compressed.
750# internode_compression: none
751
752# Enable or disable tcp_nodelay for inter-dc communication.
753# Disabling it will result in larger (but fewer) network packets being sent,
754# reducing overhead from the TCP protocol itself, at the cost of increasing
755# latency if you block for cross-datacenter responses.
756# inter_dc_tcp_nodelay: false
757
758# Relaxation of environment checks.
759#
760# Scylla places certain requirements on its environment. If these requirements are
761# not met, performance and reliability can be degraded.
762#
763# These requirements include:
764# - A filesystem with good support for aysnchronous I/O (AIO). Currently,
765# this means XFS.
766#
767# false: strict environment checks are in place; do not start if they are not met.
768# true: relaxed environment checks; performance and reliability may degraade.
769#
770# developer_mode: false
771
772
773# Idle-time background processing
774#
775# Scylla can perform certain jobs in the background while the system is otherwise idle,
776# freeing processor resources when there is other work to be done.
777#
778# defragment_memory_on_idle: true
779#
780# prometheus port
781# By default, Scylla opens prometheus API port on port 9180
782# setting the port to 0 will disable the prometheus API.
783# prometheus_port: 9180
784#
785# prometheus address
786# By default, Scylla binds all interfaces to the prometheus API
787# It is possible to restrict the listening address to a specific one
788# prometheus_address: 0.0.0.0
789
790# Distribution of data among cores (shards) within a node
791#
792# Scylla distributes data within a node among shards, using a round-robin
793# strategy:
794# [shard0] [shard1] ... [shardN-1] [shard0] [shard1] ... [shardN-1] ...
795#
796# Scylla versions 1.6 and below used just one repetition of the pattern;
797# this intefered with data placement among nodes (vnodes).
798#
799# Scylla versions 1.7 and above use 4096 repetitions of the pattern; this
800# provides for better data distribution.
801#
802# the value below is log (base 2) of the number of repetitions.
803#
804# Set to 0 to avoid rewriting all data when upgrading from Scylla 1.6 and
805# below.
806#
807# Keep at 12 for new clusters.
808murmur3_partitioner_ignore_msb_bits: 12