[ca] El creixement experimentat tant per la web com per Internet en els últims anys ha potenciat l'introducció de servidors d'aplicacions dins de la majoria d'entorns d'execució distribuits. El servidors d'aplicacions web porten les aplicacions distribuides un pas endavant pel que fa a accessibilitat, facilitat d'ús i estandardització, mitjançant l'ús dels protocols de comunicació més extesos i proveïnt rics entorns de desenvolupament. Seguint l'evolució dels entorns d'execució dels servidors d'aplicacions, els factors que determinin el seu rendiment també ha evolucionat, amb l'aparició de nous factors relacionats amb la creixent complexitat de l'entorn, mentres que els ja existents que determinaven el rendiment dels servidors d'aplicacions en les etapes inicials d'aquesta tecnologia encara són importants en l'actualitat. Inicialment, el rendiment d'un servidor d'aplicacions era principalment determinat pel comportament de la seva pila d'execució local, que normalment era l'origen de tots els problemes de rendiment. Més tard, quan el middleware va esdevenir més eficient, més càrrega es podia executar en cada instància del servidor d'aplicacions i per tant la gestió d'un nombre gran de clients va resultar ser un nou punt calent en termes de rendiment. Finalment, quan la capacitat d'un node va ser sobrepassada, els entorns d'execució van esdevenir massivament clusteritzats per tal de dividir la càrrega entre un nombre gran d'instàncies de servidors d'aplicacions, fet aquest que va significar que cadascuna de les instàncies havia de rebre una certa quantitat de recursos del sistema. El resultat d'aquest procés és que fins i tot en l'arquitectura de gestió del servei més avançada que pugui ser trobada avui dia, 1) comprendre l'impacte de rendiment causat per la pila d'execució del servidor d'aplicacions, 2) gestionar eficientment les connexions dels clients, i 3) assignar recursos adequadament a cada instància del servidor d'aplicacions, són tres passos incrementals de vital importància per tal d'optimitzar el rendiment d'un entorn tan complex. I donada la mida i complexitat dels centres de processat de dades actuals, tots aquests passos haurien de funcionar de manera automàtica sense necessitat d'intervenció humana. Seguint els tres elements presentats abans, aquesta tesis aporta a la gestió del rendiment dels complexos entorns d'execució per a servidors d'aplicacions tres contribucions: 1) la proposta d'un entorn de monitorització automàtic que proporciona important informació de rendiment dins del contexte d'un sol node; 2) la proposta i evaluació d'un nou disseny arquitectònic per a servidors d'aplicacions que millora l'adaptabilitat en condicions de càrrega variable; i 3) la proposta i evaluació d'una tècnica d'assignació automàtica de recursos per entorns d'execució virtualitzats i clusteritzats. La suma de les tres contribucions proposades en aquesta tesis proporcionen un nou rang d'opcions per a millorar el rendiment del sistema tant off-line (1) com on-line (2 i 3).

[en] The growth experienced by the web and by the Internet over the last years has fuelled web application servers to break into most of the existing distributed execution environments. Web application servers take distributed applications one step forward in their accessibility, easiness of development and standardization, by using the most extended communication protocols and by providing rich development frameworks. Following the evolution of the application server execution environment, the factors that determine their performance have evolved too, with new ones that have come out with the raising complexity of the environment, while the already known ones that determined the performance in the early stages of the application server technology remain relevant in modern scenarios. In the old times, the performance of an application server was mainly determined by the behavior of its local execution stack, what usually resulted to be the source of most performance bottlenecks. Later, when the middleware became more efficient, more load could be put on each application server instance and thus the management of such a large number of concurrent client connections resulted to be a new hot spot in terms of performance. Finally, when the capacity of any single node was exceeded, the execution environments were massively clusterized to spread the load across a very large number of application server instances, what meant that each instance was allocated a certain amount of resources. The result of this process is that even in the most advanced service management architecture that can be currently found, 1) understanding the performance impact caused by the application server execution stack, 2) efficiently managing client connections, and 3) adequately allocating resources to each application server instance, are three incremental steps of crucial importance in order to optimize the performance of such a complex facility. And given the size and complexity of modern data centers, all of them should operate automatically without need of human interaction. Following the three items described above, this thesis contributes to the performance management of a complex application server execution environment by 1) proposing an automatic monitoring framework that provides a performance insight in the context of a single machine; 2) proposing and evaluating a new architectural application server design that improves the adaptability to changing workload conditions; and 3) proposing and evaluating an automatic resource allocation technique for clustered and virtualized execution environments. The sum of the three techniques proposed in this thesis opens up a new range of options to improve the performance of the system both off-line (1) and on-line (2 and 3).