ceskaexpedice / kramerius

System Kramerius
GNU General Public License v3.0
45 stars 26 forks source link

K7 a lp.xml - konfigurace spouštěných procesů #987

Closed mduda100871 closed 1 year ago

mduda100871 commented 1 year ago

Zdravím,

v K5 se používal pro nastavení parametrů spouštěných procesů konfigurační soubor ~/.kramerius4/lp.xml.

Využíval jsem ho zejména k nastavení velikosti heapu např. u indexovacího procesu.

Teď potřebuji nastavit velikost heapu u indexeru v K7, ale podle všeho se lp.xml buď už nepoužívá nebo používá/konfiguruje jinak.

Vygrepoval jsem zdrojové kódy K7 jádra, ale jediný výskyt lp.xml jsem nalezl na cestě pro testy:

kramerius/shared/common/src/main/test/lp.xml

Zkusil jsem nastavit parametry indexeru analogicky jako v K5 :

...
    <process>
        <id>NewIndexerProcessIndexObject</id>
        <description>NewIndexerProcessIndexObject</description>
        <mainClass>cz.kramerius.searchIndex.NewIndexerProcessIndexObject</mainClass>
        <standardOs>lrOut</standardOs>
        <errOs>lrErr</errOs>
        <javaProcessParameters>-server -Xmx3g -Xms512m -XX:+UnlockExperimentalVMOptions -XX:+UseZGC -XX:+UseLargePages -XX:+UseHugeTLBFS</javaProcessParameters>
    </process>
...

Ale jádro K7 to ignoruje - když spustím indexaci, tak proces má stále nastavené nějaké defaultní hodnoty, např. heap jen na 1GB.

Jaký je tedy správný postup?

Díky, MD

mduda100871 commented 1 year ago

Doplnění - bylo by velice dobré, kdyby se zároveň dalo ovlivnit, jakou instanci JVM spuštěný proces využije.

Aktuálně je to tak, že proces je spuštěn nad systémovou/globální instancí JVM což není vždy optimální a nepřišel jsem na to, jak lokálně přetížit globální JVM.

Hlavní vlákno K7 používá JVM nad kterým běží Tomcat, což se dá naopak snadno nastavit.

MD

vlahoda commented 1 year ago

Ahoj Martine, na definicich a spousteni procesu se mezi K5 a K7 nic zasadniho nezmenilo. Defaultni definice jsou stejne jako driv v sablonovem souboru lp.st, ktery je v /shared/common/src/main/java/cz/incad/kramerius/processes/res. Upravene definice se stejne jako driv vytvareji v .kramerius4/lp.xml. Tvoji definici procesu to ignoruje, protoze nemas spravne id procesu, ma to byt new_indexer_index_object.

JDK, pod kterym maji procesy bezet, se nastavit neda, mozna namet na vylepseni ? - @pavel-stastny

Nejjednodussi reseni je ale pouzit Docker, kde muzes JDK definovat na urovni kontejneru.

Prikladam jeste deifnici tech novych indexacnich procesu, at to nemusis hledat v lp.st:

<process>
        <id>new_indexer_index_object</id>
        <description>(re)indexace objektu v novém vyhledávacím indexu</description>
        <mainClass>cz.kramerius.searchIndex.NewIndexerProcessIndexObject</mainClass>
        <standardOs>lrOut</standardOs>
        <errOs>lrErr</errOs>
        <javaProcessParameters>-Xmx1024m -Xms256m</javaProcessParameters>
        <!--tohle neni definice ocekavanych parametru, ale hardcoded parametry pred temi predavanymi-->
        <!--<parameters>duration processesInBatch finalState</parameters>-->
        <checkErrorStream>false</checkErrorStream>
        <securedaction>a_index</securedaction>
    </process>

    <process>
        <!-- identifikator  -->
        <id>new_indexer_index_model</id>
        <description>(re)indexace modelu v novém vyhledávacím indexu</description>
        <mainClass>cz.kramerius.searchIndex.NewIndexerProcessIndexModel</mainClass>
        <standardOs>lrOut</standardOs>
        <errOs>lrErr</errOs>
        <javaProcessParameters>-Xmx1024m -Xms256m</javaProcessParameters>
        <!--tohle neni definice ocekavanych parametru, ale hardcoded parametry pred temi predavanymi-->
        <!--<parameters>duration processesInBatch finalState</parameters>-->
        <checkErrorStream>false</checkErrorStream>
        <securedaction>a_index</securedaction>
    </process>
mduda100871 commented 1 year ago

Ahoj,

tušil jsem, že jsem to jen špatně nastavil, protože jsem neměl dostatek informací - vyzkouším.

Ohledně JDK - už jsem o tom před časem s Pavlem mluvil, ale v návalu jiných věcí to asi zapadlo, asi by bylo dobré to zařadit na TODO list.

MD

mduda100871 commented 1 year ago

tak dobré, proces už se spustil s upravenými parametry :)

MD

pavel-stastny commented 1 year ago

@mduda100871 @vlahoda Jenom doplním, že Issue na nastavení vlastní JVM pro procesy je zde #957

vlahoda commented 1 year ago

prima, tak tohle muzem zavrit