I have a bunch of table visualizations that rely on a @timestamp term to show a list of events. When selecting longer time ranges this absolutely kills dashboard performance.
Because of this some of my dashboards can take 2.5 minutes to load. Removing the tables makes loading much faster.
Below are the stats from a single visualization that takes 32 seconds to load but on my server (hosting both ES and Kibana) I see only a short CPU spike matching the query time. The complete query doesn't appear to take that long to run either so why does the browser need so long to render the visualization?
|Query Duration|25ms| |Request Duration|2599ms| |Hits|1622|
Another strange thing I noticed is that it appears loading time increases a lot when there is no data/little data after a certain time?
Loading times with a data set full of data over the past ~30 days and very little data after that. Performance is measured over several times.
Last 30 days
Loading time in browser: 6 ~ 8 seconds
|Query Duration|26ms| |Request Duration|1508ms| |Hits|719|
Last 60 days
Loading time in browser: ~30 seconds
|Query Duration|46ms| |Request Duration|2007ms| |Hits|1367|
Last 90 days
Loading time in browser: ~35 seconds
|Query Duration|24ms| |Request Duration|2731ms| |Hits|1622|
Despite the request duration being less than 3 seconds, it takes over 30 for a browser to render this single visualization. For some reason performance doesn't scale very well between 30 and 60 days either while performance between 60 and 90 days does seem to scale better.
No other queries were sent to the server while performing these tests.
Is there any way I can speed these visualizations up? I've changed some visualizations to data histrogram which speeds things up though its not an ideal situation. I've also tried limiting the amount of items that can get loaded when using a @timestamp term high enough so only 30 days is loaded (data is collected per hour) but because the descending option doesn't appear to be working in such a case it doesn't actually load the last 30 days worth of data so the returned data is unusable.