Slow dashboard – crashing page

I have multiple dashboards, each with around 10 cards and some of them are so slow, that the entire page freezes and Firefox shows a warning (see Screenshot)

I have already searched for other post with the same issues and all of them (Metabase Dashboard is slow, Slow API calls resulting in very poor user experience) were fixed by older Metabase versions.
I am using 0.35.3 on Heroku, with enough resources behind the dyno (Standard 2x) and both the Metabase Postgres as well as the Postgres DB where the information is stored run on Standard-0. The dyno does not exceed memory, and I don't see any super long queries in the database.

I've also looked into the heroku logs and could not find anything helpful. I can post them, if this is helpful.

What could be the reason? How can I fix it?

Hi @florian

Please post “Diagnostic Info” from Admin > Troubleshooting.

Have you tried other browsers or Firefox in safe-mode?

This has nothing to do with server stuff - this is frontend that is choking.
And it’s not specific to 10 cards, but rather which type of visualizations and how many datapoints you are returning.

You should be getting some warnings/errors in your browser developer console.

Hi @flamber,

you're right. The console is full of errors like these:

Error getting setting graph.x_axis._is_timeseries TypeError: "n is undefined"
....
(I can only share the beginning of it, because the rest is full of links and new users can only post 2 links)

What does that mean?

It happens in different browsers and also for different people / computers / accounts. This first happened after I duplicated a dashboard a week ago.
This is my diagnostic info:

{
"browser-info": {
"language": "en-US",
"platform": "MacIntel",
"userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:77.0) Gecko/20100101 Firefox/77.0",
"vendor": ""
},
"system-info": {
"file.encoding": "UTF-8",
"java.runtime.name": "OpenJDK Runtime Environment",
"java.runtime.version": "1.8.0_252-heroku-b09",
"java.vendor": "Oracle Corporation",
"java.vendor.url": "http://java.oracle.com/",
"java.version": "1.8.0_252-heroku",
"java.vm.name": "OpenJDK 64-Bit Server VM",
"java.vm.version": "25.252-b09",
"os.name": "Linux",
"os.version": "4.4.0-1073-aws",
"user.language": "en",
"user.timezone": "Etc/UTC"
},
"metabase-info": {
"databases": [
"postgres"
],
"hosting-env": "heroku",
"application-database": "postgres",
"application-database-details": {
"database": {
"name": "PostgreSQL",
"version": "12.3 (Ubuntu 12.3-1.pgdg16.04+1)"
},
"jdbc-driver": {
"name": "PostgreSQL JDBC Driver",
"version": "42.2.8"
}
},
"run-mode": "prod",
"version": {
"tag": "v0.35.3",
"date": "2020-04-21",
"branch": "release-0.35.x",
"hash": "1d424cb"
},
"settings": {
"report-timezone": "Europe/Berlin"
}
}
}

Thanks for your help!

@florian

Latest release is 0.35.4 (not that I think it’s going to change anything in regards to this problem)

So it only happens on the newly duplicated dashboard?

What is the error, when you use Chromium-based browser?

How many data points (rows) are you returning? I’m guessing this is probably one or two cards that are receiving massive amount of rows, or they’re using some visualization setting that is triggering something.
I’m trying to figure out a way to reproduce the problem, since it’s a million times easier to fix things.

@flamber

Yes, it only happens with the newly created dashboard.
Here are the errors from Chrome:

I don't know the exact number of data points I returned, but there are two cards with a lot of rows + a combination graph added.

@florian
Interesting that it only happens on the copied dashboard.

I’m fairly sure you’re seeing something like this, which we haven’t been able to reproduce.
https://github.com/metabase/metabase/issues/10127

Can you make another duplicate of the original dashboard?
Does that new copy also have this problem?
If yes, can you narrow down the specific card(s) that is causing the slowness?
And again, if yes, can you post the rows from report_dashboard_card that matches the new dashboard copy’s ID - you’ll find this in the application database (which in your case is Postgres). It shouldn’t contain any sensitive information, but please double-check before posting.

