此答案自Superset 0.37.0起有效。
目前,仪表板性能受几个不同因素的影响。我将在下面枚举它们以及提高性能的方法:
- 数据库并发限制可能会影响仪表板性能。仪表板通过并发Web请求并行加载其信息。确保提供的数据库用户允许足够的并发性,以免查询不在数据库层排队。
- 缓存性能,您的缓存层应该能够非常快地返回多个结果(如果不是并行的话)。利用S3作为缓存,我们已经取得了成功。
- 缓存命中百分比:超级集仅对与最近运行的查询完全匹配的查询命中缓存。否则,完整查询将落入基础分析数据库(在这种情况下为Druid)。您可以通过在仪表板上使用较小的分辨率来减少Druid的查询负载-如果有可能使其更新的频率降低(例如每天几次而不是实时),则这可能会缓存所有其他请求的缓存比正在考虑的新时期的第一个请求要高。
- Python Web进程并发限制确保您的Web应用程序服务器可以处理足够的并行请求。浏览器将同时请求多个图表的数据,并且系统需要能够并行处理这些请求。
- 图表查询性能由于经常需要数据,尤其是对于来自Druid等数据库的实时数据,优化由图表运行的查询可能非常有用。我将看看正在利用的任何虚拟数据源,以查看它们是否可以实现或提高效率。
- Web浏览器并发请求限制默认情况下,大多数Web浏览器将可向同一FQDN发出的并发请求的数量限制为。如果在同一仪表板上有6个以上的图表,则可以在运行Superset的多个FQDN之间平衡请求,从而避免浏览器限制。 Github的发行记录中提供了有关此方法的更多信息,但是Superset确实支持这种配置。
社区对于随着时间的推移提高性能非常感兴趣,因此,有人提出了将所有分析查询移至Celery以及进行其他体系结构更改以提高性能的建议。希望此说明对您有所帮助,并希望其中的内容可以帮助您找到问题所在!