184 похожих чатов

Коллеги, доброе утро! Есть вопрос по java http client Тут в документации

есть пример с подключением и запросом: https://clickhouse.com/docs/en/integrations/java#java-client

try (ClickHouseClient client = ClickHouseClient.newInstance(ClickHouseProtocol.HTTP)) {
ClickHouseRequest<?> request = client.connect(servers).format(ClickHouseFormat.RowBinaryWithNamesAndTypes);

Подскажите, вот это client надо создавать при каждом запросе, или мы можем сделать его полем класса и подключать при инициализации?

А вообще, вопрос шире, я после некоторого количества инсертов начинаю получать ClickHouseException: Code: 159. Execution timed out

В логе вижу ошибку:
2023.10.21 09:13:33.420667 [ 509 ] {} <Error> ServerErrorHandler: Poco::Exception. Code: 1000, e.code() = 107, Net Exception: Socket is not connected, Stack trace (when copying this message, always include the lines below):

0. Poco::Net::SocketImpl::error(int, String const&) @ 0x0000000015d2ef12 in /usr/bin/clickhouse
1. Poco::Net::SocketImpl::peerAddress() @ 0x0000000015d31676 in /usr/bin/clickhouse
2. DB::HTTPServerRequest::HTTPServerRequest(std::shared_ptr<DB::IHTTPContext>, DB::HTTPServerResponse&, Poco::Net::HTTPServerSession&) @ 0x000000001335fc67 in /usr/bin/clickhouse
3. DB::HTTPServerConnection::run() @ 0x000000001335e3e4 in /usr/bin/clickhouse
4. Poco::Net::TCPServerConnection::start() @ 0x0000000015d33b34 in /usr/bin/clickhouse
5. Poco::Net::TCPServerDispatcher::run() @ 0x0000000015d34d31 in /usr/bin/clickhouse
6. Poco::PooledThread::run() @ 0x0000000015e40387 in /usr/bin/clickhouse
7. Poco::ThreadImpl::runnableEntry(void*) @ 0x0000000015e3e61c in /usr/bin/clickhouse
8. ? @ 0x00007f133cd1b609 in ?
9. ? @ 0x00007f133cc40133 in ?
(version 23.9.1.1854 (official build))

10 ответов

33 просмотра

вы асинхронно запросы выполняете? имхо несколько запросов одновременно он не может выполнять.

Valdemar- Автор вопроса
Denny [Altinity]
вы асинхронно запросы выполняете? имхо несколько з...

Да. Нормально работает, только если сделать async_insert=1,wait_for_async_insert=0. Если async_insert=1,wait_for_async_insert=1, то медленнее и такой таймаут выскакивает

Valdemar- Автор вопроса
Valdemar
синхронно пробую, executeAndWait

ОК. вы по одной строке вставляете? вы понимаете что async_insert=1 делает только хуже если у вас один клиент вставляет? у вас запросы искусственно замедляются и ждут 200мс.

Valdemar- Автор вопроса
Valdemar
по одной, да. нет, этого я не понимал (

ну вот вам надо либо понять что такое async_insert=1 либо забыть про него и начать использовать engine=Buffer

Valdemar- Автор вопроса
Denny [Altinity]
ну вот вам надо либо понять что такое async_insert...

200 мс это async_insert_busy_timeout_ms, подскажите?

Valdemar
200 мс это async_insert_busy_timeout_ms, подскажит...

да, но в общем async_insert только вредит если у вас не сотни/тысячи вставляторов.

Valdemar- Автор вопроса
Denny [Altinity]
да, но в общем async_insert только вредит если у в...

у нас один (потенциально два-три) вставлятора, который сотни тысячи строк вставляет )

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
Ребят в СИ можно реализовать ООП?
Николай
33
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
у вас два процесса. один посылает другому сигнал. у вас есть код обоих процессов? если всё не так - расскажите как оно на самом деле. а именно кто кому чего, есть-ли консоли,...
Karagy
6
Карта сайта