Oracle UCM: Web Site Performance Tuning

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    3 Favorites

    Oracle UCM: Web Site Performance Tuning - Presentation Transcript

    1. Site Studio Performance Tuning Brian “Bex” Huff Chief Software Architect
    2. Agenda
      • General web-site tuning tips
        • The complex basics
      • High-performance architecture
        • Tune your system, network, and servers
      • Tuning Site Studio pages
        • Oracle UCM specific tips
    3. Philosophy of Performance Tuning
      • “ We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil ”
      • -- Donald Knuth
      • Need a holistic view of your systems and processes
        • Use data-flow analysis and diagrams
    4. Why Are Network Applications Slow?
      • Not enough CPU
        • Needed for text processing, number crunching, cryptography
      • Not enough memory
        • Needed to cache temporary data for faster processing
      • Not enough bandwidth
        • Needed to support large data transfers, large user bases
      • Too much latency
        • Multiple round-trips to servers makes any single request slow
      • Most web applications are slow because of bandwidth/latency
        • extra CPU and memory help, but usually are not enough
    5. Bandwidth and Latency in Real Life
      • 48 inches wide
      • Bandwidth:
        • 2,000,000 barrels per day!
      • 800 miles long
      • Latency:
        • 15.8 days!
    6. Bandwidth and Latency On The Web
      • Bandwidth:
        • Number Of Simultaneous Requests You Can Support
      • Latency:
        • Time Added To Each Request Due To Network and Distance
      • A web page with 50 images means 51 HTTP requests !
      • High bandwidth and high latency? Pages “feel” slow
      • 80-90% of response time spent in downloading web resources
        • Images, CSS files, JS files, AJAX requests
        • Source: http:// developer.yahoo.com/performance/rules.html
    7. Analyze The Flow Of Data
      • How does the data get to the client?
      • How many applications are involved?
      • Where is the bottleneck?
        • Latency: ping , traceroute , or tracert
        • Bandwidth: mrtg, wget , or ask your ISP/IT department
        • CPU and Memory: top or taskmanager
      • On the web, latency is usually a bigger problem than bandwidth
        • Distance and network health between web client and web server
        • Assume New York to San Francisco latency is ~100 ms
        • if your page has 100 images, that's 10 seconds for just latency!
      • In practice, browser caching and multiple downloads help
    8. UCM Data Flow Diagram
      • How do the actual bytes flow from client, to server, and back?
    9. Reduce CPU Needs of Web Pages
      • General tip: simplify your web pages so they render faster
      • Use fewer DOM elements
        • tables within tables within tables
      • Put CSS at the top, and JS at the bottom
        • CSS is rendered immediately
        • JS must be 100% loaded before it executes
      • Avoid complex CSS
        • AlphaImageLoader filter
        • CSS expressions
    10. Reduce Bandwidth Needs of Web Pages
      • General tip: use smaller web resources
      • Compress your HTML, CSS, and JS files
        • minimize their size in general
        • inline GZIP compression works well
      • Use small, web-optimized images
        • avoid scaling them in HTML
      • Use GET for AJAX
      • Reduce use and complexity of cookies
        • cookie state is sent with every request
    11. Reduce Latency Of Web Pages
      • General tip: use fewer web resources
        • eliminate images when CSS works just as well
        • consolidate CSS and JS into fewer files
        • correct any 404 error for missing images
      • Use CSS SPRITES
        • Like Google does
    12. Reduce Latency Of Web Pages (cont.)
      • Make fewer network requests
        • Avoid multiple DNS lookups on the same page
        • Minimize URL redirects
      • Serve static files from multiple servers
        • Browsers download 2 web resources at a time from one domain
        • So, make more domains: img1 .company.com, img2 .company.com
      • Use content delivery network
        • Amazon Cloudfront : cheap, but mainly North American
        • Akamai : expensive, but global
      • Make content “ cacheable ”
    13. High-Performance Architecture
      • Web Page Cache / Reverse Proxy
        • Cache rendered web pages to take load off of Site Studio
        • make sure it understands cookies and GZIP compression
      • Contribution / consumption environment
        • Optimize contribution for read/write
        • Optimize consumption for read (mostly)
      • Use a dedicated server for each Oracle UCM instance
        • Do not share with other applications
      • Schedule resource-intensive behavior in the off-hours
        • Virus scanners and web spiders
        • Backups, archives, batchloads
    14. High-Performance Architecture (cont.)
      • Create a cluster
        • in most cases with 10gr3, significantly improves performance
        • general best practice for failover, high reliability, and uptime
      • Minimize latency in local network
        • keep database, LDAP, and other resources on same subnet
        • keep filesystem speedy: attached storage, SAN, NAS
      • Monitor CPU and Memory usage
        • bandwidth, and latency are usually the culprits
        • CPU and memory can be a bottleneck for heavy consumption servers
      • If you use UCM 7.5 with Verity search, CPU can be an issue
        • if you use database search, database CPU may be an issue
    15. Sample High-Performance Architecture
    16. Make Static Content Cacheable
      • Web caches will store static content (JS, CSS, images)
        • Modest performance gains by keeping them in-memory
        • Caching dynamic content is better, but harder…
      • Add Expires or MaxAge HTTP header to content
        • allows a cache to know how long to store content
        • for static content, set this in the web server
        • for dynamic content, set it in Site Studio
      • Properly configure ETag HTTP headers on clusters
        • If you're not using them, just remove them
    17. Make Dynamic Content Cacheable
      • Dynamic HTML pages might be different per user
        • Multi-step forms and personalization are cache-killers
          • Different users see different things at the same URL!
        • Not all caches work when cookies are present
        • Need smart caches, and smart personalization
      • Drive customization with static CSS and JS files
        • Read cookies from JS, use AJAX to alter pages
        • Configure cache to ignore cookies, or
        • Configure web server to omit cookie header
      • Security checks can be slow
        • How far away is your user database?
        • Is it cached locally, or do we need to check ActiveDirectory or LDAP?
    18. Site Studio Specifics
      • UCM performance rule-of-thumb
        • 20 read-only service calls per second per GHz CPU
        • 5 read/write service calls per second per GHz CPU
      • Problem: some Site Studio pages are multiple service calls!
        • Each calls at least the SS_GET_PAGE service
        • Many fragments and templates call GET_SEARCH_RESULTS
        • Many also call DOC_INFO
      • Not uncommon for one page to have 4 UCM service calls!
        • Reduces performance to 5 page views per second per GHz CPU
    19. UCM Specifics
      • Minimize number of queries per page
        • Use static lists instead of dynamic lists when possible
      • Optimize search queries
        • Use <matches> or <contains> instead of <substring>
        • Note: <contains> only works in &quot;zone indexed&quot; metadata fields
        • Avoid time stamps in queries
      • Tune Java VM to have as much memory as you can give it
        • JAVA_MAX_HEAP_SIZE=1024
      • Optimize the Oracle Database
        • Install the OracleQueryOptimizer component
        • Cursor_Sharing=SIMILAR
        • optimizer_mode=first_rows
    20. Finding Slow Pages: Passive
      • Configure web server logs to measure page creation time
        • Apache: use mod_log_config and the LogFormat directive
        • IIS: use W3C extended log file format, and the &quot;Time Taken&quot; field
      • Enable UCM System Audit Information flags
        • requestaudit
        • pagecreation
        • searchquery
        • systemdatabase
      • Parse log files to find slow pages and slow queries
    21. Finding Slow Pages: Active
      • Run a web spider on your system
        • Caution: this can crash your server!
        • Use web logs or spider logs to find slow pages
      • Test slow pages once with auditing turned on
        • You may be surprised how many database calls there are!
      • Test slow pages with a load tester
        • How many users can do this simultaneously?
    22. Finding Slow Pages: Active (cont.)
      • Bandwidth:
        • How fast can you download a static 1MB HTML file?
        • How many users can do this simultaneously?
      • Latency:
        • How fast can you download a 1k HTML file with a hundred 10k JS files?
        • How many users can do this simultaneously?
      • Keep excellent notes!
        • Only way to measure performance improvement
    23. Making Pages Faster
      • Reduce number of service calls
      • Reduce number of database calls
      • Optimize IdocScript
        • Minimize eval and executeService calls
        • Instead use setValue , setResourceInclude
        • Eliminate all IdocScript errors: these are performance drags
        • Use cacheInclude for slow sections of pages
      • Optimize JSP/ASP/Java code
        • In general, same rules apply
        • Reduce complexity, reduce number of service calls
    24. Making Pages Faster (cont.)
      • Consolidate JS and CSS files
        • Place them into a global fragment, or global region template
        • Standard best-practice for maintainable code
      • Set flags to cache pages
        • Built-in with the custom section property &quot;ssMaxAge&quot;
        • Passes the cache control header
        • Watch out for cookies!
      • Disable unnecessary JavaScript files
        • Requires custom component
        • On consumption environment, disable contributor JS files
        • Most sites don't need the JS files that contain navigation
    25. Review
      • General web site performance tuning is critical
      • Data flow diagrams can highlight bottlenecks
      • Some architectures scale better than others
        • Size CPU and Memory appropriately
        • Cluster your servers
        • Include a reverse proxy
        • Keep network resources close, and fast!
      • Understand why specific Site Studio pages are slow
        • Reduce number of service requests per page
        • Focus on making “cacheable” content
    26. Useful Tools and References
      • Yahoo YSlow plug-in to Firefox: a must have!
        • http:// developer.yahoo.com/yslow /
      • JMeter load tester
        • http:// jakarta.apache.org/jmeter /
      • Heritrix web crawler
        • http:// crawler.archive.org /
      • Varnish HTTP Accelerator
        • http:// varnish.projects.linpro.no /
      • Yahoo web site performance tuning best practices
        • http:// developer.yahoo.com/performance/rules.html
      • Oracle UCM performance tuning guide:
        • http://download.oracle.com/docs/cd/E10316_01/cs/cs_doc_10/documentation/admin/performance_tuning_10en.pdf
    27. Now Available…
      • My Company: http:// bezzotech.com
      • My Blog: http:// bexhuff.com
      • My Self: [email_address]
      Questions?

    + Brian HuffBrian Huff, 1 month ago

    custom

    1000 views, 3 favs, 2 embeds more stats

    A talk on how to optimize the Oracle Content Manage more

    More info about this document

    CC Attribution-NoDerivs LicenseCC Attribution-NoDerivs License

    Go to text version

    • Total Views 1000
      • 856 on SlideShare
      • 144 from embeds
    • Comments 0
    • Favorites 3
    • Downloads 40
    Most viewed embeds
    • 133 views on http://bexhuff.com
    • 11 views on http://www.bexhuff.com

    more

    All embeds
    • 133 views on http://bexhuff.com
    • 11 views on http://www.bexhuff.com

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories