You are previewing Virtualizing and Tuning Large-Scale Java Platforms.
O'Reilly logo
Virtualizing and Tuning Large-Scale Java Platforms

Book Description

Virtualizing and Tuning Large-Scale Java Platforms

Technical best practices and real-world tips for optimizing enterprise Java applications on VMware vSphere®

Enterprises no longer ask, “Can Java be virtualized”? Today, they ask, “Just how large can we scale virtualized Java application platforms, and just how efficiently can we tune them?” Now, the leading expert on Java virtualization answers these questions, offering detailed technical information you can apply in any production or QA/test environment.

Emad Benjamin has spent nine years virtualizing VMware’s own enterprise Java applications and working with nearly 300 leading VMware customers on projects of all types and sizes—from 100 JVMs to 10,000+, with heaps from 1GB to 360GB, and including massive big-data applications built on clustered JVMs. Reflecting all this experience, he shows you how to successfully size and tune any Java workload.

This reference and performance “cookbook” identifies high-value optimization opportunities that apply to physical environments, virtual environments, or both. You learn how to rationalize and scale existing Java infrastructure, modernize architecture for new applications, and systematically benchmark and improve every aspect of virtualized Java performance. Throughout, Benjamin offers real performance studies, specific advice, and “from-the-trenches” insights into monitoring and troubleshooting.

Coverage includes

--Performance issues associated with large-scale Java platforms, including consolidation, elasticity, and flexibility

--Technical considerations arising from theoretical and practical limits of Java platforms

--Building horizontal in-memory databases with VMware vFabric SQLFire to improve scalability and response times

--Tuning large-scale Java using throughput/parallel GC and Concurrent Mark and Sweep (CMS) techniques

--Designing and sizing a new virtualized Java environment

--Designing and sizing new large-scale Java platforms when migrating from physical to virtualized deployments

--Designing and sizing large-scale Java platforms for latency-sensitive in-memory databases

--Real-world performance studies: SQLFire vs. RDBMS, Spring-based Java web apps, vFabric SpringTrader, application tiers, data tiers, and more

--Performance differences between ESXi3, 4.1, and 5

--Best-practice considerations for each type of workload: architecture, performance, design, sizing, and high availability

--Identifying bottlenecks in the load balancer, web server, Java application server, or DB Server tiers

--Advanced vSphere Java performance troubleshooting with esxtop

--Performance FAQs: answers to specific questions enterprise customers have asked

Table of Contents

  1. Title Page
  2. Copyright Page
  3. Dedication
  4. Contents
  5. Preface
    1. Motivation for Writing This Book
    2. Prerequisites
    3. What do you really need to know first!?
    4. Is 4GB Java Heap the new 1GB? Why?
    5. Why should I bother with Virtualization – what are key benefits?
    6. Why should I bother with Virtualization – what are key benefits?
    7. Who Should Read This Book
    8. How to Use This Book
  6. About the Author
  7. Acknowledgments
  8. We Want to Hear from You!
  9. Reader Services
  10. Chapter 1. Introduction to Large-Scale Java Platforms
    1. Large-Scale Java Platform Categories
    2. Large-Scale Java Platform Trends and Requirements
    3. Large-Scale Java Platform Technical Considerations
    4. Summary
  11. Chapter 2. Design and Sizing Large Scale Java Platforms
    1. Designing and Sizing a New Environment for a Virtualized Large Scale Java Platform
    2. Sizing vFabric SQLFire Java Platforms - Category 2 Workloads
    3. Chapter Summary
  12. Chapter 3. Tuning Large-Scale Java Platforms
    1. GC Tuning Recipe
    2. Chapter Summary
  13. Chapter 4. Modern Scalable Data Platforms
    1. SQLFire Topologies
    2. SQLFire Features
    3. Active-Active Architectures and Modern Data Platforms
    4. Chapter Summary
  14. Chapter 5. Performance Studies
    1. SQLFire versus RDBMS Performance Study
    2. The Olio Workload on tcServer and vSphere Performance Study
    3. SpringTrader Performance Study
    4. Performance Differences between ESXi3, 4.1 and 5
    5. vSphere 5 Performance Enhancements
    6. Chapter Summary
  15. Chapter 6. Best Practices
    1. Enterprise Java Applications on vSphere Best Practices (Category-1)
    2. SQLFire Best Practices, and SQLFire on vSphere Best Practices (Category 2 JVM workload best practices)
    3. Category 3 Workloads Best Practices
    4. IBM JVM and Oracle jRockit JVMs
    5. Chapter Summary
  16. Chapter 7. Monitoring and Troubleshooting Primer
    1. Open a Support-request Ticket
    2. Collecting Metrics from vCenter
    3. Troubleshooting Techniques for vSphere with esxtop
    4. Java Troubleshooting Primer
    5. Chapter Summary
  17. Appendix. FAQs
    1. “We have virtualized our WebSphere environment and we are now considering open source applications server alternatives, what options do we have in this space”
    2. “Are there any customer testimonies, from customers who have virtualized and tuned large Scale Java Platforms that follow the recommendations you provided?”
    3. “I’m afraid that performance will suffer if I virtualize the enterprise Java application.”
    4. “I looked at virtualization, and in my environment I can only get a three-to-one server-consolidation ratio, so I don’t think it’s worth it.”
    5. “Where can I get support?”
    6. “Why would I choose to virtualize enterprise Java applications?”
    7. “Are there any performance issues?”
    8. “We have an environment of 8000 JVMs all made of Weblogic application instances, how could we possibly virtualize this?”
    9. “What Technology Tools and Runtime Services are contained in vFabric?”
    10. “Do I have to code Java differently when running on vSphere?”
    11. “Are there any Java best practices for vSphere?”
    12. “How would you achieve vertical scalability of Java applications running on vSphere?”
    13. “How would you achieve horizontal scalability of Java applications running on vSphere?”
    14. “How would you guard against server hardware failure when running Java applications on vSphere?”
    15. “How would you achieve high availability of Java applications running on vSphere?”
    16. “How many JVMs can I stack on a single VM and how many vCPUs should the VM use?”
    17. “Which application servers have been proven on vSphere in production?”
    18. “What kind of testing has been done to validate running Weblogic on vSphere?”
    19. “Which Web servers have been proven on vSphere in production?”
    20. “Java applications platforms are multitier, which tiers make sense to virtualize first?”
    21. “How does vSphere help with business continuity for enterprise Java applications?”
    22. “If I have a problem with Oracle WebLogic Server running on VMware virtual infrastructure, who should I call for support?”
    23. “If I have a problem with IBM Websphere Server running on VMware vSphere, who should I call for support?”
    24. “What about licensing?”
    25. “Are there any customer references?”
    26. “What decisions must be made due to virtualization?”
    27. “I have conducted extensive GC sizing and tuning for our current enterprise Java application running on physical. Do I have to adjust anything related to sizing when moving this Java application to a virtualized environment?”
    28. “How many and what size of virtual machines will I need?”
    29. “What is the correct number of JVMs per virtual machine?”
    30. “We would like to use the full logical CPU capacity of a host and take full advantage of HT.”
    31. “We have a monitoring system that is a single JVM heap of 360GB large could we tune this?”
    32. “We are in the DevOps team and we get challenged about our JVM knowledge by the developers, can you help us with some preliminary information about the JVM internals and how it needs to be sized?”
  18. Glossary