【问题标题】:Apache Superset - Concurrent loading of dashboard slices (Athena)Apache Superset - 仪表板切片的并发加载(雅典娜)
【发布时间】:2018-11-14 23:19:55
【问题描述】:

我有一个仪表板,其中设置了几个切片。切片一个接一个地加载,而不是同时加载。这会导致糟糕的用户体验。我的数据位于 S3 上,我正在使用 Athena 连接器进行查询。我可以看到对 Athena 的调用是按顺序触发的,每个查询在运行前等待它之前的一个完成。

我正在使用 gevent,据我所知这应该不是问题?

以下是我的 Superset 配置的摘录:

SUPERSET_WORKERS = 8
WEBSERVER_THREADS = 8

它曾经分别设置为 2 和 1,但我将其分别设置为 8,看看这是否可能是问题所在。不过我得到了相同的结果。

这是一个简单的错误配置问题还是我遗漏了什么?

【问题讨论】:

    标签: gunicorn gevent amazon-athena apache-superset


    【解决方案1】:

    在增加gunicorn 的工作程序和线程之前,了解 multiProcessing 和 multiThreading 很重要。如果您正在查看CPU intense operations,您需要很多进程,而您可能需要很多线程用于I/O intensive 操作。

    对于您的问题,您不需要很多流程;但是进程中的线程。使用该配置,下一步将是调试如何生成greenlets。 (gevents 促进了concurrency。并发!== 并行处理)。

    要使用多个线程引导 gunicorn,您可以执行以下操作:

    gunicorn -b localhost:8000 main:app --threads 30 --reload

    请发布更多代码以提供有针对性的帮助。

    【讨论】:

    • 感谢您的回复。大约一周前我想通了。问题是应用程序可以很好地处理多处理。 Python 应用程序和 JDBC jar 之间的连接是问题所在。每个 Athena 查询都会启动一个新的 JVM。因此,它不是在 JVM 上进行多线程调用,而是等待、杀死正在运行的 JVM,然后启动一个新的。
    • @VinayRanjan 我无法在代码或配置级别解决它。我不想编辑任何现有代码,但我确信有办法对其进行调整以使其正常工作。我最终做的是在 docker 容器中运行应用程序,并且只使用带有负载均衡器的多个容器。然后负载均衡器将多个请求分发到多个容器上,每个容器基本上处理对 Athena 的调用。在问题上投入资源不是最好的解决方案,但它是最快的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-15
    • 1970-01-01
    • 1970-01-01
    • 2018-10-19
    • 2021-01-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多