Step by Step Trouble Shooting
Performance SOP
Identify the Bottleneck
Usually the bottleneck can be found in one of these areas:
- client
- network
- server
To breakdown a slow performing web application is a good idea to start, where the bad performance is perceived... in the browser. Most modern browsers provide very sophisticated tools to start the search for the bottleneck and draw some conclusions, and exclude other possible causes easily.
- Dev tools (Network)
- Chrome [F12]
- Firefox [F12] / Firebug
- IE>9 [F12]
- fiddler2 TODO
File:Chrome developer tools network.jpg
After a few minutes the biggest problem area(s) should become apparent, following the questions below:
Are there one or more excessively long running requests?
NO --> #Client Side Issue
YES -->
Is it a static resource?
YES (js, css, images ...) --> check debug mode zk config (disabled by default) http://books.zkoss.org/wiki/ZK_Configuration_Reference/zk.xml/The_client-config_Element/The_debug-js_Element --> check caching config (enabled by default) http://books.zkoss.org/wiki/ZK_Configuration_Reference/zk.xml/The_Library_Properties/org.zkoss.web.classWebResource.cache http://books.zkoss.org/wiki/ZK_Configuration_Reference/zk.xml/The_Library_Properties/org.zkoss.zk.WPD.cache http://books.zkoss.org/wiki/ZK_Configuration_Reference/zk.xml/The_Library_Properties/org.zkoss.zk.WCS.cache
??? maybe more tweaks ???
--> NONE of these --> network
NO dynamic request
- *.zul = full page request (can be followed by ajax requests) - zkau/* = ajax request
Which stage of the request is slow ?
network (based on Chrome Developer tools -> Network -> Timing)
1. connecting (Proxy, DNS Lookup, Blocking, SSL) - slow proxy/DNS/Blocking/SSL/ (client -> proxy -> webserver/firewall -> appserver) = network or #Server Side Issue
Is this a network problem (everything between browser and ZK Application)? -> test ping / trace route to different servers -> test dns lookup timing YES --> ask your administrator to fix it ;)
NO = application server responding slowly --> #Server Side Issue
2. sending
Is the request unreasonably big? YES -> client side problem NO
Is the bandwidth low?
- try upload the same amount of data to the server, e.g. ftp/scp, to check upload speed YES --> ask your administrator to fix it ;) NO --> application server reading slowly --> #Server Side Issue
3. waiting --> server side problem
4. receiving
Is the response unreasonably big? --> check ROD (Render on Demand) settings YES -> #Server Side Issue NO
Is the bandwidth low?
- try download the same amount of data from the server, e.g. ftp/scp, to check download speed YES --> ask your administrator to fix it ;) NO --> appserver writing slowly --> #Server Side Issue
Network Issue
not part of this SOP, ask your network administrator