Aerospike 异步客户端调用频繁关闭和打开连接

问题描述 投票:0回答:1

我们有一个 flink 应用程序,可以将数据写入 aerospike。我们使用 aerospike 异步客户端调用将数据写入 aerospike。这些更改运行良好,但其中一个指标对于每个用户的连接来说并不合适。由于现在的更改是异步的,因此我们看到每个用户指标的客户端连接波动更大。 客户代码:

@Provides
  @Singleton
  public AerospikeClient aerospikeClient() {
    ClientPolicy policy = new ClientPolicy();
    EventPolicy eventPolicy = new EventPolicy();
    int eventLoopSize = Runtime.getRuntime().availableProcessors() / 2;
    EventLoops eventLoops = new NioEventLoops(eventPolicy, eventLoopSize);
    policy.timeout = aerospikeConfig.getTimeout();
    policy.user = aerospikeConfig.getUser();
    policy.password = aerospikeConfig.getPassword();
    policy.eventLoops = eventLoops;
    return new AerospikeClient(policy, aerospikeConfig.getHost(), aerospikeConfig.getPort());
  }

我们还可以添加什么来稳定连接? 如果需要,使用数字来帮助设置值。 flink 并行度:x flink工作节点:y 气动钉节点:z Aerospike 客户:北美和欧盟

我们考虑引入 AsyncMinConnectionPerNode,但即使在本地设置上增加它后,仍然可能会出现一些波动。

java asynchronous apache-flink aerospike
1个回答
0
投票

您可以探索调整参数以防止套接字在空闲时关闭。 1) 在服务器端,确保 proto-fd-idle-ms 设置为 0 - 因此服务器不会关闭空闲套接字,使用“keep-alive”来检测已消失的客户端。 2) 在客户端,如果您使用 maxSocketIdle 设置为 0,tend 线程将每 55 秒关闭空闲套接字。你想要那个吗?取决于您的客户 - 他们是连续使用套接字还是空闲超过 55 秒?您可以通过在 ClientPolicy 中将 maxSocketIdle 设置为 > 55(单位为秒)的数字来增加该窗口。 3) asyncMinConnsPerNode 默认为 0 - 增加该数字,以便每个事件循环获得该数量/事件循环数量 - 因此每个事件循环的预算相应 - 这可能会有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.