gpt4 book ai didi

c++ - Datastax Cassandra C++ 驱动程序中核心连接和 i/o 线程之间的区别

转载 作者:行者123 更新时间:2023-11-30 04:45:36 25 4
gpt4 key购买 nike

我使用 cass_cluster_set_max_connections_per_host() 设置每个主机的核心连接数,使用 cass_cluster_set_num_threads_io() 设置 i/o 线程。我看到我的客户主机正在建立,core connections * num i/o threads,使用 netstat 命令与集群中每个主机的 tcp 连接数。我想知道 I/O 线程和核心连接之间有什么区别?此外,如果客户端正在与 10 台主机的 Cassandra 集群通信,并且核心连接数设置为 2,则 i/o 线程设置为 4,那么从主机到集群基本上建立了 10*4*2、80 个连接 -这一切都在一个 session 中,这些连接是如何利用的?不觉得很奇怪吗?

我正在尝试调整这些值,以便如果集群同时由 100 台主机连接,则速度不会减慢。还是这些设置与速度无关?感谢任何更多信息或链接!

最佳答案

这是当前字段的官方文档 here

cass_cluster_set_num_threads_io:这是将处理查询请求的线程数。默认值:1

cass_cluster_set_max_connections_per_host:设置每个IO线程中与每个服务器建立的最大连接数。默认值:2

I am wondering what is the difference between an i/o thread and a core connection?

I/O 线程基本上负责客户端和服务器之间的所有网络操作。因此,如果您有 1000 条消息等待网络操作,该线程将一条一条地挑选请求并执行它们。默认值为 1。

一旦 I/O 线程选择了一条消息,它就会使用 set_max_connections 中指定的连接来发出请求。默认值为 2,这样 I/O 线程可以根据服务器延迟和吞吐量智能地切换连接。

I am trying to tune those values so if a cluster is connected by 100 hosts simultaneously then the speed wouldn't slow down.

您可以保持最大连接数不变并增加 i/o 线程的数量,或者以其他方式进行扩展。两者之间没有明确的更好方法。您将需要进行基准测试并查看哪种方法适用于您的案例。

我认为,如果您的请求数量较少,但请求数量很大,那么增加连接数量会更有意义,但它仍然需要进行基准测试。

This链接还提供了一些额外信息。

关于c++ - Datastax Cassandra C++ 驱动程序中核心连接和 i/o 线程之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57188915/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com