美文网首页
ClickHouse代理配置

ClickHouse代理配置

作者: 淡淡的小番茄 | 来源:发表于2021-04-02 16:15 被阅读0次

      ClickHouse不支持高并发,官方建议qps为100。当然可以通过修改参数增加并发数。我们单台机器配置为40C 128G,将max_threads的值由默认值20修改为8,max_concurrent_queries的值由默认值100修改为1000。max_threads参数是在users.xml配置文件中进行配置,默认文件路径为:/etc/clickhouse-server/user.xml。max_concurrent_queries参数是在config.xml中进行配置,默认文件路径为:/etc/clickhouse-server/config.xml。

另一方面,可以在ClickHouse前增加代理缓存以提升ClickHouse的并发查询能力。

官方推荐的三个代理都为go语言编写。我们对比了chproxy和nginx,结合我们的业务需求,我们最终选择nginx作为ClickHouse代理。我们的需求比较简单:写的时候需要hash写到不同的本地表(代码计算hash),这点chproxy不支持,读的时候增加缓存设置,这方面nginx和chproxy都支持。nginx配置如下:

        proxy_cache_path /data/chproxy/cache levels=1:2 keys_zone=cache:10m max_size=10g inactive=60m use_temp_path=off;

        upstream chnodes {

                server 172.30.125.50:8123;

                server 172.30.125.53:8123;

        }

        server {

            listen 18123;

            location / {

                proxy_pass http://chnodes;

                proxy_cache    cache;

                proxy_cache_methods POST;

                proxy_cache_key "$request_body";

                add_header X-Cached $upstream_cache_status;

                proxy_buffers 8 32k;

                proxy_buffer_size 64k;

                proxy_cache_valid 59s;

                proxy_cache_use_stale updating;

        }

我们使用的官方驱动,客户端以http协议连接ClickHouse的时候,采用的post请求,且每次请求的URL是唯一的,待执行的SQL是放在body体里面的,如下所示:

对于有的场景,不需要缓存的方式,我们提供额外的查询入口。整体架构图如下:

相关文章

网友评论

      本文标题:ClickHouse代理配置

      本文链接:https://www.haomeiwen.com/subject/aylqkltx.html