Archive for November, 2007

CHAPTER 14 (Web site management) SOLVING COMMON JAVA EE PERFORMANCE

Monday, November 19th, 2007

CHAPTER 14 SOLVING COMMON JAVA EE PERFORMANCE PROBLEMS The JVM tuning process is not the same for all JVMs, such as Sun and IBM, but some commonalities exist. SUN JVM Memory Management The Sun JVM is generational, meaning that objects are created in one space and given several chances to die before they are tenured into a long-term space. Specifically, the Sun JVM is broken into the following spaces: Young generation, including Eden and two survivor spaces (the From space and the To space) Old generation Permanent generation Figure 14-1 illustrates the breakdown of the Sun heap s generations and spaces. Figure 14-1. The Sun JVM is partitioned into two major generations: the old generation and the young generation. The young generation is further subdivided into three spaces: Eden, From space, and To space.
From our experience, we are can tell you that you can find a reliable and cheap webhost service at Java Web Hosting services.

352 CHAPTER 14 SOLVING (Domain and web hosting) COMMON JAVA EE

Sunday, November 18th, 2007

352 CHAPTER 14 SOLVING COMMON JAVA EE PERFORMANCE PROBLEMS Note Some of the content in this chapter is collected from material presented previously, but it is repeated here in the context of the problems being addressed. For additional information, please refer to the appropriate chapters earlier in the book. Out-of-Memory Errors One of the most common problems that plagues enterprise applications is the dreaded OutOfMemoryError. The error is typically followed by one of the following: An application server crash Degraded performance A seemingly endless loop of repeated garbage collections that nearly halts processing and usually leads to an application server crash Regardless of the symptoms, you will most likely need to reboot the application server before performance returns to normal. Causes of Out-of-Memory Errors Before you attempt to resolve an out-of-memory error, first understanding how it can occur is beneficial. If the JVM runs out of memory anywhere in its process memory space, including all regions in the heap as well as the permanent memory space, and a process attempts to create a new object instance, the garbage collector executes to try to free enough memory to allow the new object s creation. If the garbage collector cannot free enough memory to hold the new object, then it throws an OutOfMemoryError. Out-of-memory errors most commonly result from Java memory leaks. Recall from previous discussions that a Java memory leak is the result of maintaining a lingering reference to an unused object: you are finished using an object, but because one or more other objects still reference that object, the garbage collector cannot reclaim its memory. The memory occupied by that object is thus lost from the usable heap. These types of memory leaks typically occur during Web requests, and while one or two leaked objects may not crash your application server, 10,000 or 20,000 requests might. Furthermore, most objects that are leaked are not simple objects such as Integers or Doubles, but rather represent subgraphs within the heap. For example, you may inadvertently hold on to a Person object and that Person object has a Profile object that has several PerformanceReview objects that each maintain sets of data. Rather than losing 100 bytes of memory that the Person object occupies, you lose the entire subgraph that might account for 500KB or more of memory. In order to identify the root of this problem, you need to determine whether a real memory leak exists or whether something else is manifesting as an OutOfMemoryError. I use the following two techniques when making this determination: Analyze deep memory statistics Inspect the growth pattern of the heap
If you are searching for cheap webhost for your web application, please visit MySQL5 Web Hosting services.

CHAPTER 14 Solving Common Java

Saturday, November 17th, 2007

