pátek 25. května 2007

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.

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