#clickhouse #clickhouse-go
#clickhouse #clickhouse-go
Вопрос:
Я использую версию click house ‘20.6.4’ с настройками по умолчанию.Просматривая журналы, я нашел эти журналы в изобилии.
ServerErrorHandler: Code: 210, e.displayText() = DB::NetException: Connection reset by peer, while reading from socket
и
u003cWarningu003e ConnectionPoolWithFailover: Connection failed at try №1, reason: Code: 209, e.displayText() = DB::NetException: Timeout: connect timed out: 172.16.*.*:9000 (172.16.*.*:9000) (version 20.6.3.28 (official build))","msg_id":"SERVER-1","namespace":"clickhouse.server","priority":6,"timestamp":"2020-09-21T00:01:23.623067Z","user_id":"","user_name":""}
Я использую клиент go-clickhouse с настройками по умолчанию (без изменения какого-либо тайм-аута)
Вставка данных почти каждую минуту (около 60-70 тыс. строк)
Несмотря на то, что, похоже, никакого влияния нет, но их много
Это мои настройки, связанные с таймаутом:
name value type
connect_timeout 10 SettingSeconds
connect_timeout_with_failover_ms 50 SettingMilliseconds
connect_timeout_with_failover_secure_ms 100 SettingMilliseconds
receive_timeout 300 SettingSeconds
send_timeout 300 SettingSeconds
tcp_keep_alive_timeout 0 SettingSeconds
idle_connection_timeout 3600 SettingUInt64
distributed_directory_monitor_sleep_time_ms 100 SettingMilliseconds
distributed_directory_monitor_max_sleep_time_ms 30000 SettingMilliseconds
insert_in_memory_parts_timeout 600000 SettingMilliseconds
replication_alter_columns_timeout 60 SettingUInt64
insert_quorum_timeout 600000 SettingMilliseconds
use_client_time_zone 0 SettingBool
insert_distributed_timeout 0 SettingUInt64
distributed_ddl_task_timeout 180 SettingInt64
stream_poll_timeout_ms 500 SettingMilliseconds
http_connection_timeout 1 SettingSeconds
http_send_timeout 1800 SettingSeconds
http_receive_timeout 1800 SettingSeconds
query_profiler_real_time_period_ns 1000000000 SettingUInt64
query_profiler_cpu_time_period_ns 1000000000 SettingUInt64
max_execution_time 0 SettingSeconds
timeout_overflow_mode throw SettingOverflowMode
timeout_before_checking_execution_speed 10 SettingSeconds
temporary_live_view_timeout 5 SettingSeconds
lock_acquire_timeout 120 SettingSeconds
mark_cache_min_lifetime 0 SettingUInt64
date_time_input_format basic SettingDateTimeInputFormat
Is there anything i can change to minimize these errrors??
Комментарии:
1. PS: я использую встроенное TCPConnection для вставки запросов (используя клиентскую библиотеку ‘kshvakov’)
Ответ №1:
Сброс соединения одноранговым узлом при чтении из сокета
Какие IP-адреса в этом сообщении? Это серверы CH или клиенты? Однако это реальная ошибка. Это просто означает, что клиент ушел, а сервер не получил все ожидаемые данные.
Комментарии:
1. Это IP-адрес сервера clickhouse.
2. Также получение как чтения из сокета, так и записи из сокета.
3. проверьте, что происходит на этом сервере в данный момент. Почему он перестал отправлять данные.
4. я очень новичок в clickhouse. Как я могу проверить?? Есть ли какая-либо системная таблица, где я могу это видеть??
5. просто проверьте журнал в то время на сервере с этим IP
Ответ №2:
Это две разные проблемы.
Сбой соединения при попытке №1 connect_timeout_with_failover_ms 50
50 мс <- проверка задержки (ping) среди реплик. Если задержка составляет> 1 мс, то вам необходимо увеличить connect_timeout_with_failover_ms
cat /etc/clickhouse-server/conf.d/user_substitutes.xml
<?xml version="1.0"?>
<yandex>
<profiles>
<default>
<connect_timeout_with_failover_ms>1000</connect_timeout_with_failover_ms>
<default>
</profiles>
</yandex>
Комментарии:
1. Если вы говорите о столбце ‘absolute_delay’ в таблице ‘system.replicas’, его значение равно 0.
2. Я говорю о задержке в сети. вы можете проверить это с помощью команды ping
3. да, задержка пинга составляет от 3-20 мс для других хостов в моем кластере, какое значение я должен обновить и до скольких?
4. Я добавил способ увеличения connect_timeout_with_failover_ms к ответу
5. Только одна вещь, @Denny, пинг где-то между прочим 3-20 мс с потерей пакета 4%, но connect_timeout_with_failover_ms установлен на 50 мс, так что это проблема, поскольку значение меньше 50 мс, и для чего я должен увеличить это значение до 100, 200??