CHAPTER 14 Solving Common Java EE Performance Problems I am really going to miss my time at Acme. John is a great guy, and I thoroughly enjoyed this engagement. But I feel confident that Acme has all of the things it needs to be successful in place. I appreciate all of your time, John said. But before you go, can you tell me what common performance problems to look for in my environment and how to tell the difference between them? Sure! I responded. The main thing that I want to provide you with is a brain dump of the common things that I have encountered in my time out in the field. Many things can go wrong in an environment as complicated as yours, but as luck would have it, many problems seem to occur over and over. That s what I thought, but it just seems that it would take a long time to catalog those as they come in, wouldn t it? John asked. A catalog of common problems is one thing that a performance tuning consultant is in the unique position to provide to you; we get called in only when there are problems. When companies have performance problems, they call me, I spend two to four weeks isolating and resolving their problems, and then I move on to the next company. This setup does not allow me to be immersed too deeply in one environment, but it does expose me to all kinds of problems! Let s get started . . . Java EE applications, regardless of the application server they are deployed to, tend to experience the same sets of problems. As a Java EE tuner, I have been exposed to a variety of environments and have made some observations about common problems. In this capacity, I see my role as similar to that of an automobile mechanic: you tell your mechanic that the engine is chirping; then he asks you a series of questions that guide you in quantifying the nature, location, and circumstances of the chirp. From this information, he forms a good idea about a handful of possible causes of the problem. In much the same way, I spend the first day of a tuning engagement interviewing my clients. During this interview, I look for known problems as well as architectural decisions that may negatively affect the performance of the application. With an understanding of the application architecture and the symptoms of the problem, I greatly increase my chances of resolving the problem. In this chapter, I share some of the common problems that I have encountered in the field and their symptoms. Hopefully, this chapter can serve as a troubleshooting manual for your Java EE environment.
If you are looking for affordable and reliable webhost to host and run your business application visit our ftp web hosting services.

PART 4 Tips and Tricks (Web hosting ratings)

Friday, November 16th, 2007

PART 4 Tips and Tricks PART 4 Tips and Tricks
If you are looking for cheap and quality webhost to host and run your website check Jboss Web Hosting services.

348 CHAPTER 13 ASSEMBLING A PERFORMANCE MANAGEMENT (Free web space)

Thursday, November 15th, 2007

348 CHAPTER 13 ASSEMBLING A PERFORMANCE MANAGEMENT PLAN By keeping the plan up-to-date and adapting the requirements contained in it to satisfy your specific environment, you can better understand where your performance is today, where it needs to go tomorrow, and what steps you can take to ensure that it gets there. Summary This chapter has purposely remained very theoretical, because it presents information that needs to be formalized by a standards body, but the information is new enough that no standards body has done so yet. Therefore, rather than skip over this information, this chapter presented the nature of the data that needs to be captured to complete the task of performance management. The core concepts behind constructing a PMP can be summarized into three categories: Process Repository (tracking) Analysis You need to build detailed processes that direct your performance management efforts and remove ambiguity from your activities. You need to store performance management artifacts in repositories, so that you can track progress. Finally, you need to analyze these artifacts to improve both the quality of your applications and your performance management processes. Tip Keep your eyes on www.javasrc.com for updates in this field. I will post regular updates as these processes and methodologies evolve.
Go visit our java server pages services for a reliable, lowcost webhost to satisfy all your needs.

CHAPTER 13 ASSEMBLING A PERFORMANCE MANAGEMENT PLAN (Web server extensions)

Thursday, November 15th, 2007

