{"id":545,"date":"2019-07-14T14:24:35","date_gmt":"2019-07-14T12:24:35","guid":{"rendered":"http:\/\/www.valeriofinazzo.it\/wordpress\/?p=545"},"modified":"2019-07-14T14:32:02","modified_gmt":"2019-07-14T12:32:02","slug":"vufind-tutorial-10-performance","status":"publish","type":"post","link":"http:\/\/www.valeriofinazzo.it\/wordpress\/2019\/07\/vufind-tutorial-10-performance\/","title":{"rendered":"VUFIND &#8211; TUTORIAL 10 &#8211; PERFORMANCE"},"content":{"rendered":"\n<p>Al crescere dell&#8217;indice da gestire possiamo notare in Vufind un decadime nto delle prestazioni fino al suo completo blocco. La piattaforma presenta pi\u00f9 componenti pertanto gli interventi di tuning coinvolgono sia la componente php\/apache che gestisce il livello di presentazione che la componente java che gestisce l&#8217;indice della nostra biblioteca. Per poter monitorare le performance \u00e8 buona norma mettere in piedi una procedura di stress test che simuli il carico di produzione, per questo vufind consiglia di usare jmeter o WCAT( Web Capacity Analysis Tool) di Microsoft. Per  esigenze ho usato WCAT che, configurato correttamente, permette di simulare n accessi concorrenti con le query pi\u00f9 disparati al fine di valutare il comportamento della nostra piattoforma sotto carico. A questo punto scarichiamo WCAT versione <a href=\"https:\/\/www.iis.net\/downloads\/community\/2007\/05\/wcat-63-x86\">32 bit<\/a> o <a href=\"https:\/\/www.iis.net\/downloads\/community\/2007\/05\/wcat-63-x64\">64 bit<\/a> e configuriamo il nostro client definendo lo scenario tramite un apposito file e il numero di utenti da simulare.<\/p>\n\n\n\n<p>Esempio di file scenario.txt che simula una ricerca libera<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>scenario\n{\n\twarmup = 1;\n\tduration = 120;\n\tcooldown = 20;\n\ttransaction\n\t{\n\t\tid = \"onesearch\";\n\t\tweight = 1000;\n\t\trequest\n\t\t{\n\t\t\turl = \"\/vufind\/Search\/Results?lookfor=\" + rand(\"1\", \"1000000\");\n\t\t\tsecure = false;\n\t\t}\n\t}\n}<\/code><\/pre>\n\n\n\n<p>E&#8217; possibile aggiungere altre transazioni per simulare altre ricerche.<\/p>\n\n\n\n<p>Esempio di file settings.txt che simula 30 utenti<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>settings\n{\n\tvirtualclients = 30;\n}<\/code><\/pre>\n\n\n\n<p>A questo punto potete aprire 2 shell cmd per avviare il testing e ipotizzando che il nostro vufind giri sul nostro localhost scriveremo<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>wcctl -s localhost -t scenario.txt -f settings.txt -c 1<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>wcclient localhost<\/code><\/pre>\n\n\n\n<p>A questo punto il client incomincia ad avviare un utente dopo l&#8217;altro e a simulare le chiamate configurate. A fine esecuzione sar\u00e0 possibile consultare il report che indicher\u00e0 quante richieste sono state effettuate e quante di esse hanno avuto esito positivo. A questo punto per aumentare le prestazioni, se i tempi di risposta non sono soddisfacenti, occorre agire sulla RAM del solr, sul numero di CORE e il tipo di Garbage Collection del nostro server. A questo punto ci viene in soccorso la doc ufficiale di vufind che riporta questo schema di prestazioni per un indice da 8,8 milioni di record:<\/p>\n\n\n\n<table class=\"wp-block-table\"><thead><tr><th>CPU Cores (2.7GHz)<\/th><th>Memory (<abbr title=\"Gigabyte\">GB<\/abbr>)<\/th><th>Garbage Collection<\/th><th>Fresh (Req\/s)<\/th><th>Cached (Req\/s)<\/th><\/tr><\/thead><tbody><tr><td>24<\/td><td>30<\/td><td>ConcMarkSweepGC<\/td><td>327.9<\/td><td>705.9<\/td><\/tr><tr><td>24<\/td><td>30<\/td><td>G1GC<\/td><td>93.3<\/td><td>167.5<\/td><\/tr><tr><td>24<\/td><td>30<\/td><td>ParallelGC<\/td><td>320.6<\/td><td>701.2<\/td><\/tr><tr><td>24<\/td><td>8<\/td><td>ConcMarkSweepGC<\/td><td>205.5<\/td><td>780.0<\/td><\/tr><tr><td>24<\/td><td>8<\/td><td>G1GC<\/td><td>64.0<\/td><td>147.2<\/td><\/tr><tr><td>24<\/td><td>8<\/td><td>ParallelGC<\/td><td>250.7<\/td><td>788.3<\/td><\/tr><tr><td>2<\/td><td>30<\/td><td>ConcMarkSweepGC<\/td><td>81.1<\/td><td>161.4<\/td><\/tr><tr><td>2<\/td><td>30<\/td><td>G1GC<\/td><td>65.6<\/td><td>123.9<\/td><\/tr><tr><td>2<\/td><td>30<\/td><td>ParallelGC<\/td><td>75.6<\/td><td>220.9<\/td><\/tr><\/tbody><\/table>\n\n\n\n<p>Il report evidenzia la differenza di prestazione tra le ricerche nuove e le ricerche mantenute in cache.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Al crescere dell&#8217;indice da gestire possiamo notare in Vufind un decadime nto delle prestazioni fino al suo completo blocco. La piattaforma presenta pi\u00f9 componenti pertanto gli interventi di tuning coinvolgono sia la componente php\/apache che gestisce il livello di presentazione che la componente java che gestisce l&#8217;indice della nostra biblioteca. Per poter monitorare le performance &hellip; <a href=\"http:\/\/www.valeriofinazzo.it\/wordpress\/2019\/07\/vufind-tutorial-10-performance\/\" class=\"more-link\">Continua la lettura di <span class=\"screen-reader-text\">VUFIND &#8211; TUTORIAL 10 &#8211; PERFORMANCE<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[60],"tags":[],"_links":{"self":[{"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/posts\/545"}],"collection":[{"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/comments?post=545"}],"version-history":[{"count":6,"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/posts\/545\/revisions"}],"predecessor-version":[{"id":551,"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/posts\/545\/revisions\/551"}],"wp:attachment":[{"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/media?parent=545"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/categories?post=545"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/tags?post=545"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}