Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Error: No space left on device Auslagerungsdateien #335

Closed
kglaus opened this issue Dec 2, 2021 · 14 comments
Closed

Error: No space left on device Auslagerungsdateien #335

kglaus opened this issue Dec 2, 2021 · 14 comments
Labels

Comments

@kglaus
Copy link

kglaus commented Dec 2, 2021

Beim validieren von Daten auf geodienste.ch mit dem ilivalidator 1.11.10 gab es für die Gefahrenkarten v1.3 den folgenden Fehler:
Error: java.io.IOException: No space left on device
Error: No space left on device

Dasselbe xtf mit der ilivalidator 1.11.3 kann validiert werden.

Es scheint immer noch Diskrepanzen mit den Auslagerungsdateien in den verschiedene Ilivalidatorversionen zu geben.
@claeis Weisst du woran das liegt? Könntest du in zukünftigen Versionen diese Diskrepanzen ausmerzen oder diesen auf den Grund gehen?

logfile_erfolgreich.txt
logfile_error.txt

@beistehen
Copy link

Die Logfiles sprechen aber von anderen ilivalidator-Versionen:

  • erfolgreich: ilivalidator-1.11.3
  • error: ilivalidator-1.8.1

Zur bemängelten Version 1.11.10 gibts kein Log... 🧐

@kglaus
Copy link
Author

kglaus commented Dec 2, 2021

Vielen Dank für die Rückmeldung. Jetzt sollte das richtige Logfile da sein.

@edigonzales
Copy link
Contributor

Ist sicher was für @claeis. Aber ist es der gleiche Server? Wurde das tmp-Verzeichnis zwischenzeitlich gelöscht?

@kglaus
Copy link
Author

kglaus commented Dec 2, 2021

Der Job-Server wird für jeden Import neu geklont. Das tmp-Verzeichnis ist somit für jeden Import "leer".

@claeis
Copy link
Owner

claeis commented Dec 3, 2021

Also wenn es auf der Platte keinen Platz mehr hat, hat es keinen Platz mehr. Was soll ich genau machen?

@edigonzales
Copy link
Contributor

edigonzales commented Dec 3, 2021

So wie ich es verstehe, funktioniert es unter den identischen Plattenplatzvoraussetzungen mit einer bestimmten ilivalidator-Version. Mit einer neueren nicht mehr.

Falls am Code diesbezüglich nichts geändert wurde, sind wohl die Bedingungen doch nicht ganz gleich.

@beistehen
Copy link

Falls am Code diesbezüglich nichts geändert wurde, sind wohl die Bedingungen doch nicht ganz gleich.

Hilfreich wäre, wenn man die fehlerhafte Validierung nachstellen könnte, also mit .ili aus dem Repo, .xtf und config.toml...

@claeis
Copy link
Owner

claeis commented Dec 6, 2021

Es ist normal, dass die verschiedenen Versionen nicht gleich viel Platz auf dem Disk benötigen.

  • mehr Platz wird benötigt, wenn mehr Zwischenresultate ausgelagert werden (um RAM zu sparen; um gössere Datein mit weniger RAM prüfen zu können)
  • weniger Platz wird benötigt, wenn am Auslagerungsmechanismus etwas verbessert wird

Beides kommt vor.

@kglaus
Copy link
Author

kglaus commented Dec 13, 2021

Ich denke das Ticket kann geschlossen werden.

@kglaus kglaus closed this as completed Dec 13, 2021
@kglaus
Copy link
Author

kglaus commented Dec 16, 2021

Ich habe einmal die Speicherauslastung meines Clients geloggt, währen die Ilivalidator Versionen 1.11.12 sowie 1.11.3 mit einem Gefahrenkartenfile durchgelaufen sind.
Die Unterschiede in der Speicherauslastung sind schon sehr gross:

Vergleich_ilivalidator.txt

Die Auslagerungsdatei für 1.11.12 ist doppelt so gross wie für 1.11.3. Zu bemerken ist noch, dass das Testfile nur circa 1/4 der originalen Daten enthielt.

Zusatzfragen:
Ist es möglich die Auslagerungsdatei in einen S3-Bucket zu schreiben? Falls nein, wäre so etwas sinnvoll und machbar?

@kglaus kglaus reopened this Dec 16, 2021
@claeis
Copy link
Owner

claeis commented Jun 20, 2022

Bitte mit aktuellem SNAPSHOT laufen lassen (inkl. --trace). Im Log sollte dann stehen, wie gross die Auslagerungsdateien sind.

@claeis
Copy link
Owner

claeis commented Jun 21, 2022

Problem scheint die Auslagerung der Beziehungen zu sein:

XTF file: size 10'026'240'112
ObjectPool: size 5'558'285'650
LinkPool KEY: size 16'557'892'252
LinkPool VAL: size 300'844'584

@dkottmann
Copy link

@claeis (cc: @kglaus )

Weiterer Use-Case Lärmempfindlichkeitsstufen Kanton NW:

Auszug Log bei File st_laermempfindlichkeitsstufen_mgdm_v1_2.xtf:

