Перейти к основному содержимому
Перейти к основному содержимому

Устранение неполадок

Установка

Невозможно импортировать GPG ключи с keyserver.ubuntu.com с помощью apt-key

Функция apt-key с Advanced package tool (APT) была устаревшей. Пользователям следует использовать команду gpg вместо этого. Пожалуйста, обратитесь к статье руководства по установке.

Невозможно импортировать GPG ключи с keyserver.ubuntu.com с помощью gpg

  1. Проверьте, установлен ли ваш gpg:
sudo apt-get install gnupg

Невозможно получить deb пакеты из репозитория ClickHouse с помощью apt-get

  1. Проверьте настройки брандмауэра.
  2. Если вы не можете получить доступ к репозиторию по какой-либо причине, загрузите пакеты, как описано в статье руководства по установке, и установите их вручную с помощью команды sudo dpkg -i <packages>. Вам также понадобится пакет tzdata.

Невозможно обновить deb пакеты из репозитория ClickHouse с помощью apt-get

Проблема может возникнуть, если 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 из-за неправильной подписи

Возможная проблема: кэш неверный, возможно, он поврежден после обновления GPG ключа в 2022-09.

Решение заключается в том, чтобы очистить кэш и каталог lib для Yum:

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:

    • Если вы запускаете ClickHouse в Docker в сети IPv6, убедитесь, что установлен network=host.
  2. Настройки конечной точки.

    • Проверьте настройки listen_host и tcp_port.
    • По умолчанию сервер ClickHouse принимает подключения только от localhost.
  3. Настройки протокола HTTP:

    • Проверьте параметры протокола для HTTP API.
  4. Настройки безопасного подключения.

    • Проверьте:
    • Используйте правильные параметры при подключении. Например, используйте параметр port_secure с clickhouse_client.
  5. Параметры пользователя:

    • Возможно, вы используете неправильное имя пользователя или пароль.

Обработка запросов

Если ClickHouse не может обработать запрос, он отправляет описание ошибки клиенту. В clickhouse-client вы получаете описание ошибки в консоли. Если вы используете HTTP интерфейс, ClickHouse отправляет описание ошибки в теле ответа. Например:

$ curl 'http://localhost: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

Если вы запускаете clickhouse-client с параметром stack-trace, ClickHouse возвращает стек сервера с описанием ошибки.

Вы можете увидеть сообщение о разрыве соединения. В этом случае вы можете повторить запрос. Если соединение разрывается каждый раз, когда вы выполняете запрос, проверьте журналы сервера на наличие ошибок.

Эффективность обработки запросов

Если вы видите, что ClickHouse работает слишком медленно, вам нужно профилировать нагрузку на ресурсы сервера и сеть для ваших запросов.

Вы можете использовать утилиту clickhouse-benchmark для профилирования запросов. Она показывает количество запросов, обработанных в секунду, количество строк, обработанных в секунду, и перцентили времени обработки запросов.