Query on Evictions

We are using Aerospike 3.16.0.6 version and we have set default ttl to 7 days and high-water-memory-pct as 65. Wanted to know that evictions would automatically be handled in this case ?

I was reading a documentation a topic for the same and found the below line: if ( default-ttl == 0) || ( eviction-period == 0) do not run eviction; otherwise, execute one of the following steps depending of the type of namespace doc link: Records TTL and Evictions - For Aerospike server version prior to 3.8 ( The doc attached in above link for higher version does detail out the different mechanism used but does not talk about whether eviction-period is still used or not, also tried to check in the namespace retention doc where it says the nsup-period should be not zero and default-ttl should not be zero. Cannot find nsup period setting in configuration for 3.16 but verified in logs that it’s running every 2 minutes. As stated above the default-ttl is non-zero and set to 7 days.)

I cannot find eviction-period in configuration reference of Aerospike and neither running asinfo -v get config gives me any output. Therefore, please help us know if evictions would happen for us ?

Our configuration file is below:

service {


user root


group root










pidfile /var/run/aerospike/asd.pid

}

logging { file /var/log/aerospike/aerospike.log {

	context any info

	context migrate debug

    }

}

network { service { address any port 3000 }

heartbeat {
	mode mesh



	port 3002


	mesh-seed-address-port 10.34.205.123 3002

	mesh-seed-address-port 10.33.29.183 3002

	mesh-seed-address-port 10.34.233.205 3002

	mesh-seed-address-port 10.32.101.198 3002

	mesh-seed-address-port 10.32.201.45 3002

	mesh-seed-address-port 10.34.65.162 3002

	mesh-seed-address-port 10.32.245.223 3002

	mesh-seed-address-port 10.33.73.243 3002

	mesh-seed-address-port 10.32.17.240 3002


	interval 150
	timeout 10
}

fabric {
	port 3001
}

info {
	port 3003
}

}

namespace central-cache { replication-factor 2 memory-size 77G

default-ttl 7d





storage-engine memory




high-water-memory-pct 65

}

That is a very old doc for old versions (prior to 3.8). eviction-period is certainly not a config param that would exist in version 3.16.

Evictions would happen if a high water mark is breached and nsup-period is not set to 0 (except if allow-ttl-without-nsup is configured) and records have a non 0 ttl.

Hopefully this namespace data retention document helps.

Hi meher,

We are using Aerospike version 3.16 and there is no option of setting nsup-period or allow-ttl-without-nsup . These are present in newer versions. Also I had checked in the logs and found that supervisor was running every 2 minutes so assuming nsup is 2 minutes, as for allow-ttl-without-nsup since there is no option for the above version of Aerospike so we did not set any value.

So what should we assume about evictions in this situation ?

nsup-period is an option in version 3.16, but is set at the service level (was moved to namespace level in version 4.5.1).

So you can change it dynamically but I don’t think you can set it to 0 to completely disable it in version 3.16… you can make it to a high value if you want it to run less frequently:

asinfo -v "set-config:context=service;nsup-period=86400"

So, to recap, in version 3.16:

  • If you have records with a ttl set, you will be susceptible to evictions when the namespace supervisor runs (based on the nsup-period config or more if it takes longer than nsup-period to reduce the whole index).
  • Evictions will happen when a high water mark has been breached (as detailed in the previously referred documentation).
  • If you want to disable evictions in version 3.16, you would have to set the high water mark to 100%, but I would recommend upgrading to a recent version and set the high water marks to 0 (which is the default in those more recent versions).
© 2021 Copyright Aerospike, Inc. | All rights reserved. Creators of the Aerospike Database.