Video: PowerEdge R740xd2 Rack Server 2024
Analysera prestanda är förmodligen en av de mest komplexa uppgifterna vid utformning av alla applikationer. Det är en oklar vetenskap eftersom det finns många faktorer som spelar in. Dessa kompletteras i Enterprise JavaBeans (EJB) applikationer, där prestanda i hög grad beror på genomförandet av EJB-behållaren du använder. Grunden är att du inte kan veta om du gör rätt prestationsbeslut tills du testar dem.
Följande är några problem som du bör tänka på när du överväger prestanda:
- Ej alla EJB-behållare skapas lika. Medan varje EJB-behållare måste överensstämma med EJB-specifikationen, har leverantörerna bred bredd vid genomförandet av EJB-behållaren. Deras krav är inriktade på resultaten av verksamheten, inte på en operations effektivitet. Vissa leverantörer kommer att göra ett bättre jobb med olika delar av en EJB-behållare. Du måste bestämma varför effektiviteten kan uppnås i en EJB-behållare och där flaskhalsar ska uppstå. Det enda sättet att veta det med säkerhet är att försöka innan du köper. Även efter att du köpte en lösning bör stora beslut om design, som om du vill använda EJB-enhetens bönor, testas.
- Prestanda kan bero på effektiviteten i din ansökan. Det finns allmänna regler som du kan använda för att bestämma vilka applikationsdesign som är bättre än andra. Men dessa riktlinjer kan enkelt ogiltiga med en slarvig implementering. Det bästa sättet att se till att du undviker slarviga implementeringar är att utföra vanliga kodrecensioner - när du sitter med alla dina kodande medarbetare och får dem att granska ditt arbete - under ditt EJB-projekt. Du bör fokusera dina kodrecensioner på att analysera källan och se till att den är både väl utformad och effektiv. Kod recensioner erbjuder ett bra tillfälle för programmerare att lära av varandra.
- Utveckla en prototyp för att testa dina prestationsantaganden. Här är ett exempel scenario. Som en EJB applikationsutvecklare bör du bestämma tidigt om du vill använda enhetsbönor för att hantera interaktion med en databas eller inte. Dina två grundläggande val är att
• Skapa entitetsbönor för att hantera databasinteraktion. Entitybönor kan förenkla din databasinteraktion från ett programprogrammeringsperspektiv. Men de kan också exekvera en prestationsstraff. Några av det straffet kan kontrolleras på det sättet att du implementerar entitetsbönor - det vill säga genom att använda lokala gränssnitt mot fjärrgränssnitt eller genom att göra bönor med grovkornade objekt i företagsbönor.
• Kod JDBC-databasen ringer direkt till sessionsbönor och undviker användningen av enhetsbönor helt och hållet. JDBC kan vara svårare att arbeta med än att använda bönor med behållarehanterad uthållighet. Denna kurs kan också undergräva din förmåga att dra nytta av EJB-containerhanterade transaktioner.
För att bestämma vilken av de två kurser som är mer lämplig kan du utföra ett enkelt test:
1. Skapa en entitetsböna och en mötesböna som båda utför aktiviteter på samma uppsättning data från en databas.
2. Skriv ett enkelt program som mäter hur lång tid som krävs för att anropa en uppsättning insatser, uppdateringar, frågor och ändringar i databasen.
Detta andra program bör anropa sessionen för ett test och enheten böna för ett annat test - utföra samma uppsättning operationer på var och en.
3. Analysera resultaten för att avgöra om prestanda kommer att bli ett problem.
Om du vill ha en mer finkornig prestationsanalys kan du göra enskilda steg - för att identifiera den dyraste operationen - och försök sedan ändra de här operationerna för att generera prestationsvinster.
För en företagsböna, kan du mäta prestanda på följande sätt:
- Hur lång tid tar det för att få en referens till ett fjärrgränssnitt eller ett lokalt gränssnitt?
- Vad är skillnaden i prestanda mellan att utföra en uppdatering på ett 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 hemmetoden för en företagsböna?
Svaren på dessa frågor kommer att skilja sig från EJB-behållaren till EJB-behållaren och kommer också att påverkas av: a) JDBC-drivrutinen du väljer; b) huruvida du använder databassamling eller inte och c) effektiviteten av dina implementeringar av enheten bonen och sessionen böna. Du kommer sannolikt att bli överraskad av några av de resultat du får - tester som dessa har ett sätt att utmana dina antaganden om prestanda hos enhetens bönor.
När du justerar en EJB för prestanda, gör inte slumpmässiga ändringar. Istället fokusera din uppmärksamhet på de steg i programmet som kostar mest när det gäller prestanda.
Obs! Prestationsmätningar visar vanligtvis att en affärsprocess bara har en eller två punkter där betydande förbättringar kan göras. Denna observation har gjorts ofta tillräckligt för att det ledde till skapandet av Pareto 80-20-regeln. Den här regeln säger att 80 procent av genomförandetiden för ett program beror på 20 procent av koden. Ditt mål bör vara att identifiera vilka 20 procent av koden som är dyraste när det gäller systemresurser och fokusera på att optimera den delen.