FEWS Lunchlezing Delft-FEWS Database Analyse Marc van Dijk April 20, 2015 Aanleiding • • Performance problemen bij klanten Grote localdatastores (OC en FSS) • • Workflows lijken langer te duren FEWS OC hangt af en toe • Klachten zowel bij gebruik Localdatastore en Direct Database Access Analyse uitgevoerd bij enkele gebruikers • FEWS Scotland (Micha) - document • NFFS NorthEast (Marc) - document • HyFS (Marc) – memo • FEWS FOEN (Simone, Marc) April 20, 2015 Grote localdatastore / centrale database Wat is een grote database? • • FSS localdatabase > 3-5 GB • Uitzondering kan zijn een systeem waarbij enkele grote grids gebruikt worden • Probleem meestal in dynamische tabellen, soms ook statische config tabellen Enkele tabellen hebben veel records • TimeSeries > 1 miljoen records • Streef naar max van 500.000 – 600.000 • ThresholdEvents > 250.000 • Reports • WarmStates • Logentries April 20, 2015 Tools binnen Delft-FEWS software Er zijn een aantal FEWS (debug) opties die veel informatie geven • About box • F12 – Q database > log database table spaces of > database info April 20, 2015 Tools binnen Delft-FEWS software • FEWS log meldingen: Log.txt op de FSS • Scan de tijd die verschillende modules doen over bewerkingen • Scan tijd die opstarten en afsluiten van een FSS duurt • Database Viewer • FEWS VJDBC Server en DBVisualiser (procedure staat op WIKI) • Werkt alleen op localdatastore • Bij DDA, download eerst database met replicate functie (F12 – database) April 20, 2015 Tools binnen Delft-FEWS software • Admin Interface tools April 20, 2015 Analyse NFFS - NorthEast Probleem NFFS: performance van NFFS regio systemen gaat achteruit • Waarschijnlijk gevolg van grotere databases • Eerste analyse: NFFS Northeast Conclusies • Database is niet heel groot (2.5-3 GB) • Verouderde configuratie; enkele nieuwe FEWS functies niet gebruikt • Grootste problemen bij: • ModuleDataSets (veel verschillende versies van oude config) • ThresholdEvents (veel records in tabel, lange tijd opgeslagen) • Reports (500 MB reports worden in database opgeslagen) • TimeSeries (vooral probleem van grote grids en external historical) April 20, 2015 Analyse NFFS - NorthEast Statische Configuratie • FEWS database is geen SVN repository • Zorg ervoor dat configuratie regelmatig worden opgeschoond • Vooral ModuleDataSets kunnen veel volume hebben • Effect vooral zichtbaar op FSS localDataStore, is replica van hele database Module Instance Total Size database (MBytes) Northeast_Modules Number of moduleinstance datasets in database (-) 9 Northeast_Modules_Triton 7 59.19 R_Part4_Module 1 10.38 R_Part2_Module 1 10.17 R_Part3_Module 1 4.21 R_Part1_Module 1 3.84 Northeast_ColdStates 8 2.61 Northeast_HFPT_Modules 1 2.53 Report_Export 14 1.71 Report_Export_ZIPFile 14 1.71 ISIS_Don_Forecast 2 0.50 Northeast_Reports 1 0.12 Report_Export_System_ZIPFile 1 0.02 ISIS_Gaunless_Forecast 3 0.01 April 20, 2015 67.34 in Analyse NFFS - NorthEast ThresholdEvents • Worden gelogd door FEWS Thresholdmodule in workflows • Gebruikt in Skillscores module en event logging (enhanced forecasting) • Gebruik Thresholdmodule alleen in workflows die relevant zijn • Zet eventExpiryTime in Thresholds configuratie (default 365 dagen) • NorthEast: Checking the log messages show that this module consumes about 70% of the runtime of an import workflow (40 seconds). April 20, 2015 Analyse NFFS - NorthEast HTML reports • HTML Reports worden meestal in database opgeslagen • Expiry time is FEWS default = 1 dag • • NorthEast: 500 MB reports worden in database opgeslagen Effect alleen op FSS localDatastore • Nieuwe FEWS ontwikkeling nodig: “Set the expirytime of reports to a period < 1 day or temporary” Module Instance Report_Fluvial_Locations Number of reports in database (-) 30144 Total Size database (MBytes) 179.53 Report_TRITON 14400 134.01 Report_Coastal 12736 60.70 Report_CoastalStatus 3456 38.35 Report_Fluvial 2304 27.22 Report_Overall 1216 8.41 Report_SystemStatus 256 3.41 Report_Status_Table 256 1.76 Report_Precipitation 192 0.71 Report_ForecastHistory 64 0.09 April 20, 2015 in Analyse NFFS - NorthEast TimeSeries table • Analyse uitgevoerd met VJDBC en DBVisualizer • Kopie van OC localdatastore en FSS localdatastore • Uitvoeren van verschillende queries om te zien waar probleem ligt Query 1: Counts the number and size of records according to time series type • SELECT Count(blobid) as NumBlobs, TimeSeriesType, Sum(blobsize) as BlobSize FROM TimeSeries GROUP BY TimeSeriesType; FSS OC Time series type No. Records (-) Size on Binary Object (MBytes) Average size of record (Bytes) Percentage (%) External Historical External Forecasting Simulated Historical Simulated Forecasting Temporary Total 289443 82750 17028 360478 137 724 9 506 473 8749 544 1404 9.95% 52.61% 0.67% 36.77% 749699 1376 100.00% April 20, 2015 Time series type No. Records (-) Size on Binary Object (MBytes) Average size of record (Bytes) Percentage (%) External Historical External Forecasting Simulated Historical Simulated Forecasting Temporary Total 67198 43695 855 3045 32 373 0 5 478 8541 562 1674 7.82% 90.82% 0.12% 1.24% 114793 411 100.00% Analyse NFFS - NorthEast TimeSeries table Query 2: Counts the number and size of records according to value type (scalar, long., or grid) • SELECT Count(blobid) as NumBlobs, ValueType, Sum(blobsize) as BlobSize FROM TimeSeries GROUP BY ValueType; • FSS • OC Value type No. Records (-) Size on Binary Object (MBytes) Average size of record (Bytes) Percentage Scalar data Gridded Data Total 747899 1800 749699 785 591 1376 1050 328404 329454 57.04% 42.96% 100.00% Value type No. Records (-) Size on Binary Object (MBytes) Average size of record (Bytes) Percentage Scalar data Gridded Data Total 113896 897 126 285 411 1106 317640 318746 30.66% 69.34% 100.00% 114793 April 20, 2015 (%) (%) Analyse NFFS - NorthEast Aanbevelingen: external historical • Verbeter de amalgamate module instance • Maak configuratie transparant; misbruik moduleInstanceId niet • Verwijder processing module instances uit forecast workflows • Voorbeeld: grafiek met records per dag voor 1 jaar • Geeft inzicht in hoe je database zal groeien na config aanpassing April 20, 2015 Analyse NFFS - NorthEast Aanbevelingen: external forecasting • Voor grids: maak grid domein kleiner na import origineel grid • Verander resolutie grids na import • Kijk goed naar valueResolution; geen schijnnauwkeurigheid opslaan • Sla alleen die grids (parameters op) die gebruikt worden • Verander Change <synchLevel>6</synchLevel> naar <synchLevel>7</synchLevel> voor alle grids die op FSS kunnen blijven Parameter No. Records (-) 32 49 49 Size of data Object (MBytes) 10.16 17.04 17.03 Parameter No. Records (-) Size of data Object (MBytes) Pressure.msl Wind.u Wind.v 32 10 10 10.16 2.89 2.95 Pressure.msl Wind.u Wind.v April 20, 2015 Analyse NFFS - NorthEast Aanbevelingen: simulated historical • Geen problemen in NorthEast systeem Let wel op het volgende • Zorg voor expiry times in workflowdescriptors, timeseries en modelstates • Bespreek met gebruiker wat hij hoe lang wil bewaren. • Mijn default expirytime is meestal 30-120 dagen historic data • External Historical: 120 dagen • Workflowdescriptors: 120 dagen voor simulated workflows • Modelstates: volgt Workflowdescriptors • Simulated grids: 2 dagen • Simulated scalars: 10-120 dagen April 20, 2015 Analyse NFFS - NorthEast Aanbevelingen: simulated forecasting • Coastal workflows zorgen voor grootste database load • Zet expiry times op workflowdescriptors • Sommige berekende reeksen worden nergens gebruikt; gebrek aan kennis van modellen • Verplaats external historical processing taken naar import of speciale processing workflow Conclusie NFFS NorthEast • Na aanpassingen van wind grids, thresholdsevents en meteo processing is database grootte met 50% gereduceerd April 20, 2015 Analyse HyFS • • • HyFS werkt met veel meet locaties Import en processing workflow gescheduled elke 3 minuten HyFS werkt met Direct Database Access op FSS en OC (database = 2-3 GB) April 20, 2015 Analyse HyFS • Cache files op OC en FSS moeten geoptimaliseerd worden • Als cache files groot worden neemt geheugen gebruik toe • Als geheugen gebruik toeneemt duren taken langer (Java garbage collector) tot wel 10 keer zo lang! • Controleer regelmatig log op FSS [2015-04-19 23:08:12,061] INFO - TaskRun.run TaskRun.TimeSpend:SecondaryValidation 4s 64% TimeSeriesImport 1s 22% datastore 2s 24% cache files 4.7 MB database 0s 0% (5 ms/query, 13 kB, 52 kB/s, 43 queries, 3249 rows) reloaded 0 B time series read 9030 (unique=7792) time series written 9030 (changed=0) files 0s 0% logging 0s 0% gc 1s 23% cpu 92% max mem. 244 MB db con. acquire time 0s 0% lock. acquire time 0s 0% April 20, 2015 Analyse HyFS Amalgamate is heel belangrijk (getrapt geïmplementeerd, dag, week, maand)) April 20, 2015 Algemene aanbevelingen • Grootste probleem is meestal aantal external historical series • Gebruik ‘nieuw amalgamate’ (getrapte: dag, 1 per week, 1 per maand) • Geen processing in forecast workflows (external historical aanmaken) • Gebruik temporary series waar mogelijk • Discussie met gebruiker wat echt relevant is om te tonen in displays (synchlevel 7 ook mogelijk) • Denk goed na bij gebruik grote grids • Haal relevante informatie uit grid tijdens import • Maak grid groffer voor display • • • Belangrijk: elk klein stukje winst kan later belangrijk blijken te zijn Oplossingen kunnen verschillend zijn voor Synchronisatie en DDA Zorg voor goede afstemming tussen expiry time in operationele database en FEWS Archief April 20, 2015 Hoe verder • • Presentatie zal op speciale (interne) WiKi pagina komen Leren van elkaar: uitwisselen analyses en tips • Tijd nemen in projecten voor het reviewen van elkaars configuratie April 20, 2015