06.04.2023 12:52:51: Info: --logtime: unknown option; ignored
Info: ilivalidator-1.11.13-c324518be0b3f03e347b86ddba1a7fcf33757446
Info: ili2c-5.2.5-b1471c2815bd6f7703c39f0de059eb083e194448
Info: iox-ili-1.21.9-5a42f4e2e39d49e9fc61497e5cfe0fb13abe0205
Info: User <www-data>
Info: Start date 2023-04-06 12:48
Info: maxMemory 1864192 KB
Info: dataFile </var/file_data/ili_agg_imports/uploads/npl_laermempfindlichkeitsstufen_v1_2/nw/upload_LV95_1680773419/st_laermempfindlichkeitsstufen_mgdm_v1_2.xtf>
Info: pluginFolder </opt/ili/ilivalidator-1.11.13/plugins>
Info: modeldir </var/www/geodienste-config/ili_agg/ili/npl_laermempfindlichkeitsstufen_v1_2;http://models.interlis.ch/>
Info: lookup model <GeometryCHLV03_V1> 2.3 in repository </var/www/geodienste-config/ili_agg/ili/npl_laermempfindlichkeitsstufen_v1_2/>
Info: lookup model <GeometryCHLV03_V1> 2.3 in repository <http://models.interlis.ch/>
Warning: model SIA405_Base_f_MN95: no version without precursor; model ignored
Warning: model SIA405_Base: no version without precursor; model ignored
Warning: model SIA405_Base_f: no version without precursor; model ignored
Warning: model SIA405_Base_LV95: no version without precursor; model ignored
Warning: model Base: no version without precursor; model ignored
Warning: model Base_LV95: no version without precursor; model ignored
Warning: model Base_f: no version without precursor; model ignored
Warning: model Base_f_MN95: no version without precursor; model ignored
Info: lookup model <GeometryCHLV03_V1> 2.3 in repository <http://models.geo.admin.ch/>
Warning: model Messorte_V1: no version without precursor; model ignored
Info: lookup model <Laermempfindlichkeitsstufen_V1_2> 2.3 in repository </var/www/geodienste-config/ili_agg/ili/npl_laermempfindlichkeitsstufen_v1_2/>
Info: lookup model <InternationalCodes_V1> 2.3 in repository </var/www/geodienste-config/ili_agg/ili/npl_laermempfindlichkeitsstufen_v1_2/>
Info: lookup model <InternationalCodes_V1> 2.3 in repository <http://models.interlis.ch/>
Info: lookup model <InternationalCodes_V1> 2.3 in repository <http://models.geo.admin.ch/>
Info: lookup model <Units> 2.3 in repository </var/www/geodienste-config/ili_agg/ili/npl_laermempfindlichkeitsstufen_v1_2/>
Info: lookup model <Units> 2.3 in repository <http://models.interlis.ch/>
Info: lookup model <CoordSys> 2.3 in repository </var/www/geodienste-config/ili_agg/ili/npl_laermempfindlichkeitsstufen_v1_2/>
Info: lookup model <CoordSys> 2.3 in repository <http://models.interlis.ch/>
Info: lookup model <CHAdminCodes_V1> 2.3 in repository </var/www/geodienste-config/ili_agg/ili/npl_laermempfindlichkeitsstufen_v1_2/>
Info: lookup model <CHAdminCodes_V1> 2.3 in repository <http://models.interlis.ch/>
Info: lookup model <CHAdminCodes_V1> 2.3 in repository <http://models.geo.admin.ch/>
Info: ilifile </var/www/.ilicache/models.interlis.ch/refhb23/Units-20120220.ili>
Info: ilifile </var/www/.ilicache/models.interlis.ch/refhb23/CoordSys-20151124.ili>
Info: ilifile </var/www/.ilicache/models.geo.admin.ch/CH/CHBase_Part2_LOCALISATION_V1.ili>
Info: ilifile </var/www/.ilicache/models.geo.admin.ch/CH/CHBase_Part1_GEOMETRY_V1.ili>
Info: ilifile </var/www/.ilicache/models.geo.admin.ch/CH/CHBase_Part4_ADMINISTRATIVEUNITS_V1.ili>
Info: ilifile </var/www/geodienste-config/ili_agg/ili/npl_laermempfindlichkeitsstufen_v1_2/Laermempfindlichkeitsstufen_V1_2.ili>
Info: validate data...
Info: assume unknown external objects
Info: only multiplicity validation relaxable
Info: first validation pass...
Info: second validation pass...
Info: validate unique constraint Localisation_V1.MultilingualText.Constraint1...
Info: validate mandatory constraint LocalisationCH_V1.LocalisedText.Constraint1...
Info: validate unique constraint Laermempfindlichkeitsstufen_V1_2.MultilingualUri.Constraint1...
Info: validate multiplicity of role Laermempfindlichkeitsstufen_V1_2.Geobasisdaten.Geometrie_Dokument.Geometrie...
Info: validate multiplicity of role Laermempfindlichkeitsstufen_V1_2.Geobasisdaten.Typ_Dokument.Typ...
Info: validate mandatory constraint Laermempfindlichkeitsstufen_V1_2.Geobasisdaten.Typ.Constraint1...
Info: validate multiplicity of role Laermempfindlichkeitsstufen_V1_2.Geobasisdaten.Typ_Geometrie.Geometrie...
Info: validate multiplicity of role Laermempfindlichkeitsstufen_V1_2.Geobasisdaten.Typ_Dokument.Dokument...
Info: validate target of role Laermempfindlichkeitsstufen_V1_2.Geobasisdaten.Typ_Geometrie.Typ...
Info: validate multiplicity of role Laermempfindlichkeitsstufen_V1_2.Geobasisdaten.Typ_Geometrie.Typ...
Info: validate multiplicity of role Laermempfindlichkeitsstufen_V1_2.Geobasisdaten.Geometrie_Dokument.Dokument...
Info: validate AREA Laermempfindlichkeitsstufen_V1_2.Geobasisdaten.Laermempfindlichkeit_Zonenflaeche.Geometrie...
Info: /var/file_data/ili_agg_imports/uploads/npl_laermempfindlichkeitsstufen_v1_2/nw/upload_LV95_1680773419/st_laermempfindlichkeitsstufen_mgdm_v1_2.xtf: Laermempfindlichkeitsstufen_V1_2.Geobasisdaten BID=b2
Info:     261 objects in CLASS Laermempfindlichkeitsstufen_V1_2.Geobasisdaten.Laermempfindlichkeit_Zonenflaeche
Info:       6 objects in CLASS Laermempfindlichkeitsstufen_V1_2.Geobasisdaten.Typ
Info: /var/file_data/ili_agg_imports/uploads/npl_laermempfindlichkeitsstufen_v1_2/nw/upload_LV95_1680773419/st_laermempfindlichkeitsstufen_mgdm_v1_2.xtf: Laermempfindlichkeitsstufen_V1_2.Rechtsvorschriften BID=b1
Info:       1 objects in CLASS Laermempfindlichkeitsstufen_V1_2.Rechtsvorschriften.Dokument
Info: /var/file_data/ili_agg_imports/uploads/npl_laermempfindlichkeitsstufen_v1_2/nw/upload_LV95_1680773419/st_laermempfindlichkeitsstufen_mgdm_v1_2.xtf: Laermempfindlichkeitsstufen_V1_2.TransferMetadaten BID=b3
Info: ...validation done