CHAPTER 13 ASSEMBLING A PERFORMANCE MANAGEMENT PLAN The production support workflow document is described in detail in Chapter 11. In this context, names and groups are assigned to each node, so that when performance issues do arise, triaging is unambiguous. Then, too, when a performance problem does occur, tracking that performance problem and identifying its resolution are important, not only for streamlining future troubleshooting efforts, but to identify problematic components. In this context, components include application code, application server configuration, JVMs, operating systems, hardware, networks, external dependencies, and the technology stack supporting any system that your application interacts with. More than simply recording that problem A equates to resolution B, the historical performance tracking repository can help you assess the most problematic aspects of your enterprise environment. This assessment can help you choose the most appropriate components to upgrade when planning for capacity. For example, if your analysis reveals that 25 percent of all problems are network related, then when planning your upgrade pathways, a wider network is a primary consideration for upgrade; but if the problem is always in a specific application component, then that code needs to come under closer scrutiny. As with much of the performance management infrastructure, the production support infrastructure is far more than a document, but rather a means to track and analyze performance artifacts. Capacity Planning Infrastructure This book has presented detailed performance activities that are performed throughout the application development and deployment life cycle and the most complicated of those tasks revolve around capacity planning activities, because trend analysis, forecasting, and capacity planning require a significant amount of data and even more experience to yield accurate results. One advantage to these activities is that as you perform them more, you get better at performing them. But this advantage only holds true if you track your analyses and results alongside application performance assessments to evaluate the effectiveness of those analyses. Therefore, you need to capture your trend analyses, forecasting analyses, and capacity plans in a format that can be easily programmatically analyzed and compared. Separate your data from the presentation of that data: the analysis is stored in a presentation-independent form from which various outputs can be generated. The analyses of these output reports aim to identify trends impacting the business, the accuracy of forecasts, and the effectiveness of your evasive maneuvers to mitigate the impact on business processes. PMP Life Cycle An important aspect of the PMP is keeping it current, which includes the frequent review of its processes and their effectiveness. Performance management, like development, is an iterative process. You do not simply define it, swear by it, and blindly follow it; rather, you continually review it, keep the aspects of the PMP that are helping you, and improve the things that are not. The following truth can be applied to all methodologies: methodologies define the optimal approach to solving a problem in the ideal case. But real applications and environments are rarely ideal, and thus the principles defined in methodologies need to be flexible enough to adapt to a real-world scenario and continue to add value.
Please visit Domain Name Hosting services for high quality webhost to host and run your jsp applications.

346 CHAPTER 13 ASSEMBLING A PERFORMANCE MANAGEMENT (Web server on xp)

Wednesday, November 14th, 2007

346 CHAPTER 13 ASSEMBLING A PERFORMANCE MANAGEMENT PLAN testing. Capacity assessments reveal the characteristics of an enterprise environment as load increases to the point of failure; as such, they reveal the resources that bind the performance of the application. The configuration of the environment should be tailored to maximize the performance of the application in light of its binding resources. Understanding the capabilities of the environment through a capacity assessment is of paramount importance to ensuring its success in a production environment, but assessing the scalability of the environment is also important. Recall that you design and tune for performance, and test for scalability. When you complete a tuning exercise and harden an individual application server instance, you need to understand how the environment performs when you add additional hardware and/or software (application server instances). You can scale an enterprise environment in two ways: horizontally and vertically. Scale horizontally by adding additional hardware servers; scale vertically by adding additional application server instances on the existing hardware. In practical terms, the best solution is a combination of both: deploy your application to multiple application server instances, each running on multiple machines. But in order to do this, you need to understand both the capabilities of your application (capacity assessment) and the scalability of your environment (namely, how the environment performs with additional servers). The two primary factors that affect the scalability of an enterprise environment follow: High-availability requirements Failover requirements High-availability requirements define the percentage of time that your application needs to be available to your users. If your availability requirements are high, then you need to add redundancy to your topology. In this case, I usually recommend using multiple application server instances per machine, so that if one application server instance crashes, then you do not lose the entire machine; or using multiple machines, because if one machine fails, then you still have others. Failover requirements define failed application server instances impact on the users is the users session information preserved during an application server crash, or are the users required to re-create their environment before the crash? In the former case, you need to define an aggressive session replication strategy; in the latter case, you can gain performance during scalability with a more limited session replication strategy. The performance deployment infrastructure tracks scalability analyses, deployment topology documents, and postmortem performance analyses of the various environments. The purpose is to assess the effectiveness of the deployment options by correlating estimations and quantifiable production performance metrics. With this information, future deployments should become increasingly more effective. Production Support Infrastructure The production support infrastructure includes the following: Production support workflow document Historical performance tracking repository
Looking for affordable and reliable webhost to host and run your business application? Then look no more and go to servlet web hosting services.

Web design tools - CHAPTER 13 ASSEMBLING A PERFORMANCE MANAGEMENT PLAN

Tuesday, November 13th, 2007

