Aerospike Spark Connector批量写入限流配置及QPS计算咨询
Aerospike Spark Connector 限流配置与QPS计算
1. 16核机器设置事务速率为100时的限流生效逻辑
当配置aerospike.transaction.rate=100时,该参数是单个Spark Executor的每秒最大事务数上限。对于16核机器,若给Executor分配全部16核(即spark.executor.cores=16),Executor会同时运行最多16个并行Task,但Connector会通过令牌桶算法对所有Task的请求统一限流:每个Executor每秒仅发放100个"事务令牌",所有并行Task共享这些令牌,确保该Executor每秒发送到Aerospike的事务总数不超过100,从而避免集群CPU瞬间过载。
2. 对应的写入QPS计算
写入QPS由Executor数量和单Executor事务速率直接决定:
- 若仅使用1台16核机器作为Executor,总写入QPS为100(默认单条记录对应一个事务);
- 若有N台相同配置的16核Executor,总QPS则为
100 * N。
注意:若开启批量写入(通过aerospike.batch.size配置),单个事务会处理多条记录,此时实际写入的记录数QPS为事务速率乘以批量大小,但事务本身的QPS仍受aerospike.transaction.rate限制。
3. 可调整的其他限流相关参数
除aerospike.transaction.rate外,以下参数可配合控制写入速率,降低Aerospike集群CPU负载:
aerospike.batch.size:设置单次批量写入的记录数,减少事务总数(比如设为100,单个事务可处理100条记录,在事务速率不变的前提下,既提升写入效率,又降低单事务的CPU开销)aerospike.max.concurrent:限制单个Executor同时发起的最大事务数,避免短时间内大量请求压向集群spark.executor.cores:减少每个Executor分配的核数,降低并行Task数量,间接控制请求并发度spark.task.cpus:设置单个Task占用的CPU核心数(比如设为2),减少同一Executor内的并行Task数量,降低请求频率aerospike.transaction.timeout:设置事务超时时间,避免慢请求长时间占用集群资源,导致后续请求堆积
内容的提问来源于stack exchange,提问作者Sumit Nekar
相关产品推荐
相关产品推荐