gesamtes Logfile hier:
log.txt

Monitoring Disk-Storage der betroffenen VM:
image

Mit 200 GB verfügbarem Storage und bei einer Laufzeit von ca. 7h30min hat die Validierung dieser Datei (nur 268 Objekte!) funktioniert.

XTF: Darf ich hier nicht bereitstellen, Nutzungsbedingungen Kanton NW. --> nach Absprache mit NW per Mail direkt an @claeis

Andere Files zum selben Modell mit einer x-Fachen Anzahl von Objekten validieren auf derselben VM in wenigen Sekunden.

@claeis könntest du diesen spezifischen Fall anschauen? (Issue ggf. auf KGK resp. KKGEO taggen)

@claeis
Copy link
Owner

claeis commented Apr 14, 2023

Ich kann es nicht reproduzieren. Bei mir dauert die vollständige Validierung gut 3min.

Mit --trace erhält man am Ende der Validierung auch die Dateigrössen der Auslagerungsdateien:

 Info: close(): LinkPool KEY: size 522, filesize 303529
 Info: close(): LinkPool VAL: size 6264
 Info: close(): CompoundCurveNoder KEY: size 363647, filesize 1417204
 Info: close(): CompoundCurveNoder VAL: size 2294485320
 Info: close(): ObjectPool: size 2235942
 Info: close(): ObjectPool: size 508
 Info: close(): ItfAreaPolygon2Linetable: size 1969252
 Info: close(): CompoundCurveNoder: size 0

M.E. auch nicht wirklich dramatisch, ausser vielleicht "CompoundCurveNoder VAL: size 2294485320" (=Auslagerungsdatei für die Geometrien bei der AREA-Prüfung)

Das kann man somit reduzieren, indem man die Prüfung des SET CONSTRAINT bei der Klasse Laermempfindlichkeit_Zonenflaeche ausschaltet. Also ein Konfig-File mit:

 [Laermempfindlichkeitsstufen_V1_2.Geobasisdaten.Laermempfindlichkeit_Zonenflaeche.Constraint1]
 check=off

Dann dauert die Validierung noch 20 sek. Und

 Info: close(): LinkPool KEY: size 522, filesize 303529
 Info: close(): LinkPool VAL: size 6264
 Info: close(): ObjectPool: size 2235942
 Info: close(): ObjectPool: size 508

@claeis claeis added the KKGEO label Apr 20, 2023
claeis added a commit to claeis/iox-ili that referenced this issue Apr 21, 2023
@claeis claeis closed this as completed Dec 22, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

5 participants