Co může nabourat výkonnost vašich J2EE aplikací
Měření výkonu aplikací a jejich profilování bývá většinou odsunuto do chvíle, kdy se nějaké problémy objeví. A to potom zažívají vývojáři nejednu horkou chvilku, když zjišťují co a kde nezvládli úplně nejlépe z hlediská dopadu na výkon aplikace. Teoreticky sice platí první pravidlo optimalizace, které zní “neoptimalizujte”, ale to není v praxi tak levné.
Z praxe jsem si ověřil, že valnou většinu výkonnostních problémů aplikace lze odstranit ještě před tím, než jde do produkčního nasazení. Základní pravidlo, které předřazuji před “neoptimalizujte”, je prevence ve smyslu “poznej svého nepřítele”. Většina výkonnostních problému je totiž způsobena neznalostí a tím pádem nesprávného použití dané technologie. Za technologii si pak můžete dosadit cokoliv, například JDBC, EJB, Hibernate atd.
Každá technologie v oblasti enterprise aplikací má svoje stinné stránky z hlediska výkonosti. Díky prevenci uvnitř týmu se lze skoro zdarma vyhnout nejpalčivějším problémům. Druhou množinu výkonnostních problémů lze celkem spolehlivě odhalit zátěžovými testy. Jedná se například o různé synchronizace, kterou jsou na první pohled skryté (API třetí strany) a způsobují snížení míry paralelizace viz Amdahlův zákon.
Pokud jsem před chvilkou zmiňoval pravidlo “poznej svého nepřítele”, tak by se Vám mohlo hodit deset oblastí výkonnostních problémů, které sesbíral a podrobil průzkumu Vincent Partington.
- #10 — Excessive logging
- #9 — Incorrect application server configuration
- #8 — Incorrect usage of Java EE
- #7 — Unnecessary use of XML
- #6 — Improper caching
- #5 — Excessive memory usage
- #4 — Badly performing libraries
- #3 — Incorrectly implemented concurrency
- #2 — Unnecessary remoting
- #1 — Incorrect database usage
Zábavné na těchto deseti oblastech je to, že je každý vývojář tak trochu nosí v hlavě, ale tak trochu na ně zapomíná, stejně jako na prevenci a výkonové testy…
Související odkazy
- TSS Vincent Partington: Top 10 Java EE performance problems
- Java Performance Tuning
- Java 6 — co vězí za zrychlením (optimalizace v oblasti synchronizací)
Související články
Související epizody CZ Podcastu
- #3 · Java 6 SE, Vývoj webových aplikací
Dagi a Filemon o novinkách v Javě 6 a webových frameworcích.
- #1 · Vývojová prostředí v Javě
První díl CZ Podcastu se věnuje vývojovým prostředím pro Javu.