首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在Docker中将nodetool命令和cqlsh运行到Scylla

无法在Docker中将nodetool命令和cqlsh运行到Scylla
EN

Stack Overflow用户
提问于 2021-10-03 08:13:51
回答 1查看 824关注 0票数 3

我是Scylla的新手,我按照下面的说明在容器中试用它,如本页所示:https://hub.docker.com/r/scylladb/scylla/

下面的命令运行良好。

docker run --name some-scylla --hostname some-scylla -d scylladb/scylla

我看到集装箱在运行。

代码语言:javascript
复制
CONTAINER ID   IMAGE             COMMAND                  CREATED          STATUS          PORTS                                                            NAMES
e6c4e19ff1bd   scylladb/scylla   "/docker-entrypoint.…"   14 seconds ago   Up 13 seconds   22/tcp, 7000-7001/tcp, 9042/tcp, 9160/tcp, 9180/tcp, 10000/tcp   some-scylla

但是,我无法使用nodetoolcqlsh。我得到以下输出。

代码语言:javascript
复制
$ docker exec -it some-scylla nodetool status
Using /etc/scylla/scylla.yaml as the config file
nodetool: Unable to connect to Scylla API server: java.net.ConnectException: Connection refused (Connection refused)
See 'nodetool help' or 'nodetool help <command>'.

代码语言:javascript
复制
$ docker exec -it some-scylla cqlsh
Connection error: ('Unable to connect to any servers', {'172.17.0.2': error(111, "Tried connecting to [('172.17.0.2', 9042)]. Last error: Connection refused")})

有什么想法吗?

更新

查看docker logs some-scylla,我在日志中看到了一些错误,最后一个错误如下所示。

代码语言:javascript
复制
2021-10-03 07:51:04,771 INFO spawned: 'scylla' with pid 167
Scylla version 4.4.4-0.20210801.69daa9fd0 with build-id eb11cddd30e88ef39c32c847e70181b5cf786355 starting ...
command used: "/usr/bin/scylla --log-to-syslog 0 --log-to-stdout 1 --default-log-level info --network-stack posix --developer-mode=1 --overprovisioned --listen-address 172.17.0.2 --rpc-address 172.17.0.2 --seed-provider-parameters seeds=172.17.0.2 --blocked-reactor-notify-ms 999999999"
parsed command line options: [log-to-syslog: 0, log-to-stdout: 1, default-log-level: info, network-stack: posix, developer-mode: 1, overprovisioned, listen-address: 172.17.0.2, rpc-address: 172.17.0.2, seed-provider-parameters: seeds=172.17.0.2, blocked-reactor-notify-ms: 999999999]
ERROR 2021-10-03 07:51:05,203 [shard 6] seastar - Could not setup Async I/O: Resource temporarily unavailable. The most common cause is not enough request capacity in /proc/sys/fs/aio-max-nr. Try increasing that number or reducing the amount of logical CPUs available for your application
2021-10-03 07:51:05,316 INFO exited: scylla (exit status 1; not expected)
2021-10-03 07:51:06,318 INFO gave up: scylla entered FATAL state, too many start retries too quickly

更新2

此错误的原因已在上面链接的“停靠中心”页面中描述。我必须启动容器,用--smp 1指定CPU的数量,如下所示。

代码语言:javascript
复制
docker run --name some-scylla --hostname some-scylla -d scylladb/scylla --smp 1

根据上述一页:

这个命令将在开发人员模式下启动一个由单个CPU核心(参见--smp)限制的Scylla单节点集群(参见--developer-mode 1)。生产级配置需要调优几个内核参数,因此限制可用内核的数量(使用--smp 1)是最简单的方法。

多个核心需要为/proc/sys/fs/aio-max-nr设置一个适当的值。在许多非生产系统中,它将等于65K。.

EN

回答 1

Stack Overflow用户

发布于 2021-10-05 01:25:37

正如您已经发现的,为了能够使用额外的CPU核心,您需要增加fs.aio-max-nr内核参数。

您可以作为root运行:

代码语言:javascript
复制
# sysctl -w fs.aio-max-nr=65535

这对大多数系统来说应该足够了。如果您仍然有任何错误,阻止它使用您的所有CPU核心,进一步增加它的价值。

请注意,上面的配置不是持久的。编辑/etc/sysctl.conf,使其在重新启动时持久存在。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69423156

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档