Analysera prestanda i Enterprise Javabeans

April 21

Analysera prestanda är förmodligen en av de mest komplexa uppgifter i utformningen av alla program. Det är en inexakt vetenskap eftersom det finns många faktorer som spelar in. Dessa kompletteras i Enterprise Javabeans (EJB) applikationer, där prestanda beror till stor del på genomförandet av EJB container du använder. Summan av kardemumman är att du inte kan veta om du gör prestandabeslut rätt tills du testa dem.

Följande är några frågor som du bör ha i åtanke när man överväger prestandaproblem:

  • Inte alla EJB containrar är skapade lika. Även om varje EJB container måste överensstämma med EJB specifikationen, leverantörer har bred latitud i genomförandet av EJB container. Deras krav fokuserar på resultatet av verksamheten, inte på en operation effektivitet. Vissa leverantörer kommer att göra ett bättre jobb med olika delar av en EJB container. Du måste bestämma var effektivitetsvinster kan vinnas i en EJB container och där flaskhalsar kommer att inträffa. Det enda sättet att veta att med säkerhet är att prova innan du köper. Även efter att du köper en lösning, stora designbeslut, till exempel om eller inte använda EJB entitetsbönor, bör testas.
  • Prestanda kan lita på effektiviteten i din ansökan. Det finns allmänna regler som du kan använda för att hjälpa till att avgöra vilket program mönster är bättre än andra. Men dessa riktlinjer kan enkelt ogiltig med en slarvig genomförande. Det bästa sättet att se till att du undviker slarviga implementeringar är att utföra regelbundna kod recensioner - det är då du sitter runt med alla dina kodning medarbetare och få dem granska ditt arbete - under din EJB projektet. Du bör fokusera din kod recensioner på analysera källan och se till att det är både väl utformade och effektiva. Kod recensioner ger en stor möjlighet för programmerare att lära av varandra.
  • Utveckla en prototyp för att testa dina prestations antaganden. Här är ett urval scenario. Som en EJB ansökan utvecklare bör du bestämma tidigt om de vill använda ersättnings bönor för att hantera interaktion med en databas. Dina två grundläggande val är att

Skapa entitetsbönor för att hantera interaktion databas. Entitetsbönor kan förenkla din databas interaktion från ett programmeringsperspektiv. Men de kan också exakt en prestandaförlust. Några av denna påföljd kan styras på det sätt som du genomför entitetsbönor - det vill säga genom att använda lokala gränssnitt kontra fjärr gränssnitt eller genom att göra enhets bönor grovkorniga föremål.

Kod JDBC databas samtal direkt i sessionsbönor och undvika användning av entitetsbönor totalt. JDBC kan vara svårare att arbeta med än att använda enhets bönor med container förvaltade uthållighet. Kursen kan också underminera din förmåga att dra nytta av EJB container förvaltade transaktioner.

För att avgöra vilken av de två kurser är lämpligare, kan du utföra ett enkelt test:

1. Skapa en enhet bönor och en sessionsböna att både utföra operationer på samma uppsättning data från en databas.

2. Skriv ett enkelt program som mäter den tid som krävs för att åberopa en uppsättning skär, uppdateringar, frågor och ändringar i databasen.

Denna andra program bör åberopa sessionsböna för ett test och den enhet bönor för ett annat test - utför samma uppsättning operationer på varje.

3. Analysera resultaten för att avgöra om prestanda kommer att vara ett problem.

Om du vill ha en mer finkornig prestanda analys, kan du tid enskilda steg - att identifiera den dyraste verksamheten - och sedan försöka modifiera denna verksamhet att generera prestandavinster.

För en enhet böna, kanske du vill mäta prestanda på följande operationer:

  • Hur lång tid tar det att få en referens till en avlägsen gränssnitt eller ett lokalt gränssnitt?
  • Vad är skillnaden i prestanda mellan utföra en uppdatering på en fjärrgränssnitt och ett lokalt gränssnitt?
  • Vad är skillnaden mellan att uppdatera flera rader i en databas i JDBC och utföra en uppdatering på flera rader med hjälp av hemmametoden en enhet bönor?

Svaren på dessa frågor kommer att skilja sig från EJB container till EJB container och kommer också att påverkas av: a) JDBC-drivrutinen du väljer; b) om du använder databasanslutning pooling; och c) effektiviteten av dina implementeringar av entiteten böna och sessionen böna. Du kommer förmodligen att bli överraskad av några av de resultat du får - tester som dessa har ett sätt att utmana dina antaganden om utförandet av entitetsbönor.

När du trimma en EJB för prestanda, inte göra slumpmässiga förändringar. Istället fokuserar din uppmärksamhet på stegen i programmet som kostar mest i form av prestanda.

Obs: Prestandamätningar visar oftast att en affärsprocess har bara en eller två punkter där betydande förbättringar kan göras. Denna observation har gjorts tillräckligt ofta att det ledde till skapandet av Pareto 80-20 regeln. Denna regel säger att 80 procent av tiden exekvering av ett program beror på 20 procent av koden. Ditt mål bör vara att identifiera vilka 20 procent av koden är dyrast i termer av systemresurser och fokusera på att optimera den delen.