With your information, I’m working on trying to reproduce this with dashboard copy, and a card that is combining multiple visualizations.

I just made another duplicate which worked fine until I changed the value for the date filter from previous month to current month. Then the same error occured with the new duplicate and all cards that were linked to the filter showed this problem.

Here are all the rows for the newly duplicated dashboard:

199 2020-06-26 13:48:11.097561+00 2020-06-26 13:48:11.097561+00 4 3 16 14 52 14 [{“parameter_id”:“bd940c8d”,“card_id”:52,“target”:[“dimension”,[“template-tag”,“Zeitraum”]]},{“parameter_id”:“9c47220f”,“card_id”:52,“target”:[“dimension”,[“template-tag”,“Bike”]]},{“parameter_id”:“c19adf3a”,“card_id”:52,“target”:[“dimension”,[“template-tag”,“Standort”]]}] {“column_settings”:{"[“name”,“3x oder mehr”]":{“number_style”:“percent”,“number_separators”:",."}},“card.title”:“der Kunden haben 3x oder mehr ausgeliehen”}
198 2020-06-26 13:48:11.097561+00 2020-06-26 13:48:11.097561+00 4 3 13 14 51 14 [{“parameter_id”:“bd940c8d”,“card_id”:51,“target”:[“dimension”,[“template-tag”,“Zeitraum”]]},{“parameter_id”:“9c47220f”,“card_id”:51,“target”:[“dimension”,[“template-tag”,“Bike”]]},{“parameter_id”:“c19adf3a”,“card_id”:51,“target”:[“dimension”,[“template-tag”,“Standort”]]}] {“column_settings”:{"[“name”,“2x”]":{“number_style”:“percent”,“number_separators”:",."}},“card.title”:“der Kunden haben 2x ausgeliehen”}
197 2020-06-26 13:48:11.097561+00 2020-06-26 13:48:11.097561+00 4 3 10 14 50 14 [{“parameter_id”:“bd940c8d”,“card_id”:50,“target”:[“dimension”,[“template-tag”,“Zeitraum”]]},{“parameter_id”:“9c47220f”,“card_id”:50,“target”:[“dimension”,[“template-tag”,“Bike”]]},{“parameter_id”:“c19adf3a”,“card_id”:50,“target”:[“dimension”,[“template-tag”,“Standort”]]}] {“column_settings”:{"[“name”,“1x”]":{“number_style”:“percent”,“number_separators”:",.",“decimals”:0}},“card.title”:“der Kunden haben 1x ausgeliehen”}
196 2020-06-26 13:48:11.097561+00 2020-06-26 13:48:11.097561+00 10 1 29 0 14 [] {“virtual_card”:{“name”:null,“display”:“text”,“visualization_settings”:{},“dataset_query”:{},“archived”:false},“dashcard.background”:false,“text”:"## Kennzahlen zu Kunden & Kundenverhalten"}
195 2020-06-26 13:48:11.097561+00 2020-06-26 13:48:11.097561+00 4 1 0 0 14 [] {“virtual_card”:{“name”:null,“display”:“text”,“visualization_settings”:{},“dataset_query”:{},“archived”:false},“dashcard.background”:false,“text”:"## Kennzahlen zu Fahrrädern"}
194 2020-06-26 13:48:11.097561+00 2020-06-26 13:48:11.097561+00 9 7 33 0 47 14 [{“parameter_id”:“9c47220f”,“card_id”:47,“target”:[“dimension”,[“template-tag”,“bike”]]},{“parameter_id”:“c19adf3a”,“card_id”:47,“target”:[“dimension”,[“template-tag”,“standort”]]}] {}
193 2020-06-26 13:48:11.097561+00 2020-06-26 13:48:11.097561+00 18 9 19 0 44 14 [{“parameter_id”:“bd940c8d”,“card_id”:44,“target”:[“dimension”,[“template-tag”,“Zeitraum”]]}] {“column_settings”:{"[“name”,“case”]":{“decimals”:5},"[“name”,“Reservierungen pro Tag”]":{“decimals”:2,“show_mini_bar”:false,“number_style”:“decimal”,“number_separators”:", “},”[“name”,“Anteil Einkaufsfahrten”]":{“number_style”:“percent”,“show_mini_bar”:true},"[“name”,“Anteil Freizeitfahrten”]":{“show_mini_bar”:true,“number_style”:“percent”},"[“name”,“Umsatz”]":{“suffix”:“€”,“number_separators”:", “},”[“name”,“Umsatzsteigerung”]":{“number_style”:“percent”},"[“name”,“Steigerung der Reservierungen”]":{“number_style”:“percent”},"[“name”,“Durchschnittliche Fahrzeit”]":{“suffix”:" min"}},“table.pivot_column”:“Reservierungen”,“table.cell_column”:“Umsatz”,“card.title”:“Detailansicht der Tabelle”}
192 2020-06-26 13:48:11.097561+00 2020-06-26 13:48:11.097561+00 9 7 33 9 12 14 [{“parameter_id”:“bd940c8d”,“card_id”:12,“target”:[“dimension”,[“field-id”,116]]},{“parameter_id”:“9c47220f”,“card_id”:12,“target”:[“dimension”,[“template-tag”,“bike”]]},{“parameter_id”:“c19adf3a”,“card_id”:12,“target”:[“dimension”,[“template-tag”,“standort”]]}] {“graph.y_axis.title_text”:“Fahrten”,“graph.show_values”:false,“table.cell_column”:“Fahrten”,“graph.x_axis.title_text”:“Wochentag”,“graph.y_axis.scale”:“linear”,“graph.metrics”:[“Fahrten”],“table.pivot_column”:“endTime”,“column_settings”:{"[“ref”,[“field-id”,107]]":{},"[“name”,“endTime”]":{“time_style”:“k:mm”,“time_enabled”:null,“date_abbreviate”:true},"[“name”,“Fahrten”]":{“number_style”:“percent”}},“series_settings”:{“count”:{“color”:"#88BF4D"},“February, 2020”:{“display”:“bar”},“March, 2020”:{“display”:“bar”},“April, 2020”:{“display”:“bar”},“May, 2020”:{“display”:“bar”},“June, 2020”:{“display”:“bar”},“April 1, 2020, 12:00 AM”:{“color”:"#509EE3",“title”:“April, 2020”},“May 1, 2020, 12:00 AM”:{“color”:"#EF8C8C",“title”:“May, 2020”}},“graph.dimensions”:[“wochentag”,“endTime”],“stackable.stack_type”:null}
191 2020-06-26 13:48:11.097561+00 2020-06-26 13:48:11.097561+00 4 3 30 8 36 14 [] {“card.title”:“Erste Fahrten”}
190 2020-06-26 13:48:11.097561+00 2020-06-26 13:48:11.097561+00 4 3 1 14 34 14 [{“parameter_id”:“9c47220f”,“card_id”:34,“target”:[“dimension”,[“field-id”,215]]},{“parameter_id”:“c19adf3a”,“card_id”:34,“target”:[“dimension”,[“field-id”,214]]}] {“card.title”:“Ausleihen”}
189 2020-06-26 13:48:11.097561+00 2020-06-26 13:48:11.097561+00 4 3 4 14 33 14 [{“parameter_id”:“9c47220f”,“card_id”:33,“target”:[“dimension”,[“field-id”,215]]},{“parameter_id”:“c19adf3a”,“card_id”:33,“target”:[“dimension”,[“field-id”,214]]}] {“card.title”:“Umsatz”}
188 2020-06-26 13:48:11.097561+00 2020-06-26 13:48:11.097561+00 4 3 7 14 32 14 [{“parameter_id”:“9c47220f”,“card_id”:32,“target”:[“dimension”,[“field-id”,215]]},{“parameter_id”:“c19adf3a”,“card_id”:32,“target”:[“dimension”,[“field-id”,214]]}] {“scalar.switch_positive_negative”:true,“column_settings”:{"[“name”,“avg”]":{“number_style”:“percent”}},“card.title”:“des Umsatzes durch Gutscheine”}
187 2020-06-26 13:48:11.097561+00 2020-06-26 13:48:11.097561+00 14 9 10 0 31 14 [{“parameter_id”:“bd940c8d”,“card_id”:9,“target”:[“dimension”,[“template-tag”,“zeitraum”]]},{“parameter_id”:“bd940c8d”,“card_id”:31,“target”:[“dimension”,[“template-tag”,“zeitraum”]]},{“parameter_id”:“9c47220f”,“card_id”:31,“target”:[“dimension”,[“template-tag”,“Bike”]]},{“parameter_id”:“9c47220f”,“card_id”:9,“target”:[“dimension”,[“template-tag”,“Bike”]]},{“parameter_id”:“c19adf3a”,“card_id”:31,“target”:[“dimension”,[“template-tag”,“Standort”]]},{“parameter_id”:“c19adf3a”,“card_id”:9,“target”:[“dimension”,[“template-tag”,“Standort”]]}] {“graph.dimensions”:[“Anfang der Woche”],“graph.metrics”:[“avg”],“graph.show_values”:false,“graph.y_axis.title_text”:“Umsatz”,“column_settings”:{"[“name”,“avg”]":{“suffix”:“€”,“number_separators”:", “}},“series_settings”:{“Umsatz pro Standort pro Woche: Werrastraße”:{“title”:“Werrastraße”},“Umsatz pro Standort pro Woche: Franklinstraße”:{“title”:“Franklinstraße”,“line.marker_enabled”:true},“Umsatz pro Standort pro Woche: Eichbergstraße”:{“title”:“Eichbergstraße”,“line.marker_enabled”:true},“Umsatz pro Standort pro Woche: Eulenbaumstraße”:{“title”:“Eulenbaumstraße”,“line.marker_enabled”:true},“Umsatz pro Standort pro Woche: Adolf-Miersch-Straße”:{“title”:“Adolf-Miersch-Straße”,“line.marker_enabled”:true},“Umsatz pro Standort pro Woche: Bothfelder Kirchweg”:{“title”:“Bothfelder Kirchweg”,“line.marker_enabled”:true},“Umsatz pro Standort pro Woche: Häherweg”:{“title”:“Häherweg”},“Umsatz pro Standort pro Woche: Ederstraße”:{“title”:“Ederstraße”,“line.marker_enabled”:true},“Umsatz pro Standort pro Woche: Wingenderstraße”:{“title”:“Wingenderstraße”,“line.marker_enabled”:true},“Umsatz pro Standort pro Woche: Berliner Allee”:{“title”:“Berliner Allee”,“line.marker_enabled”:true},“avg”:{“title”:“Durchschnittlicher Umsatz”,“color”:”#74838f",“display”:“area”},“Umsatz pro Standort pro Woche: Melibocusstraße”:{“title”:“Melibocusstraße”,“line.marker_enabled”:true},“Umsatz pro Standort pro Woche: Hustadtring”:{“title”:“Hustadtring”,“line.marker_enabled”:true}},“graph.show_trendline”:true,“card.title”:“Umsatz pro Standort + Durchschnitt”}
186 2020-06-26 13:48:11.097561+00 2020-06-26 13:48:11.097561+00 4 3 30 0 24 14 [] {“card.title”:“neue Registrierungen”}
185 2020-06-26 13:48:11.097561+00 2020-06-26 13:48:11.097561+00 4 3 30 4 25 14 [] {“scalar.switch_positive_negative”:false,“card.title”:“Verifizierungen”}
184 2020-06-26 13:48:11.097561+00 2020-06-26 13:48:11.097561+00 14 9 1 0 16 14 [{“parameter_id”:“bd940c8d”,“card_id”:16,“target”:[“dimension”,[“template-tag”,“zeitraum”]]},{“parameter_id”:“bd940c8d”,“card_id”:28,“target”:[“dimension”,[“template-tag”,“Zeitraum”]]},{“parameter_id”:“9c47220f”,“card_id”:28,“target”:[“dimension”,[“template-tag”,“Bike”]]},{“parameter_id”:“c19adf3a”,“card_id”:28,“target”:[“dimension”,[“template-tag”,“Standort”]]},{“parameter_id”:“9c47220f”,“card_id”:16,“target”:[“dimension”,[“template-tag”,“Bike”]]},{“parameter_id”:“c19adf3a”,“card_id”:16,“target”:[“dimension”,[“template-tag”,“Standort”]]}] {“graph.show_goal”:false,“graph.y_axis.title_text”:“Umsatz”,“graph.show_values”:false,“table.cell_column”:“cost”,“graph.goal_value”:0,“card.title”:“Umsatz pro Fahrrad + Durchschnitt”,“graph.metrics”:[“cost”],“table.pivot_column”:“reservations”,“column_settings”:{"[“name”,“endTime”]":{“time_style”:“k:mm”,“time_enabled”:null,“date_abbreviate”:true},"[“name”,“sum”]":{“number_style”:“currency”},"[“name”,“cost”]":{“number_style”:“decimal”,“currency_style”:“symbol”,“number_separators”:", “,“suffix”:“€”}},“series_settings”:{“S1X0014”:{“display”:“line”},“Umsatz pro Fahrrad pro Woche SQL: S1E1003”:{“title”:“S1E1003”},“Umsatz pro Fahrrad pro Woche SQL: S1X0003”:{“title”:“S1X0003”},“Umsatz pro Fahrrad pro Woche SQL: S1X0004”:{“title”:“S1X0004”},“Umsatz pro Fahrrad pro Woche SQL: S1X0009”:{“title”:“S1X0009”},“S1X0005”:{“display”:“line”},“Umsatz pro Fahrrad pro Woche SQL: S1E1004”:{“title”:“S1E1004”},“S1X0012”:{“display”:“line”},“S1X0009”:{“display”:“line”},“S1X0018”:{“display”:“line”},“Umsatz pro Fahrrad pro Woche SQL: S1X0012”:{“title”:“S1X0012”},“Umsatz pro Fahrrad pro Woche SQL: S1X0018”:{“title”:“S1X0018”},“Durchschnittlicher Umsatz pro Fahrrad pro Woche SQL”:{“title”:“Durchschnitt”,“color”:”#74838f",“display”:“area”},“Umsatz pro Fahrrad pro Woche SQL: S1X0014”:{“title”:“S1X0014”},“Umsatz pro Fahrrad pro Woche SQL: unknown”:{“title”:“unknown”},“Umsatz pro Fahrrad pro Woche SQL: S1X0002”:{“title”:“S1X0002”,“display”:“line”},“Umsatz pro Fahrrad pro Woche SQL: S1X0005”:{“title”:“S1X0005”},“Umsatz pro Fahrrad pro Woche SQL: S1X0021”:{“title”:“S1X0021”}},“graph.dimensions”:[“Zeitraum”,“licenseplate”]}

@florian I cannot reproduce. I have tried multiple times. If you are able to reproduce with Sample Dataset, then that would be great, since we all have access to that.

@flamber I could not reproduce it with the sample dataset.
However, I gained an important insight: It has to do with adding a graph on top of another, not with active time filters.

I have two cards with about 40-50 datapoints and an average from another card added in the dashboard. This is what causes the crashes in the frontend. I don’t know what’s going on exactly, but I had several occasions where this happened.

Has anybody experienced the same? Is this a known issue?

@florian Okay, so you’re combining questions in one card. That help narrowing it down. Will try to reproduce. But it’s not going to be easy, since it sounds like it depends on the data to be in some specific way to trigger the problem.
Fairly sure it’s still issue 10127, but without a clear way of reproducing problems, then it’s very difficult to fix.