Improve Grafana panel load times

Hi there,

@Rohitc discovered that some of the panels embedded on https://sheffieldair.co.uk/ take ages to load.

This discussion is dedicated to investigating this issue and hopefully improve it.

With kind regards,
Andreas.

Analysis

When inspecting the flow of requests within the JavaScript console, I can see those requests are going to https://grafana.panodata.net/grafana/api/tsdb/query and respond with ~2.5MB worth of JSON data containing the list of states and countries.

It is quickly noticeable that those requests are submitted multiple times.

Most SQL queries submitted look like

SELECT osm_state AS __value, state_and_country AS __text FROM ldi_network WHERE osm_country_code IN ('AE','AF','AL','AM','AR','AT','AU','AZ','BA','BD','BE','BG','BO','BR','BY','CA','CD','CH','CI','CL','CN','CO','CR','CY','CZ','DE','DK','DO','DZ','EC','EE','EG','ES','FI','FJ','FR','GB','GE','GH','GR','GT','HR','HT','HU','ID','IE','IL','IM','IN','IR','IS','IT','JO','JP','KE','KG','KR','KW','KZ','LA','LI','LR','LT','LU','LV','MA','MC','MD','ME','MG','MK','MN','MX','MY','NE','NG','NL','NO','NP','NZ','PE','PH','PK','PL','PT','RO','RS','RU','SE','SG','SI','SK','SO','TD','TH','TJ','TR','TW','UA','US','VN','XK','ZA',' ()') ORDER BY osm_country_code, osm_state

However, I also have been able to spot something along the lines of