CHAPTER 13 ASSEMBLING A PERFORMANCE MANAGEMENT PLAN The production support team members require from the APMD a hierarchical breakdown of applications that they are required to support, as well as the location of the production support workflow documentation for each application. Including this information is important, so that when a production performance issue does arise, no ambiguity exists with regard to who handles the problem when it is triaged. Finally, during capacity planning, the performance team needs to find within the APMD a breakdown of production environments and application profiles for each environment, as well as locations of all performance architecture artifacts and performance analyses. They need to know the scheduling of capacity planning activities for each environment and application. Performance Test Infrastructure Though APMD comments about how specific application testing criteria overlay the process established in the process document, it largely points to the performance test plan that resides within this infrastructure. The performance test plan defines the test schedules and success criteria for performance tests as well as the user load to use for initial performance tests and performance load tests. Most important, realize that your performance test infrastructure is the backbone of all performance test efforts, and therefore is paramount to ensuring the performance of your application before deploying it into a production environment. The performance test infrastructure also serves as a repository of performance test artifacts and performance test analysis reports. Refining testing methodologies and assessing the effectiveness of testing efforts are important tasks. Therefore, test results should be stored and analyzed by development, QA, and performance testing, in their respective areas. Specifically, performance unit tests should be performed at regular intervals, such as every weekend, so the automated reports should be stored in the performance test infrastructure repository and analyzed in conjunction with historical reports to determine the effect of code changes on performance. When you begin performance integration testing, their results should be similarly tracked; these results are a good indication of the effectiveness of performance unit testing methodologies. If performance unit tests consistently report satisfactory results, but during integration the application as a whole falls apart, then both the nature of the unit tests and the division of the application into components need to be analyzed. Performance unit tests should help performance, and if they do not, then you are wasting important development cycles by building performance tests and analyzing their results. Similar analysis needs to be performed on production staging tests and capacity assessments. Performance integration tests, performance production staging tests, and capacity tests are only performed at the conclusion of a successfully integrated iteration, which means that throughout your development life cycle, you should not amass more than a couple dozen of these. With these few data points, assessing the effectiveness of your performance testing infrastructure is not difficult, and when implemented as both an intermediate step and a postmortem follow up, it will greatly improve the delivery of your applications. Performance Deployment Infrastructure Deploying a Java EE application is a nontrivial task, and as such, it needs to be carefully planned, which requires a considerable amount of time and experience. Deployment must be based on quantifiable data, such as data obtained through capacity assessment analysis and scalability
We would like to recommend you tested and proved virtual web hosting services, which you will surely find to be of great quality.

Unlimited web hosting - 344 CHAPTER 13 ASSEMBLING A PERFORMANCE MANAGEMENT

Monday, November 12th, 2007

344 CHAPTER 13 ASSEMBLING A PERFORMANCE MANAGEMENT PLAN How often in a software development project have you built architecture documents, implemented code that did not exactly follow the architecture documents, and then gone back and matched the documents to the code? Very rarely, I would guess, unless you worked in a very strict environment that demanded that you keep your documents in synch with your code. Architecture documents provide a solution to a problem, but the practicality of realizing that solution may necessitate architectural modifications. Reflecting those modifications back into the architecture documents is an arduous and tedious process that usually falls by the wayside, unless an automated tool synchronizes them on your behalf. If you were required to not only synchronize your architecture documents with your code but also your APMD with your architecture documents, there is little chance that you would do it. An out-of-synch document is worth less than the paper it is printed on (or the bytes that it occupies on your hard drive). The APMD s architecture section explicitly names the application technical owners and application business owners for each major component or application (depending on how you break the roles down). The rationale is as follows: if a change is requested for a component, then its feasibility needs to be assessed by the application technical owner, and its applicability and impact need to be approved by the application business owner. Therefore, these people must be explicitly identified. This section also summarizes the various architectural artifacts for the application as well as where they can be found. For example, the use cases for iteration 7, with embedded performance criteria, are located in the following document: \DocumentServerMyApplicationArchitectureIteration 7 Use Cases.doc Remember that when QA team members evaluate the application against both functional and performance criteria, they need to know the criteria with which to evaluate the application. The APMD is the first location that they will examine to determine where to find these criteria. While the process document defines the standard toolsets and processes around development performance testing methodologies, the APMD defines the frequency of automated performance tests as well as the technology leads that will review them. For example, the APMD for an application may require that code and memory profilers be run against the code every weekend, while the coverage profiler should run every day. Furthermore, for each component, a designated lead reviews the reports every Monday morning as well as the historical performance trends of the various subcomponents. The APMD identifies specific components and subcomponents within the application and the primary parties responsible for each. Production support may use this information when triaging performance issues. From the APMD, the QA team members need to know the performance criteria with which to evaluate the functional aspects of use cases. They also need an iteration-by-iteration breakdown of success criteria. For example, if on the first iteration of use case 13, a full pass through the entire application technology stack is not executed, the performance criteria should be evaluated accordingly. Additionally, they need to know the critical masses for the integration performance tests, specifically the user load for the performance integration test and the performance integration load test. The production staging performance teams need to be able to collect similar information from the APMD, about user load for the production staging performance test and production staging load test. They need to know when (that is, at the conclusion of which iteration) the application will be mature enough to subject to a production staging set of performance tests. Additionally, they need an environmental breakdown of the applications that are targeted to run in the same shared environment.
From our experience, we are can tell you that you can find a reliable and cheap webhost service at Java Web Hosting services.

