As your site nears its launch date, you should test the site as extensively as possible, using tests that simulate the expected site load as realistically as possible.

If you run into performance problems, you can best identify and correct the source of the problem by taking a systematic approach. The following checklist can help you identify the most common sources of performance problems:

  1. Have you properly configured memory for your Java Virtual Machines? Have you set your -Xms and -Xmx arguments the same? Do all Dynamo heap sizes fall within the limits of physical memory?

  2. Has one or more servers stopped responding? There could be a number of causes, including a Java deadlock. See Server Hangs.

  3. Are you seeing many IOExceptions with the message “Too many open files”? You may have a file descriptor leak. See Detecting File Descriptor Leaks.

  4. At maximum throughput, look at the CPU utilization, database CPU utilization, I/O activity, and paging activity. See Monitoring System Utilization.

  5. If CPU utilization is low, then you may have an I/O or database bottleneck. See Checking for Disk I/O Bottlenecks, Checking for Network-Limited Problems, and Repository and Database Performance.

  6. If CPU utilization is high, then the bottleneck is most likely in the application code. Use a performance profiling tool like Borland’s OptimizeIt to try to locate bottlenecks in the code. Review your code to make sure it uses good Java programming practices.

  7. If paging is occurring, adjust the memory allocated to your Java Virtual Machines. See the Swap Space topic in the Paging and Memory Allocation section.

  8. Look at the I/O and CPU utilization of the database. If utilization is high, database activity is probably slowing down the application. See the Repository and Database Performance chapter.

  9. Are you receiving page compilation errors? You may not have enough swap space for page compilation.

If your site develops performance problems, you need to test several paths through your site to determine the source or sources of the problems. To generate meaningful test results, you need to test the site with loads that achieve maximum throughput.

loading table of contents...