You are previewing Web Performance Tuning, 2nd Edition.
O'Reilly logo
Web Performance Tuning, 2nd Edition

Book Description

As long as there's been a Web, people have been trying to make itfaster. The maturation of the Web has meant more users, more data,more features, and consequently longer waits on the Web. Improvedperformance has become a critical factor in determining theusability of the Web in general and of individual sites inparticular. Web Performance Tuning, 2nd Edition is aboutgetting the best possible performance from the Web. This book isn'tjust about tuning web server software; it's also about streamliningweb content, getting optimal performance from a browser, tuningboth client and server hardware, and maximizing the capacity of thenetwork itself. Web Performance Tuning hits the groundrunning, giving concrete advice for quick results -- the "bluntinstruments" for improving crippled performance right away. Thebook then shifts gears to give a conceptual background of theprinciples of computing performance. The latter half of the bookexamines each element of a web transaction -- from client tonetwork to server -- to find the weak links in the chain and showhow to strengthen them. In this second edition, the book has beensignificantly expanded to include:

  • New chapters on Web site architecture, security,reliability, and their impact on performance

  • Detailed discussion of scalability of Java onmulti-processor servers

  • Perl scripts for writing web performance spidersthat handle logins, cookies, SSL, and more

  • Detailed instructions on how to use Perl DBI andthe open source program gnuplot to generate performance graphs onthe fly

  • Coverage of rstat, a Unix-based open source utilityfor gathering performance statistics remotely

  • In addition, the book includes many more examples and graphs ofreal-world performance problems and their solutions, and has beenupdated for Java 2. This book is for anyone who has waited too longfor a web page to display, or watched the servers they manage slowto a crawl. It's about making the Web more usable for everyone.

    Table of Contents

    1. Web Performance Tuning, 2nd Edition
      1. Preface
        1. What Is This Book Good For?
        2. Audience for This Book
        3. Assumptions of This Book
        4. How This Book Is Organized
          1. Part I: Preliminary Considerations
          2. Part II: Tuning in Depth
        5. Font Conventions
        6. How to Contact Us
        7. Web Site Updates and Code Examples
        8. Other Books and Resources
          1. Books
          2. Web Sites with Performance Information
          3. Newsgroups with Web Performance Content
        9. Disclaimer
        10. Acknowledgments for the Second Edition
      2. I. Preliminary Considerations
        1. 1. The Quick and the Dead
          1. Questions for the Browser Side
            1. Is Your Modem On?
            2. Is Your Modem Connected to Your Computer?
            3. Did the Other End Hang Up on You?
            4. Are You Sending Data over the Modem?
            5. Do You Have a Valid IP Address and Gateway Router?
            6. Is the Browser Hanging?
            7. Is Your Browser in “Offline” Mode?
            8. Can You Still Resolve Names?
            9. Is an Intermediate Router Down or Very Slow?
            10. Is the Remote Site Overloaded?
            11. Is the Remote Site Down?
            12. Is There a Mirror Site?
            13. Did You Already Get Most of the Page?
            14. Is Your MTU too Big, or too Small?
            15. Do You Need to Use a Proxy Server?
            16. Does Your Proxy Handle https URLs?
            17. Is There a Faster Proxy Server?
            18. Are You Being Blocked Deliberately?
            19. Are You Running too Many Programs?
            20. Do You Have Enough Memory?
            21. Is Your CPU Fast Enough?
            22. Do You Have Enough Bandwidth?
            23. Are Excessive Images Dragging Down Your Performance?
            24. Is Browser Startup Time Getting You Down?
            25. Are You Using a Slow Browser?
            26. Is Your Cache Big Enough?
            27. Are You Wasting Time Verifying Cached Pages?
            28. Is Java Startup Time Annoying You?
            29. Could You Benefit from Using a Specific ISP?
            30. Are You Surfing at Slow Times?
            31. Could Your Organization Benefit by Installing a Proxy Server?
          2. Questions for the Server Side
            1. Is Your Server Sleeping?
            2. Is Your DNS Server Overloaded?
            3. Do Your Images All Have Sizes and ALT Tags?
            4. Do All Your Applets Have ALT Tags?
            5. Are There Needless or Slow Redirects?
            6. Is Your Web Server Wasting Time on Reverse DNS Lookups?
            7. Is Your Web Server Retransmitting too Much?
            8. Are You too Far Away from Your Users?
            9. Is Your Server Network Connection Overloaded?
            10. Is Your Server CPU-Bound?
            11. Are You Short of Memory?
            12. Are Your Disks too Busy?
            13. Could You Benefit from Caching Services?
            14. Are You Suffering from Performance Bugs That Have Already Been Fixed?
            15. Is cron Killing Performance at Regular Intervals?
            16. Is Your Web Site Being Crowded by Other Processes?
            17. Are You Wasting Time with SSIs?
            18. Is Your Content Unncessarily Dynamic?
            19. Is Your Database Connection Pool too Small?
            20. Is Your Database Connection Pool Leaking?
            21. Are Your Hubs, Switches, and Routers Overloaded or Misconfigured?
            22. Do Java Processes Suddenly Stall?
            23. Are You Using CORBA, EJBs, or RMI?
            24. Are You Doing Excessive Logging?
            25. Are You Serving Content Directly from a Revision Control System?
            26. The Server Is Not at All Busy, but It’s Slow!
          3. Key Recommendations
        2. 2. Web Site Architecture
          1. Trade-offs
            1. State Versus Scalability
            2. Replication Versus Simplicity
            3. Synchronous Versus Asynchronous
            4. Connectionless Versus Connectionful
            5. Planning Versus Doing
            6. Procedural Versus Object-Oriented
          2. Elements
            1. Browser
            2. Load Balancer
              1. DNS level
              2. IP level
              3. Ethernet level
            3. Web Server
            4. Middleware
            5. Database
          3. Example Web Site Architectures
            1. One Box
            2. Stacks
            3. Layers
            4. Linux on the Mainframe
            5. Real Time
          4. Trends
          5. Sample Configurations
            1. Low Volume
            2. Medium Volume
            3. High Volume
          6. Key Recommendations
        3. 3. Capacity Planning
          1. Do the Math . . .
          2. . . . But Trust Your Eyes More than the Math
          3. Questions to Ask
            1. How Many HTTP Operations per Unit Time Do You Expect?
            2. What Is the Purpose of the Web Site?
            3. How Tolerant Are Your Users?
            4. Will You Provide Any Streaming Media?
            5. Will the Web Server Spawn Additional Processes?
            6. What Other Processes Need to Run on the Web Server or over the Network?
            7. What Sort of Scalability Do You Need?
            8. What Is Your Budget?
            9. How Available Does Your Site Have to Be?
            10. Can You Force Suppliers to Compete?
            11. Hey Kid, Want to Try a Browser?
            12. Other Questions
          4. How Much Bandwidth Do You Need?
            1. Latencies Are More Important than Bandwidth
            2. Thinking About Bandwidth
            3. Estimating Web Server Network Bandwidth
          5. How Fast a Server Do You Need?
          6. How Much Memory Do You Need?
            1. Memory for the Operating System
            2. Memory for httpd
            3. Memory for Content
            4. Memory for CGIs
          7. Key Recommendations
        4. 4. Performance Monitoring
          1. Parameters of Performance
          2. Latency and Throughput
            1. Network Latency
            2. Measuring Network Latency and Throughput
              1. Using FTP
              2. Other performance measures
          3. Utilization
          4. Efficiency
            1. Using a Shell Script
            2. Using C
            3. Using Perl
          5. Monitoring Web Performance Using Perl
            1. Plotting Results with Gnuplot
            2. An Example Monitoring Script in Perl
            3. The Pieces
          6. Automatically Generating Monitoring Scripts Using Sprocket
          7. Using a Relational Database to Store and Retrieve Your Monitoring Data
            1. Storing Data
            2. Retrieving Data
          8. Monitoring Machine Utilization with rstat
            1. Storing rstat Data in a Relational Database
            2. Using rstat Data
            3. Getting Data from the Database to Standard Output
            4. Generating Graphs Directly from an rstat Database
          9. Monitoring Per-Process Statistics
            1. Using CGIs to Run Tools
            2. Using rstat to Trigger Deeper Analysis
            3. Using Telnet from Perl
          10. Generating Graphs from ps Data
          11. Monitoring Other Things
            1. Using Java for Monitoring
          12. Making a System Dashboard Web Page
            1. Danger! Excessive Monitoring is Hazardous to Your Web Site’s Health
            2. SNMP
            3. RMON
            4. ARM
            5. Other Resources
          13. Key Recommendations
        5. 5. Load Testing
          1. Load Test Preparation
            1. Watch Out for Clock Changes
            2. Why Is Production Performance Different from Test Performance?
          2. Trade-offs with Load Testing Tools
          3. Writing Your Own Load Testing Tools
            1. The Timer Problem
            2. Load Testing by Excessive Monitoring
            3. Synchronizing a Load Test
            4. Randomizing a Load Test
            5. Help, I Have to Stop My Load Test!
            6. Generating Network Load
          4. Benchmark Specifications and Benchmark Tests
            1. WebStone
            2. SPECweb99
            3. TPC-C and TPC-D
            4. Proxy Benchmarks
            5. Vendor-Standard Benchmarks
            6. CaffeineMark
          5. Other Resources
          6. Key Recommendations
        6. 6. Performance Analysis
          1. Using analysis.cgi to Find a Bottleneck
          2. Snooping HTTP with Sprocket
          3. Look at Connections
          4. Log File Analysis
            1. Average Transfer Size
            2. Response Size Distribution
          5. Hits per Second
            1. Variable Load and Queue Length
            2. When Exactly Are Hits Logged?
            3. Who Is the Most Common User?
            4. Which Process Is Mine?
            5. Who Is Using That File?
            6. What Files Are My Process Using?
            7. What Happens if the Database Is Hung?
          6. A Few More Tips
          7. Key Recommendations
        7. 7. Reliability
          1. Typical Failures
            1. Disk Full
            2. Process Out of File Descriptors
            3. C Pointer Error
            4. Memory Leaks
            5. Thread Deadlock
            6. Dead Process Holding Lock
            7. Server Overloaded
            8. Load Balancer Fails to Detect Dead Machine
            9. Subnet Flooded
            10. Out of ptys
            11. Database Out of Cursors
            12. Bad Device Driver
            13. Hardware Failures
            14. Power Outage
            15. Administrator on Wrong Server
            16. Wildcards Including Wrong File
            17. Permissions Problems
            18. Path Problems
            19. Patch Problems
            20. Cascade of Overloads
            21. Monitoring Causing Failures
            22. Retries Cause Further Failures
            23. Critical Tables Locked by Accident
            24. Using a Database Where Files Will Do
            25. Program Fails to Reconnect to Database After Failure
            26. Program Fails to Restart After Reboot
            27. Split-Brain Syndrome
            28. Firewall “Cleanup” Blocks Essential Service
            29. Screen Scraping Fails Because of Design Change
          2. Dependencies
          3. Smoothing Outages
          4. Key Recommendations
        8. 8. Security
          1. HTTPS and SSL
          2. Firewalls
          3. Bastion Hosts
          4. chroot
          5. Key Recomendation
        9. 9. Case Studies
          1. Database Table Growing Without Limit
          2. Reverse DNS Lookups Slows Logging
          3. Kinked Cable
          4. Database Connection Pool Growth Limits Performance
          5. Key Recommendation
        10. 10. Principles and Patterns
          1. Principles of Performance Tuning
            1. Sometimes You Lose
            2. To Measure Something Is to Change It
            3. Reading Is Fundamental
            4. There Is No Free Lunch
            5. Returns Diminish
            6. Portability Will Reduce Performance
            7. Increasing Abstraction Will Reduce Performance
            8. Security Will Reduce Performance
            9. Memory Is Hierarchical
            10. Caches Depend on Locality of Reference
            11. I/O Is Slow
            12. Information Is Relative
            13. Hardware Is Cheap, Software Is Expensive
            14. The Goal of Tuning Is Simultaneous Failure
            15. Better Is Relative
            16. Bits Are Cost
            17. Internet Performance Degrades Nonlinearly
            18. Tuning at the Highest Level Gives the Biggest Gains
            19. Whatever Occurs Once Is Likely to Happen Again Soon
            20. The 80/20 Rule
            21. It’s Not What You Know, It’s Whom You Know
          2. Patterns of Performance Improvement
            1. Amortization
            2. Caching
            3. Profiling
            4. Parallel Processing
            5. Using What You Know
            6. Simplicity
          3. Key Recommendations
      3. II. Tuning in Depth
        1. 11. Browsers
          1. How Browsers Work
          2. Types of Browsers
            1. Netscape
            2. Internet Explorer
            3. Opera
            4. Neoplanet
            5. WebTV
            6. Cello
            7. Mosaic
            8. Lynx
            9. Amaya
            10. Tango
          3. The Perfect Browser
          4. Browser Speed
          5. Browser Tuning Tips
            1. General Tips
              1. Upgrade
              2. Do less
              3. Use shortcuts
              4. Increase caches
              5. Reboot
              6. Multitask
              7. Stop it
              8. Use Java plug-in
              9. Browse in a new window
            2. Internet Explorer Tips
              1. Don’t redraw while scrolling
              2. Browse in a new process
            3. Netscape Tips
              1. Prestart Java
              2. Use fewer colors
              3. Make smaller buttons
          6. Non-Browser Web Clients
            1. Gnutella and Peer to Peer
          7. Key Recommendations
        2. 12. Client Operating System
          1. Microsoft Windows
            1. System Clutter
            2. Specific Video Drivers
            3. Memory and Disk
            4. System Monitor
            5. Network Utilities
            6. MTU
          2. Macintosh
            1. 68K Emulation
            2. Networking
            3. Memory and Disk
            4. Extensions
          3. Unix
          4. Key Recommendations
        3. 13. Client Hardware
          1. CPU
          2. RAM
          3. Cache
          4. Bus
          5. Disk
            1. IDE
            2. SCSI
            3. Fragmentation
          6. Video
            1. MMX
            2. Colors and Resolution
            3. Drivers
            4. 3D and Video Clips
            5. Video Card Benchmarks
            6. I/O Port
            7. The UART
          7. BIOS
          8. Key Recommendations
        4. 14. Lines and Terminators
          1. Forwarding and Latency
          2. Your Modem, the Information Driveway
            1. Latency and Throughput, Modem to Modem
            2. Getting Synchronous
            3. Hardware Compression
            4. Error Correction
            5. Line Quality
            6. Internal Modems Are Faster
            7. UART Buffer Overruns
            8. AT Commands and Dialing Time
            9. Bonding Channels
          3. ISDN
          4. Cable Modems
          5. xDSL
          6. Higher Capacity Lines
            1. 56K, T1, and T3
            2. Frame Relay
            3. ATM
            4. Satellite
          7. Intranets
            1. Partitioning
            2. Hardware for Partitioning
            3. Ethernet
            4. Packet Snooping
            5. NIC Buffers
            6. Fast Ethernet
            7. Switched Ethernet
            8. Ethernet Cabling
            9. Noise
          8. Network Modeling Tools
          9. The Internet
            1. Bypassing the Internet
            2. NAPs
            3. ISPs
              1. Placement
              2. ISP performance
              3. Choosing an ISP
              4. Co-location and mirroring
            4. Routers
            5. Placing Blame
            6. The Future of the Internet
              1. Internet2
              2. NGI
          10. PTTs
          11. Key Recommendations
        5. 15. Network Protocols
          1. Power and Protocols
          2. Factors Affecting Network Protocol Performance
            1. Fixed- Versus Variable-Sized Packets/Cells/Frames
            2. Piggybacking
            3. Pipelining Versus ACK-ing Each Packet
            4. Full/half duplex
            5. Errors
            6. Number of Hops
            7. Layers
          3. The Protocols of the Web
            1. ARP
            2. PPP
            3. Routing Protocols
            4. IP
            5. TCP
              1. Use latest TCP patches
              2. TCP parameters
              3. Listen queues
              4. Retransmission delay
              5. TIME_WAIT interval
              6. Abort interval
              7. Maximum segment lifetime and maximum connection rate
              8. Keepalive interval
              9. Receive window
              10. Delayed ACK
              11. Slow start
              12. Maximum Segment Size
            6. Monitoring TCP
            7. T/TCP
            8. UDP
            9. DNS
            10. NFS
            11. HTTP
              1. Stateless and connectionless
              2. Asymmetric
              3. Text-based
              4. Compression
              5. Cache control
              6. The trailing slash
              7. HTTP 1.1 improvements
              8. HTTP proxy request format
              9. Byterange downloads
              10. HTTP and filesystems
            12. FTP
            13. NNTP
            14. CORBA
            15. X
          4. Key Recommendations
        6. 16. Server Hardware
          1. Box on a Wire
          2. Good I/O
          3. Multiple Busses
          4. Fast Disks
          5. Lots of Memory
          6. Scalability
          7. Network Interface Card
          8. Bus
          9. Memory
          10. RAM Characteristics
          11. CPU
            1. CPU Construction
          12. Symmetric Multiprocessing (SMP)
            1. Testing Sun SMP Scalability
            2. Disk
            3. Disk Architecture and Parameters
            4. IDE
            5. EIDE
            6. SCSI
            7. Fibre Channel
            8. RAID
            9. Typical Disk Performance
            10. Fragmentation
          13. Disk Activity and PID
          14. Key Recommendations
        7. 17. Server Operating System
          1. Unix and the Origin of the Web
          2. Unix Flavors
            1. Solaris
            2. AIX
            3. Digital Unix
            4. Linux
            5. Irix
            6. BSD
            7. Mach OS
          3. System Calls Versus Library Calls
          4. Processes and the Kernel
            1. Scheduling
            2. Kernel Context
            3. Unix and httpd
              1. Solaris Network Cache and Accelerator
              2. Linux khttpd
            4. Reducing the Load on the OS
            5. Process Creation
            6. Address Space
            7. Copying in Memory
            8. Reclaiming Memory
          5. The Filesystem
            1. Filename Length
            2. Full Filesystems
            3. Directories
            4. Filesystem Caching
            5. Directory Name Lookup Cache
            6. Fragmentation
          6. The Windowing System
          7. Versions and Patches
          8. Configurable OS Parameters
            1. Number of File Descriptors
            2. Number of Processes
            3. Network Buffers
            4. Memory Limits
            5. Flushing Frequency
            6. Priority
            7. Timer Interrupt
          9. Unix OS Monitoring Tools
            1. ps
            2. perfbar
            3. perfmeter
            4. perfmon
            5. rstat
            6. rup
            7. hstat
            8. top
            9. xload
          10. System Call Tracers
          11. Network Snooping Tools
            1. netstat
            2. vmstat
            3. sar
          12. How Many Connections Can My Server Handle?
          13. How Many Processes Can My Server Handle?
          14. How Quickly Can My Server Fork New Processes?
          15. Unix Versus NT as the Web Server OS
            1. NT Pros and Cons
            2. Unix Pros and Cons
          16. The Exokernel
          17. Key Recommendations
        8. 18. Server Software
          1. The Evolution of Web Servers
            1. Servers Spawned from inetd
            2. Forking Servers
            3. Threaded Servers
            4. Keepalive Servers
          2. System Calls Made by a Web Server
          3. How Servers Fail
            1. Memory Leaks
          4. Configuring Apache and Netscape Web Servers
            1. Configuring Apache
              1. AllowOverride
              2. BUFFERED_LOGS
              3. MaxClients
              4. Persistent connections
              5. Turning off reverse DNS
              6. Do not restrict by domain
              7. Set FollowSymLinks
              8. FancyIndexing
              9. Use specific index files
              10. MaxRequestsPerChild
              11. Some notes on sizing Apache
              12. Using mod_status
              13. For more information
            2. Configuring Netscape
              1. Number of processes
              2. Number of server threads
              3. Turning off reverse DNS
              4. Persistent connections
              5. File cache
              6. pwfile
              7. CGI timeout
              8. RqThrottle
              9. Disable extraneous features
              10. Using perfdump
              11. For more information
          5. Other Servers
            1. Boa
            2. IIS
            3. Java Web Server
            4. Jigsaw
            5. NCSA
            6. Zeus
          6. Missing Features
          7. Proxy Servers
          8. Hierarchical Caches
          9. Key Recommendations
        9. 19. Content
          1. Size Matters
          2. As Good As It Gets
          3. Caching and Differences
          4. HTML and Compression
            1. gzip
          5. Performance Tips for HTML Authors
            1. Make It Easy on the Server
            2. Make It Easy on the Network
            3. Make It Easy on the Browser
            4. Make It Easy on the User
            5. Watch Out for Composition Tools with a Bias
            6. Keep Up with the State of the Art
            7. Use an HTML Validator
          6. The Document Object Model
          7. Graphics
            1. Weight Watching
            2. Consolidation
            3. Reuse
            4. Psychology
            5. Formats
          8. Audio
          9. Video
          10. Key Recommendations
        10. 20. Custom Applications
          1. Programmers
          2. CGI Programs
          3. CGI Internals and Performance Problems
          4. General CGI Tips
            1. Infinite Loops
              1. How to find and kill infinitely looping CGIs
              2. Runaways
              3. Guarding against infinitely looping CGIs
            2. Don’t Keep the Customer Waiting
            3. Push State or Processing into the Browser
            4. Cookies
            5. Java
            6. Preprocess Queries and Cache the Results
            7. Small Is Beautiful
            8. Scaling Issues
            9. Break Up Long Forms into Several Small Forms
            10. Server DNS Lookup
            11. Debug and Optimize
          5. CGI Language-Specific Optimization Tips
            1. Shell Scripts
            2. Perl
            3. C
          6. Daemonize It
          7. CGI Database Access Performance
          8. Logging
          9. NSAPI and ISAPI
          10. DOM
          11. JSP, ASP, PHP
          12. Key Recommendations
        11. 21. Java
          1. Java Will Never Be Good Enough for GUI Applications
          2. Java Is Good Enough for the Server Side
          3. Performance Problems Intrinsic to Java
            1. Array Bounds Checking
            2. Blocking Network I/O
            3. Bytecode Interpretation
            4. Bytecode Verification
            5. Dynamic Method Binding
            6. Garbage Collection
            7. Indirections
            8. i18n & l10n
            9. OO
            10. Stack-based
            11. Synchronization
            12. Threading
          4. Coding Tips
            1. Use Good Algorithms
            2. Keep Short Inheritance Chains
            3. Use Stack Variables
            4. Merge Classes
            5. Use Java Libraries
            6. Do Not Poll
            7. Finalize Methods
            8. Create Fewer Objects
            9. Beware of Object Leaks
            10. Consider Not Using Accessor Methods
            11. Use Compound Operators
            12. Use Int Increments
            13. Be Conscious of Access Speed for Different Variables
            14. Local Variables are Faster than Class Variables
            15. Class Variables are Faster than Array Accesses
            16. Use Faster Types as Loop Indexes
            17. Use Native Methods
            18. Use Network Timeouts
            19. Buffer Network and File I/O
            20. Use Sockets Rather than URLs
            21. Use UDP
            22. Use Threads
            23. Use notify
            24. Use Synchronization Sparingly
            25. Keep Synchronized Methods Out of Loops
            26. Watch Out for the Mother Thread
            27. Counting Down May Be Faster than Counting Up
            28. Reduce the Number of Strings
            29. Use String Buffers or Arrays
            30. Watch Out for Slow Fonts
            31. Keep the Paint Method Small
            32. Double Buffer Where Possible for Smoother Graphics
            33. Use the Runtime to Do Error Checking for You
            34. Avoid Time Conversions
            35. Be Wary of RMI, EJBs, and CORBA
          5. Compilers
            1. -O
          6. Profile Your Code
            1. JVMPI
          7. Decompilers
          8. OS-Level Profiling Tools
          9. JITs
          10. Static Compilers
          11. Virtual Machines
          12. Runtime Options
            1. -verbosegc
            2. -noverify
            3. -Xmsn and -Xmxn
            4. Make Eden Big Enough
            5. -train
            6. Use Native Threads
            7. Use .jar Files
            8. Java Plug-In
            9. -start_ java
          13. Java Chips
          14. Java Benchmarks
            1. Problems with Benchmarks
          15. Web Sites with Java Performance Info
          16. Key Recommendations
        12. 22. Databases
          1. Do You Really Need a Relational Database?
            1. When You Need a Professional Database
            2. Alternatives
          2. Performance Tips
            1. Prepared Statements and Bind Variables
            2. Denormalize Tables
            3. Do Not Create Cursors in Loops
            4. Direct Connections
            5. Main Memory Databases
            6. Multiple Tiers
            7. Connection Pool Configuration
            8. Queries
            9. Indexes
            10. Row-Level Locking
            11. Combined Web Server/Databases
          3. How Many Connections Can Your Database Handle?
          4. When the Database Is Overloaded
          5. Analysis
          6. Key Recommendations
      4. A. Web Performance Product Lists and Reviews
        1. Problems with Commercial Tools
        2. Monitoring Tools
        3. Load Generation Tools
        4. Preloaders
        5. Network Optimizers
          1. MTU Tuners
          2. Optimal Application Expert
        6. IP Traffic Management Products
        7. Content Compressors
          1. Condenser
          2. T/X 2100 Series from Redline Networks
        8. Hybrid Development Tools/Databases
        9. Java Profilers and Optimizers
        10. Caching Services
        11. Professional Services
        12. Load Balancers
        13. Modeling Tools
      5. Index
      6. Colophon