Confluence Jmeter performance script

Recently for a project we needed to measure the performance of an instance of Confluence for a certain number of concurrent users.

Fortunately Atlassian releases a procedure to measure the performance using  Jmeter here. The latest script version we used is 4.2.2 which has been released on 27th of August with Confluence 4.3.1

The script needs some fixes:

  • it doesn’t save the session on the Remote API and then operations like Create Personal Space and Grant View on Personal Space fail to connect because of the rpc token
  • the labels used as tags in Confluence are not the same (we used demonstration and sales)
  • the Browsse User Status operation has an incomplete Response Assertion
  • When deleting  the space, operation that can take some time,  the script doesn’t wait in a loop so it can’t remove some users and also when deleting a space Confluence doesn’t go back to the Dashboard but instead stays on the page

Further I improved the script giving the possibility:

  • to create users from Crowd, using a new command line parameter -Jenable.sso=true, which is false by default
  • to use https in case Confluence is setup with https instead of http, using a new command like parameter -Jconfluence.protocol=https, which is http by default

Therefore, after you download the script (with the resources) , just remember to adapt the Crowd configuration (parameter -Jcrowd.host) and that the operation Create User from Crowd expect to have Crowd under the same ip address of Confluence (you can of course change it).

Web, javascript e performance

Oggigiorno il web sta assistendo ad una evoluzione dal punto di vista delle performance. Evoluzione che è determinata in parte dall’uso di Javascript (e quindi spostamento del carico dal server al client) e in parte dall’annunciato standard HTML 5 che permette evoluzioni come webgl spingendo i browser a diventare migliori ma anche a fare i conti con le prestazioni.

Possiamo in definitiva avere 3 tipi di evoluzioni dal punto di vista delle performance:

  1. Performance dei client (browser)
  2. Performance del codice scritto per client e server
  3. Performance dei server (dal punto di vista dei client)

Performance dei browser

E’  in questo periodo che con l’uso, magari anche smoderato, di Javascript e con l’implementazione dello standard HTML 5 assistiamo ad una competizione tra i browser per quanto riguarda le performance ed in particolar modo quelle cosi tanto pubblicizzate di Chrome e ora anche di Opera 10.50.

Performance del codice scritto per i browser e per i server

Ovviamente questo campo è molto delicato perchè dipende dalle capacità dei programmatori. Se prima cercavamo di ottimizzare il codice lato server per scrivere perfertte pagine dinamiche ora, poichè esistono librerie come Jquery, che permetto di essere espandibili, la programmazione si è spostata sul fronte Javascript (a tal proposito ho trovato questo articolo dove si suggeriscono metodi per incrementare le performance con il codice JQuery)

Software come Netbeans e Aptana ad esempio permettono ora l’autocompletamento del codice con quindi una relativa facilità nella scrittura.

Performance dei server (dal punto di vista dei client)

In questo campo ci sono molti aspetti da tenere in considerazione. Quando vogliamo che un sito web sia veloce possiamo intendere:

  • numero di connessioni http
  • numero di immagini, javascript, CSS da caricare
  • ordine in cui caricare javascript e CSS

Esistono diverse misure per fare ridurre il carico. Prima di tutto vi consiglio di usare Firebug che con un diagramma temporale vi fa notare come le varie risorse vengono caricate.

Sulla base di Firebug esistono poi Yslow e Page speed che assegnano dei punteggi alle pagine web in base a come sono strutturate e suggeriscono come migliorare il caricamento delle pagine, come ad esempio:

  • combinare diversi javascript se possibile e minimizzare il codice (in pratica il codice javascript risulta su 1 o poco più linee cosi da essere caricato velocemente (ovviamente questo lo rende illegibile)
  • combinare diversi CSS, minimizzare il codice e rimuovere quello non usato; un piccolo aiuto può venire anche da DustMeSelector un plugin di firefox che, stando a quello che dice, tramite il file sitemap permette di analizzare il CSS delle pagine e vedere quello non usato.
  • combinare le immagini e minimizzare le immagini, a tal proposito è possibile talvota che in presenza di piccole immagini è più il tempo sprecato per le connessioni http che quello di caricare una immagine, vi consiglio perciò di dare una occhiata a SpriteMe

C’è da dire che Page Speed nasce dopo Yslow o comunque dopo che Steve Souders, scrittore del libro High Performance Web Sites è passato da Yahoo a Google, consiglio di avere entrambi.

Inoltre si sta facendo strada le reti CDN, che non sono altro che un sistema di load balancing dal punto vista geografico. Prima fra tutte Google che, avendo a disposizione server in tutti il mondo, vi permette di non fare caricare le librerie javascript dal vostro sito ma da uno dei tanti server sparsi, vedete la lista delle librerie nel sito. A voi la scelta se passare da Google o no.

Ora cercate di non diventare troppo maniaci delle performance :-)