ClickHouse/docs/ru/operations/troubleshooting.md

140 lines
7.9 KiB
Markdown
Raw Normal View History

# Устранение неисправностей
- [Установка дистрибутива](#troubleshooting-installation-errors)
- [Соединение с сервером](#troubleshooting-accepts-no-connections)
- [Обработка запросов](#troubleshooting-does-not-process-queries)
- [Скорость обработки запросов](#troubleshooting-too-slow)
## Установка дистрибутива {#troubleshooting-installation-errors}
### Не получается скачать deb-пакеты из репозитория ClickHouse с помощью apt-get
- Проверьте настройки брандмауэра.
- Если по какой-либо причине вы не можете получить доступ к репозиторию, скачайте пакеты как описано в разделе [Начало работы](../getting_started/index.md) и установите их вручную командой `sudo dpkg -i <packages>`. Также, необходим пакет `tzdata`.
## Соединение с сервером {#troubleshooting-accepts-no-connections}
Возможные проблемы:
- Сервер не запущен.
- Неожиданные или неправильные параметры конфигурации.
### Сервер не запущен
**Проверьте, запущен ли сервер**
Команда:
```
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` выводит сообщения в консоль.
### Параметры конфигурации
Проверьте:
- Настройки Docker.
При запуске ClickHouse в Docker в сети IPv6 убедитесь, что установлено `network=host`.
- Параметры endpoint.
Проверьте настройки [listen_host](server_settings/settings.md#server_settings-listen_host) и [tcp_port](server_settings/settings.md#server_settings-tcp_port).
По умолчанию, сервер ClickHouse принимает только локальные подключения.
- Настройки протокола HTTP.
Проверьте настройки протокола для HTTP API.
- Параметры безопасного подключения.
Проверьте:
- Настройку `tcp_port_secure`.
- Параметры для SSL-сертификатов.
Используйте правильные параметры при подключении. Например, используйте параметр `port_secure` при использовании `clickhouse_client`.
- Настройки пользователей.
Возможно, вы используете неверное имя пользователя или пароль.
## Обработка запросов {#troubleshooting-does-not-process-queries}
Если ClickHouse не может обработать запрос, он отправляет клиенту описание ошибки. В `clickhouse-client` вы получаете описание ошибки в консоли. При использовании интерфейса HTTP, ClickHouse отправляет описание ошибки в теле ответа. Например:
```bash
$ curl 'http://localhost:8123/' --data-binary "SELECT a"
2019-02-10 18:14:23 +00:00
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` c параметром `stack-trace`, то ClickHouse возвращает описание ошибки и соответствущий стек вызовов функций на сервере.
Может появиться сообщение о разрыве соединения. В этом случае необходимо повторить запрос. Если соединение прерывается каждый раз при выполнении запроса, следует проверить журналы сервера на наличие ошибок.
## Скорость обработки запросов {#troubleshooting-too-slow}
Если вы видите, что ClickHouse работает слишком медленно, необходимо профилировать загрузку ресурсов сервера и сети для ваших запросов.
Для профилирования запросов можно использовать утилиту clickhouse-benchmark. Она показывает количество запросов, обработанных за секунду, количество строк, обработанных за секунду и перцентили времени обработки запросов.