SELECT osm_city AS __value, city_and_state_and_country AS __text FROM ldi_network WHERE osm_country_code IN ('AE','AF','AL','AM','AR','AT','AU','AZ','BA','BD','BE','BG','BO','BR','BY','CA','CD','CH','CI','CL','CN','CO','CR','CY','CZ','DE','DK','DO','DZ','EC','EE','EG','ES','FI','FJ','FR','GB','GE','GH','GR','GT','HR','HT','HU','ID','IE','IL','IM','IN','IR','IS','IT','JO','JP','KE','KG','KR','KW','KZ','LA','LI','LR','LT','LU','LV','MA','MC','MD','ME','MG','MK','MN','MX','MY','NE','NG','NL','NO','NP','NZ','PE','PH','PK','PL','PT','RO','RS','RU','SE','SG','SI','SK','SO','TD','TH','TJ','TR','TW','UA','US','VN','XK','ZA',' ()') AND osm_state IN ('دبي','ولایت كابل','Shqipëria qendrore','Armenia (AM)','Córdoba','La Pampa','Mendoza','Santa Fe','Burgenland','Kärnten','Niederösterreich','Oberösterreich','Salzburg','Steiermark','Tirol','Vorarlberg','Wien','Australian Capital Territory','New South Wales','NSW','Queensland','South Australia','Victoria','Western Australia','Australia (AU)','Bakı İnzibati Ərazisi','Federacija Bosne i Hercegovine','Република Српска / Republika Srpska','ঢাকা বিভাগ','Antwerpen','Brabant wallon','Hainaut','Liège','Limburg','Luxembourg','Oost-Vlaanderen','Région de Bruxelles-Capitale - Brussels Hoofdstedelijk Gewest','Vlaams-Brabant','Vlaanderen','Wallonie','West-Vlaanderen','België - Belgique - Belgien (BE)','België / Belgique / Belgien (BE)','Благоевград','Бургас','Варна','Велико Търново','Видин','Враца','Габрово','Добрич','Кърджали','Кюстендил','Ловеч','Монтана','Пазарджик','Перник','Плевен','Пловдив','Разград','Русе','Силистра','Сливен','Смолян','Софийска','София-град','Стара Загора','Търговище','Хасково','Шумен','Ямбол','Бългaрия (BG)','La Paz','Santa Cruz','Distrito Federal','Espírito Santo','RJ','São Paulo','Брестская область','Витебская область','Гомельская область','Гродненская область','Минская область','Могилёвская область','Беларусь (BY)','Alberta','British Columbia','Ontario','Québec','Saskatchewan','Haut-Katanga','Sud-Ubangi','Aargau','Appenzell Ausserrhoden','Basel-Landschaft','Basel-Stadt','Bern/Berne','Fribourg/Freiburg','Genève','Graubünden/Grigioni/Grischun','Graubünden/Grischun/Grigioni','Jura','Luzern','Neuchâtel','Nidwalden','Obwalden','Sankt Gallen','Schaffhausen','Schwyz','Solothurn','Thurgau','Ticino','Uri','Valais/Wallis','Vaud','Zug','Zürich','Abidjan','Región de Atacama','Región de la Araucanía','Región del Maule','Región de Los Lagos','Región de Valparaíso','Región Metropolitana de Santiago','上海市','云南省','北京市','吉林省','四川省','天津市','广东省','广西壮族自治区','江苏省','浙江省','甘肃省','香港 Hong Kong','Antioquia','Arauca','Atlántico','Distrito Capital','Provincia Cartago','Κύπρος','Jihozápad','Moravskoslezsko','Praha','Severovýchod','Severozápad','Střední Čechy','Střední Morava','Baden-Württemberg','Bayern','Berlin','Brandenburg','Bremen','Hamburg','Hessen','Mecklenburg-Vorpommern','Niedersachsen','Nordrhein-Westfalen','Rheinland-Pfalz','Saarland','Sachsen','Sachsen-Anhalt','Schleswig-Holstein','Thüringen','Region Hovedstaden','Region Midtjylland','Region Sjælland','Puerto Plata','Batna باتنة','Guayas','Eesti (EE)','البحر الأحمر','Andalucía','Aragón','Asturias / Asturies','Canarias','Castilla-La Mancha','CAT','Catalunya','Comunidad de Madrid','Comunitat Valenciana','Euskadi','Illes Balears','Melilla','España (ES)','Etelä-Suomi','Länsi-Suomi','Manner-Suomi','Suomi (FI)','Suomi / Finland (FI)','Eastern','Auvergne-Rhône-Alpes','Bourgogne-Franche-Comté','Bretagne','Centre-Val de Loire','Corse','Grand Est','Guyane','Hauts-de-France','Île-de-France','Normandie','Nouvelle-Aquitaine','Occitanie','Pays de la Loire','Provence-Alpes-Côte d''Azur','Cymru / Wales','England','Northern Ireland','Scotland','Wales','მცხეთა-მთიანეთი','საქართველო (GE)','Georgia / საქართველო (GE)','Bono East Region','Αποκεντρωμένη Διοίκηση Αιγαίου','Αποκεντρωμένη Διοίκηση Αττικής','Αποκεντρωμένη Διοίκηση Ηπείρου - Δυτικής Μακεδονίας','Αποκεντρωμένη Διοίκηση Θεσσαλίας - Στερεάς Ελλάδας','Αποκεντρωμένη Διοίκηση Θεσσαλίας - Στερεάς Ελλάδος','Αποκεντρωμένη Διοίκηση Κρήτης','Αποκεντρωμένη Διοίκηση Πελοποννήσου, Δυτικής Ελλάδας και Ιονίου','Αττική','Θεσσαλία - Στερεά Ελλάδα','Κρήτη','Guatemala','Hrvatska (HR)','Département du Sud-Est','Magyarország (HU)',' (HU)','Daerah Istimewa Yogyakarta','Jawa Barat','Sumatera Selatan','Éire / Ireland (IE)','Ireland (IE)','מחוז המרכז','מחוז הצפון','מחוז חיפה','מחוז תל אביב','Isle of Man (IM)','Bihar','Chhattisgarh','Delhi','Haryana','Karnataka','Maharashtra','Odisha','Uttar Pradesh','استان تهران','استان سیستان و بلوچستان','Ísland (IS)','Abruzzo','Calabria','Campania','Emilia-Romagna','Friuli Venezia Giulia','Lazio','Liguria','Lombardia','Marche','Molise','Piemonte','Puglia','Sardegna','Sicilia','Toscana','Trentino-Alto Adige/Südtirol','Umbria','Valle d''Aosta/Vallée d''Aoste','Veneto','Italia (IT)','عمان','東京都','福岡県','日本 (JP)','Machakos','Nairobi','Nyeri','Джалал-Абадская область','Иссык-Кульская область','Чуйская область','Кыргызстан (KG)','Kyrgyzstan (KG)','경기도','전라북도','대한민국 (KR)','حولي','Костанайская область','Kazakhstan (KZ)','Казахстан (KZ)','Қазақстан (KZ)','ນະຄອນຫຼວງວຽງຈັນ','Liechtenstein (LI)','Montserrado County','Kauno apskritis','Klaipėdos apskritis','Vilniaus apskritis','Luxembourg (LU)','Lëtzebuerg (LU)','Kurzeme','Latgale','Vidzeme','Zemgale','Latvija (LV)','Maroc (MA)','Monaco (MC)','Municipiul Chișinău','Crna Gora / Црна Гора (ME)','Analamanga','Вардарски СР','Југозападен СР','Североисточен СР','Скопски регион','Скопски СР','Улаанбаатар','Baja California','Baja California Sur','CDMX','Ciudad de México','Colima','Estado de México','Morelos','Nuevo León','Oaxaca','Querétaro','Johor','Terengganu / ترڠڬانو','Malaysia (MY)','Niger (NE)','Bayelsa','Edo','Federal Capital Territory','Drenthe','Flevoland','Fryslân','Gelderland','Groningen','Noord-Brabant','Noord-Holland','Overijssel','Utrecht','Zeeland','Zuid-Holland','Nederland (NL)','Norge (NO)','Nepal (NP)','Auckland','Canterbury','Waikato','Wellington','New Zealand (NZ)','Junín','Lima','Philippines (PH)','پنجاب','dolnośląskie','kujawsko-pomorskie','łódzkie','lubelskie','małopolskie','mazowieckie','opolskie','podkarpackie','pomorskie','śląskie','świętokrzyskie','warmińsko-mazurskie','wielkopolskie','województwo dolnośląskie','województwo kujawsko-pomorskie','województwo łódzkie','województwo lubelskie','województwo lubuskie','województwo małopolskie','województwo mazowieckie','województwo opolskie','województwo podkarpackie','województwo podlaskie','województwo pomorskie','województwo śląskie','województwo świętokrzyskie','województwo warmińsko-mazurskie','województwo wielkopolskie','województwo zachodniopomorskie','Poland (PL)','Alentejo','Algarve','Área Metropolitana de Lisboa','Centro','Norte','Portugal (PT)','Municipiul București','România (RO)','Војводина','Централна Србија','Адыгея','Амурская область','Архангельская область','Астраханская область','Башкортостан','Владимирская область','Волгоградская область','Воронежская область','Ивановская область','Иркутская область','Кабардино-Балкария','Калужская область','Камчатский край','Кемеровская область','Кировская область','Костромская область','Краснодарский край','Красноярский край','Курская область','Ленинградская область','Липецкая область','Мордовия','Москва','Московская область','Нижегородская область','Новосибирская область','Омская область','Пермский край','Республика Бурятия','Республика Карелия','Республика Саха (Якутия)','Республика Хакасия','Ростовская область','Рязанская область','Самарская область','Санкт-Петербург','Саратовская область','Свердловская область','Севастополь','Смоленская область','Ставропольский край','Татарстан','Тверская область','Томская область','Тульская область','Ульяновская область','Хабаровский край','Челябинская область','Ямало-Ненецкий автономный округ','Ярославская область','Blekinge län','Dalarnas län','Gävleborgs län','Gotlands län','Hallands län','Jämtlands län','Jönköpings län','Kalmar län','Kronobergs län','Norrbottens län','Örebro län','Östergötlands län','Skåne','Skåne län','Södermanlands län','Stockholms län','Uppsala län','Värmlands län','Västerbottens län','Västernorrlands län','Västmanlands län','Västra Götalands län','Sverige (SE)','Singapore (SG)','Slovenija (SI)','Banskobystrický kraj','Bratislavský kraj','Košický kraj','Nitriansky kraj','Nitrianský kraj','Prešovský kraj','Trenčiansky kraj','Trenčianský kraj','Žilinský kraj','Nugaal نوجال','Sila سيلا','กรุงเทพมหานคร','จังหวัดขอนแก่น','จังหวัดพิษณุโลก','จังหวัดอุดรธานี','จังหวัดกำแพงเพชร','จังหวัดเชียงใหม่','จังหวัดสมุทรปราการ','จังหวัดนครศรีธรรมราช','จังหวัดประจวบคีรีขันธ์','Душанбе','Akdeniz Bölgesi','Ege Bölgesi','İç Anadolu Bölgesi','Marmara Bölgesi','Türkiye (TR)','桃園市','Taiwan (TW)','臺灣 (TW)','Дніпропетровська область','Донецька область','Запорізька область','Івано-Франківська область','Київська міська громада','Київська область','Кіровоградська область','Львівська область','Одеська область','Рівненська область','Тернопільська область','Харківська область','Херсонська область','Хмельницька область','Черкаська область','Чернівецька область','Україна (UA)','Arizona','Arkansas','California','Colorado','District of Columbia','Florida','Illinois','Indiana','Kentucky','Maine','Maryland','Massachusetts','Michigan','Minnesota','Missouri','Nevada','New Hampshire','New Jersey','New York','Ohio','Oklahoma','Oregon','Pennsylvania','Tennessee','Texas','United States Virgin Islands','Utah','Virginia','Washington','West Virginia','Hà Tĩnh','Thành phố Hồ Chí Minh','Việt Nam (VN)','Komuna e Prishtinës / Opština Priština','Kosova (XK)','Kosova / Kosovo (XK)','Free State','Gauteng','KwaZulu-Natal','Mpumalanga','Northern Cape','Western Cape') AND osm_city != '' ORDER BY osm_country_code, osm_state, osm_city

While it might have been okay three years ago to design the machinery like that, it might well be the case that the growing number of countries and associated states will lead to a significant bottleneck here.

Thoughts

We should take some actions on this.

  1. Investigate whether those queries are properly designed and improve the situation if applicable.
  2. Investigate why those queries are submitted multiple times and mitigate that.
  3. Introduce appropriate caching at the respective places, if possible.
1 Like

Okay this helps. If I only select the city, while all countries and regions are selected that would then result to a long query. Now I have narrowed to GB, England, and then the city. Loading time is now 6-7 seconds.

1 Like

Excellent. Thanks for the quick self-service ;]. If that is acceptable for the launch of your site, we might be able to postpone further investigations?

Nevertheless, thanks for bringing up this topic. We also want to save computing resources by optimizing the procedures how data is assembled for the benefit of all parties involved.

Yes, fab right now, thanks so much.

1 Like