CHAPTER 13 ASSEMBLING A PERFORMANCE (Web server extensions) MANAGEMENT PLAN

Sunday, November 11th, 2007

CHAPTER 13 ASSEMBLING A PERFORMANCE MANAGEMENT PLAN The production staging section of the performance management process document defines the performance processes that need to be implemented when integrating an application into a shared, production-like environment. These processes include a formal definition of a production staging performance test and a production staging load test and what these tests mean specifically in the environment. This section addresses the processes employed to perform capacity assessments. For example, it may assert that the applications should be load tested using product XYZ following a normal ramp-up period to expected usage and then following a linear graduated step as defined in the Application Performance Management document(s). Furthermore, the production staging section defines the monitoring criteria for measuring resource utilization, response time, and request throughput during a capacity assessment, such as enabling the 24 7 monitoring tool without deep diagnostics enabled, to mimic production. The production section of the performance management process document defines the production support workflow infrastructure, such as monitoring tools and alerts to be implemented, as well as the production support workflow process, which, in turn, defines the entry point of alerts and the triaging process. For example, the production performance management process may state that inputs to the support process may include user phone calls and e-mails as well as monitoring alerts. When an alert enters the system, it is directed to the help desk for triaging. Using the performance monitoring tool, the help desk representative triages the alert to the appropriate component, and after reviewing the APM document for the offending component, the alert is forwarded to the appropriate second-level support representative. This section details how the production support methodology (see Chapter 11) is implemented in each environment. The capacity planning section defines the frequency and nature of capacity planning activities, including trend analysis, forecasting, and capacity planning. Recall that trending is the analysis of performance data to identify discernable patterns; forecasting is the projection of those patterns on the enterprise environment to understand the impact on business processes; and capacity planning is the response to forecasts to ensure the integrity of business processes. As such, these activities are not trivial and must be planned into the performance management life cycle. The capacity planning section of the PMP defines the tools to be used for capacity planning as well as the frequency and duration of the activities. For example, the capacity planning section may allocate one month of time every two quarters for the performance team to perform capacity planning activities. The process document is application agnostic, and as its name suggests, it focuses on process details. The APM documents focus on the performance management details for individual applications. Application Performance Management Document Each application maintains an Application Performance Management Document (APMD) that defines application-specific participation in the PMP process. Like the PMP process document, this document is divided into sections that correspond to each phase in the application development and deployment life cycle. In many cases, the specific values for performance criteria are defined in other architecture artifacts, and in such cases, the APMD serves as a directory to locate these documents. The APMD must not duplicate much information from other architecture artifacts, because if it does, it will quickly fall out of synch with the architecture documents and lose its value.
Go visit our java server pages services for a reliable, lowcost webhost to satisfy all your needs.