跳至主要内容

故障排除

安装

无法使用 apt-key 从 keyserver.ubuntu.com 导入 GPG 密钥

使用 高级软件包工具 (APT)apt-key 功能已弃用。用户应改用 gpg 命令。请参阅 安装指南 文章。

无法使用 gpg 从 keyserver.ubuntu.com 导入 GPG 密钥

  1. 查看是否已安装 gpg
sudo apt-get install gnupg

无法使用 apt-get 从 ClickHouse 存储库获取 deb 软件包

  1. 检查防火墙设置。
  2. 如果您由于任何原因无法访问存储库,请按照 安装指南 文章中的说明下载软件包,并使用 sudo dpkg -i <packages> 命令手动安装它们。您还需要 tzdata 软件包。

无法使用 apt-get 更新 ClickHouse 存储库中的 deb 软件包

当 GPG 密钥更改时,可能会发生此问题。

请使用 设置 页面中的手册更新存储库配置。

您在 apt-get update 中收到不同的警告

完整的警告消息如下所示

N: Skipping acquire of configured file 'main/binary-i386/Packages' as repository 'https://packages.clickhouse.com/deb stable InRelease' doesn't support architecture 'i386'
E: Failed to fetch https://packages.clickhouse.com/deb/dists/stable/main/binary-amd64/Packages.gz  File has unexpected size (30451 != 28154). Mirror sync in progress?
E: Repository 'https://packages.clickhouse.com/deb stable InRelease' changed its 'Origin' value from 'Artifactory' to 'ClickHouse'
E: Repository 'https://packages.clickhouse.com/deb stable InRelease' changed its 'Label' value from 'Artifactory' to 'ClickHouse'
N: Repository 'https://packages.clickhouse.com/deb stable InRelease' changed its 'Suite' value from 'stable' to ''
N: This must be accepted explicitly before updates for this repository can be applied. See apt-secure(8) manpage for details.
Err:11 https://packages.clickhouse.com/deb stable InRelease
400 Bad Request [IP: 172.66.40.249 443]

要解决上述问题,请使用以下脚本

sudo rm /var/lib/apt/lists/packages.clickhouse.com_* /var/lib/dpkg/arch /var/lib/apt/lists/partial/packages.clickhouse.com_*
sudo apt-get clean
sudo apt-get autoclean

由于签名错误,无法使用 Yum 获取软件包

可能的问题:缓存错误,可能在 2022 年 9 月更新 GPG 密钥后已损坏。

解决方法是清除 Yum 的缓存和 lib 目录

sudo find /var/lib/yum/repos/ /var/cache/yum/ -name 'clickhouse-*' -type d -exec rm -rf {} +
sudo rm -f /etc/yum.repos.d/clickhouse.repo

之后,请按照 安装指南 进行操作

连接到服务器

可能的问题

  • 服务器未运行。
  • 意外或错误的配置参数。

服务器未运行

检查服务器是否正在运行

sudo service clickhouse-server status

如果服务器未运行,请使用以下命令启动它

sudo service clickhouse-server start

检查日志

默认情况下,clickhouse-server 的主日志位于 /var/log/clickhouse-server/clickhouse-server.log 中。

如果服务器成功启动,您应该会看到以下字符串

  • <Information> Application: starting up. — 服务器已启动。
  • <Information> Application: Ready for connections. — 服务器正在运行并准备就绪。

如果 clickhouse-server 启动因配置错误而失败,您应该会看到带有错误描述的 <Error> 字符串。例如

2019.01.11 15:23:25.549505 [ 45 ] {} <Error> ExternalDictionaries: Failed reloading 'event2id' external dictionary: Poco::Exception. Code: 1000, e.code() = 111, e.displayText() = Connection refused, e.what() = Connection refused

如果您在文件末尾没有看到错误,请从以下字符串开始查看整个文件

<Information> Application: starting up.

如果您尝试在服务器上启动第二个 clickhouse-server 实例,您将看到以下日志

2019.01.11 15:25:11.151730 [ 1 ] {} <Information> : Starting ClickHouse 19.1.0 with revision 54413
2019.01.11 15:25:11.154578 [ 1 ] {} <Information> Application: starting up
2019.01.11 15:25:11.156361 [ 1 ] {} <Information> StatusFile: Status file ./status already exists - unclean restart. Contents:
PID: 8510
Started at: 2019-01-11 15:24:23
Revision: 54413

2019.01.11 15:25:11.156673 [ 1 ] {} <Error> Application: DB::Exception: Cannot lock file ./status. Another server instance in same directory is already running.
2019.01.11 15:25:11.156682 [ 1 ] {} <Information> Application: shutting down
2019.01.11 15:25:11.156686 [ 1 ] {} <Debug> Application: Uninitializing subsystem: Logging Subsystem
2019.01.11 15:25:11.156716 [ 2 ] {} <Information> BaseDaemon: Stop SignalListener thread

查看 system.d 日志

如果您在 clickhouse-server 日志中找不到任何有用的信息或没有日志,您可以使用以下命令查看 system.d 日志

sudo journalctl -u clickhouse-server

以交互模式启动 clickhouse-server

sudo -u clickhouse /usr/bin/clickhouse-server --config-file /etc/clickhouse-server/config.xml

此命令将服务器作为交互式应用程序启动,并使用自动启动脚本的标准参数。在此模式下,clickhouse-server 会在控制台中打印所有事件消息。

配置参数

检查

  1. Docker 设置

    • 如果您在 IPv6 网络中的 Docker 中运行 ClickHouse,请确保已设置 network=host
  2. 端点设置。

    • 检查 listen_hosttcp_port 设置。
    • 默认情况下,ClickHouse 服务器仅接受本地主机连接。
  3. HTTP 协议设置

    • 检查 HTTP API 的协议设置。
  4. 安全连接设置。

    • 检查
      • tcp_port_secure 设置。
      • SSL 证书 设置。
    • 连接时使用正确的参数。例如,将 port_secure 参数与 clickhouse_client 一起使用。
  5. 用户设置

    • 您可能使用了错误的用户名或密码。

查询处理

如果 ClickHouse 无法处理查询,它会将错误描述发送到客户端。在 clickhouse-client 中,您会在控制台中看到错误描述。如果您使用的是 HTTP 接口,ClickHouse 会在响应正文中发送错误描述。例如

$ curl 'https://127.0.0.1:8123/' --data-binary "SELECT a"
Code: 47, e.displayText() = DB::Exception: Unknown identifier: a. Note that there are no tables (FROM clause) in your query, context: required_names: 'a' source_tables: table_aliases: private_aliases: column_aliases: public_columns: 'a' masked_columns: array_join_columns: source_columns: , e.what() = DB::Exception

如果您使用 stack-trace 参数启动 clickhouse-client,ClickHouse 会返回服务器堆栈跟踪以及错误描述。

您可能会看到一条有关断开连接的消息。在这种情况下,您可以重复查询。如果每次执行查询时连接都断开,请检查服务器日志以查找错误。

查询处理效率

如果您发现 ClickHouse 运行速度过慢,则需要分析服务器资源和网络上查询的负载。

您可以使用 clickhouse-benchmark 实用程序来分析查询。它显示每秒处理的查询数、每秒处理的行数以及查询处理时间的百分位数。