Welcome!

@BigDataExpo Authors: Pat Romanski, Yeshim Deniz, Elizabeth White, Liz McMillan, Ed Featherston

Related Topics: @CloudExpo, Java IoT, Microservices Expo, Microsoft Cloud, IoT User Interface, @BigDataExpo

@CloudExpo: Article

Top Eight Application Performance Landmines

An update to best practices

We have been blogging about the same problems and problem patterns we see while working with our customers over the past few of years. There have always been the classic application performance landmines in the areas of inefficient database access, misconfigured frameworks, excessive memory usage, bloated web pages and not following common web performance best practices among others.

More than two years ago we posted summary blogs of the Top Server-Side Performance Problems and the Top 10 Client-Side Performance Problems to give operations, architects, testers and developers easy-to-consume best practices. We feel that it is time to provide an update to these best practices as new problem patterns have since come into play. We also want to cover more than just problems that happen within your application by broadening the scope across the entire Application Delivery Chain. This includes all components between your end user and your back-end systems, databases and third-party services. The following illustrates which components are involved and what the typical errors are along the delivery chain.

Delivering an application to the end user has become more complex as it involves more components than ever before. This also leaves a lot of room for mistakes that impact end-user experience.

Let's now dig a little deeper in some of the highlighted problem areas. The following lists our Top Performance Landmines that have been reported by our customers such as BonTon and Swarovski. Other companies include those in the financial services industry, manufacturing industry and energy industry among others. To make it easier for you to decide which landmines to read we also added the target audience for each problem area.

Bloated Web Front Ends
Audience:
Operations, Architects, Testers, Developers
Often companies focus on optimizing the performance of the applications they deliver by tuning the code, reducing SQL overhead, implementing application caching, and other items that are, for the most part, invisible to the customer using the application. However, all of this effort and activity can go completely unnoticed if the content being delivered to customers is bloated and inefficient.

Sources we track show that the average page delivered to customers has been steadily increasing in size and complexity over the last 3-4 years as well as customers' expectations of performance. This continuous conflict of business vs customer expectations needs to be understood in order to be effectively managed. What companies need to realize is that what they consider to be fast and efficient doesn't really matter. If the customers using the site believe that the site is slow and hard to use, they won't use it and they will tell their friends about their poor experience.

Comparing your performance to top competitors in your industry as well as Internet leaders helps you set performance goals that can be achieved over time. Additionally, understanding why your customers leave your site can help you resolve customer experience issues: Is it a particular subset of customers who leave? Which page caused them to leave? Is there an application function on that page that is bloated and slow?

Comparing your site against peers in the same industry will help you understand where you rank.

Using caching, compression, CDNs, and a critical eye that asks questions about every new image, function, and feature you add, you can trim the weight of your site and deliver a better customer experience.

We discuss the performance degradation that can be traced to bloated front ends and how this affects site performance in Performance Improvement is not Performance Optimization and Super Bowl Sunday 2013 - Winners, Losers, and Casualties.

Slow Third-Party Content and CDNs
Audience:
Operations, Architects, Testers
Focusing on your own content can leave you exposed to performance issues that originate outside your organization. With companies adding more content from third-party sources to their site, managing application performance becomes increasingly complex, even when these services are designed to improve performance.

During peak performance events over the last 12 months - holiday shopping season and the Super Bowl - two primary trends were seen: third-party services were overwhelmed when more than one of their customers reached peak traffic simultaneously and CDNs buckled under flash loads that were far larger than even the busiest days their customers typically experience.

Third-party services are here to stay. It is far easier to sign a contract with an advertising firm to help you optimize the display of ads on your site than to try and design such a system yourself. Items such as analytics, social media, web fonts, and popular JavaScript libraries are often drawn from services you don't directly control, but rely on to work efficiently and reliably at all times. When these external services have an issue, it's your brand that takes the customer experience hit, not the third party.

Monitoring and managing third parties means treating them as unique applications, with their own baselines and Service Level Agreements (SLAs) and Service Level Objectives (SLOs). It sometimes means asking tough questions of these services, such as:

  • Have you load tested your systems to see what happens when three of your largest customers experience peak traffic simultaneously?
  • What is the escalation path we should follow with your team when we discover a performance issue that is affecting our customers?
  • How well did your system perform during the eight busiest hours over the last 12 months, not just the average performance?

Monitor the impact of slow third-party and CDN content on your page load time.

Finally, your team needs to be prepared for the scenario where a third-party service or CDN suffers a severe outage or begins to seriously degrade your site performance. Always have a Plan B, C, etc. that gives you the ability to mitigate the issue. These plans could include removing third-party tags, images, and content from your site entirely during peak traffic, load balancing between multiple CDNs, moving content to a secondary cloud provider, all the way to switching to a simple bare bones site that removes all rich media until traffic returns to a normal level.

Unless you know how third parties affect your performance, there is no way for you to manage them effectively. Once you manage your third parties, you can take control of all aspects of your site performance.

More on third-party services and their effects on application performance is covered in: You only control 1/3 of your Page Load Performance!, Third Party Content Management applied: Four steps to gain control of your Page Load Performance!, The Ripple Effect of Facebook's Outage, Third-Party Issues and the Performance Ripple Effect, and Website's Vulnerability to Third-Party Services Exposed.

We also discuss third parties, most notably CDN performance in: Super Bowl Sunday 2013 - Winners, Losers, and Casualties, and Why Bon Ton needs real-time visibility into 85% of its content delivered by Akamai.

Wrong Usage of Frameworks
Audience:
Architects, Developers
In typical software projects it is very likely that most of the code that ends up running on the application servers, in your rich client or in the browser (JavaScript) is not developed by your company but comes from third-party libraries such as Hibernate, Spring, Telerik RadControls, jQuery, ExtJS or GWT. The list probably goes on forever as these third-party frameworks allow you to be more productive by eliminating the need to write code for common tasks such as data access, special UI controls or creating complex HTML, CSS and JavaScript for interactive web applications. The problems we see, however, are that frameworks are often not used in the way they should be used, or are often not optimized for the way you use them in your application. Developers tend to search for frameworks on the web, test them on a sample application and include them in the enterprise application without properly validating that the framework supports all uses cases and whether it can scale and perform in the way needed. In many cases it "just" requires better configuration of these frameworks such as the correct Cache strategy for Hibernate or using different API functions that provide advanced features such as in SharePoint when accessing List data. Sometimes, however, it turns out that the choice of a framework was wrong, resulting in a replacement or even custom coding of the required functionality.

The following screenshot shows that Hibernate executes the same SQL query multiple times instead of caching the result from the first query. This happens in case Hibernate has not been configured correctly to perform optimally for your specific needs:

Loading a person two times in a row, but no session cache involved

Finally, frameworks get constantly updated to improve functionality but also improve performance and stability. You want to watch out for these updates and also update your implemented framework version to benefit from the improvements. We have seen cases where, e.g., jQuery was never updated leaving websites with bad performance on older browsers and sometimes even on newer browsers when older versions of jQuery didn't leverage the capabilities of the latest IE, FF, Chrome or Safari browsers.

The next screenshot shows the performance of DOM Element lookups using an older version of the Spry JavaScript framework. Even when opening the page on a modern Firefox browser these lookups contribute about 3.5 seconds to the Page Load Time:

Long-running CSS Class Name Lookups contribute about 80% to the Client-Side Load Time.

If you want to read more about common problems when using these types of frameworks check out our blogs series on Hibernate (The Session Cache, The Query Cache, Second Level Cache), the Top SharePoint Performance Mistakes or the 101 on jQuery Selector Performance.

Network Infrastructure Problems
Audience:
Operations, Architects, Testers
Network infrastructure is an important component of every successful business operation. Performance problems experienced by end users can have various origins. The operation teams need Application Performance Monitoring solutions that will enable them to isolate fault domains effortlessly and quickly.

Sometimes the answer is not obvious and performance problems can end up in a "war room" between infrastructure and application providers. The team needs to analyze whether the problem is present at all locations where the application is executed. In certain cases, the performance problems might be caused by external infrastructure used by some users.

Performance problems can be pretty costly. According to the report by the Aberdeen Group they can reduce revenue by 9% and productivity by 64%. When our services are based on the SAP infrastructure the costs can rise to even $15,000 per every minute of a service downtime. Even though SAP provides tools to monitor its components, the proper APM solution should deliver a holistic view over the entire infrastructure. Only then can the Operations team tell whether it is a problem with SAP components that were quite an investment to deploy or it's an infrastructure problem that's not related to the SAP or any application.

Overview of SAP tier with top most under-performing modules and most affected users

The most obvious hints on whether this is a network or an application problem can be seen by checking for the Network and Server time outliers compared to the values of the baseline traffic. But eyeballing the reports is not enough to avoid problems. The first step toward proactive application performance management is to learn to respond promptly to alerts triggered by the APM tool when key measures go outside of the usual range.

Cloud Gotchas
Audience:
Operations, Architects
"The Cloud"
comes with a great promise: endless resources for endless scalability and performance when I need it. This eliminates the need to buy a lot of hardware that sits idle most of the time but is only used during peak traffic periods. It also allows me to scale and perform far beyond what is expected without needing to wait for additional hardware to ship.

But there are some gotchas: throwing hardware at an application that is not designed to scale in a cloud environment won't leverage the possibilities that the cloud provides. In fact, it often ends up being a very costly endeavor. One must also understand that The Cloud - unless we talk about a private cloud setting - is an environment that is not owned by you. Direct access to the underlying hardware is not as easy as if the hardware is located in the next room, which makes troubleshooting or monitoring much harder. The cloud is also not just an endless resource pool of CPU, Memory or Disk On-Demand. It provides lots of other services such as storage, messaging and more which one must understand and monitor for performance, as these services are key components of your application.

It is recommended to live monitor cloud instance usage and cost in order to not fall into a cost trap

Relating to these problem areas you want to read the following blog posts: Managing Hybrid Cloud Environments, Analyzing Performance of Windows Azure Storage, Why Performance Monitoring is easier in Public than onPremise Clouds and Monitoring your Clouds.

Too Many Database Calls
Audience:
Architects, Testers, Developers
Database Access is the problem we see the most within the application. It is nothing new - but - as we still see it on almost every application we work with, it is critical enough to mention it again. The first lesson learned is that the blame is often not on the database side but on the access patterns of the application to the database. All too often we see a single web request that queries thousands of database statements. There are multiple reasons for it: fetching too much data beyond just the data that is needed or inefficient fetching of data that then gets aggregated and computed in the application rather than in a stored procedure. What is really interesting is that we see this problem pattern not only in distributed applications running on modern application servers. We also see it on "legacy" applications such as VB6 or even the mainframe. The following screenshot highlights the transaction flow of an enterprise application that calls the mainframe. The mainframe transaction makes 225 SQL executions per transaction. A closer look typically reveals that the same statements are called hundreds of times due to the reasons mentioned above:

The Transaction Flow highlights how services interact with each other including the number of interactions to DB2 which indicate a potential architectural and performance problem.

Besides these access pattern problems we also see individual statements that take a long time to execute. In this case, it is important to not only focus on the database to optimize statements by tweaking indices or the like, it's also important to analyze whether these queries can be optimized from within the application. We often see that too much data is retrieved from the database, which first gets parsed by the application (using extra memory) and is then thrown away (more GC activity). Another landmine is misconfigured connection pools or application code that holds on to connections too long and ends up blocking other threads from accessing the database.

The following screenshot shows the database queries executed by a single transaction, most of them taking very long to execute. The fix to this problem was to optimize these statements in both the application and in the database:

The architects in this case started by optimizing SQL statements that took a long time to execute and those that got executed several times within the same transaction.

For further reading check out our blogs with more detailed background on these problem patterns such as Don't let your load balancers ruin your holiday business or Saving MIPS and Money. For connection pool problems we also have one interesting blog named The reason I don't monitor connection pool usage.

Big Data Not Optimized
Audience:
Operations, Architects, Testers, Developers
The amount of data that we and our applications have to process is constantly growing. Big Data solutions (NoSQL, MapReduce...) provide new approaches to storing and processing large amount of data. But as with every technology it needs to be used in an optimized way to fit your specific needs. It is a misconception that you can simply process more data by adding additional resources to, e.g., a MapReduce cluster in order to speed up data processing. This only works if you have implemented your jobs in a way that allows them to scale. The same is true for accessing data from a NoSQL database. The same problems we see with relational databases also apply to accessing data in Big Data solutions. If you make inefficient queries or more queries than necessary, you are going to impact performance.

The following screenshot highlights a transaction that spends most of its time in MongoDB. A closer look into this revealed that the framework used to access MongoDB made a call to a size method of the cursor that then executed an additional query to MongoDB, which was totally unnecessary. In this example, eliminating that call reduced roundtrips to MongoDB and improved overall transaction performance by 15x:

Transactions that call JourneyCollection.getCount spend nearly half their time in MongoDB.

If you are using Big Data technologies such as Cassandra, MongoDB, Hadoop, or the like I suggest following up with the following blog posts that explain some of the problem patterns and highlight best practices: MongoDB Anti-Pattern, NoSQL vs Traditional Databases, Inside Cassandra Write Performance and What we can Learn from Cassandra Pagination. Also check out 15x Performance Improvements for Pig+HBase.

Undetected Memory Leaks
Audience:
Architects, Testers, Developers
Memory and Garbage Collection problems are still very prominent issues in any enterprise application. One of the reasons is that the very nature of Garbage Collection is often misunderstood. Besides the traditional memory-related problems such as high memory usage, wrong cache usage strategies, we also see memory issues related to class loading, large classes or native memory. The following screenshot shows the problem of having single objects consuming a lot of memory. Not that this is a bad idea if necessary - but too often this happens because information is kept in memory for no apparent reason and with that consuming memory that is not available for others.

Single Object that is responsible for a big portion of the memory being leaked

Traditional memory leaks often lead to out of memory exceptions and typically to crashes of the virtual machines. This has a negative impact on the end user as the current context of user sessions and active transactions might be lost.

High memory usage on the other hand can result in high garbage collection, which has a direct impact on end user response time. Transactions that are suspended because of long running garbage collection processing can be optimized by tweaking garbage collection settings as well as being less "wasteful" with memory.

Even problems related to wrong implementations of equals/hashcode can lead to memory problems. To address this problem we wrote a full chapter on Memory Management in our Java Enterprise Performance book that explains concepts like How Garbage Collection works, Difference between JVMs, GC Tuning, High Memory Usage and the Root Cause, Class Load Related Problems and more. We have also blogged about specific memory scenarios - check out the following blogs: Memory Monitoring in WebSphere Environments, GC Bottlenecks in Heterogeneous Environments, Leak Detection in Production Environments, Top Memory Problems - Part I and Part II.

More to Come...
These landmines are some highlights with links to more detailed blog posts. As we continue to blog about these problem patterns, we plan to compile a second list of problems later this year. Keep watching our blog for more information and check out our online book on Java Enterprise Performance.

More Stories By Andreas Grabner

Andreas Grabner has been helping companies improve their application performance for 15+ years. He is a regular contributor within Web Performance and DevOps communities and a prolific speaker at user groups and conferences around the world. Reach him at @grabnerandi

Comments (0)

Share your thoughts on this story.

Add your comment
You must be signed in to add a comment. Sign-in | Register

In accordance with our Comment Policy, we encourage comments that are on topic, relevant and to-the-point. We will remove comments that include profanity, personal attacks, racial slurs, threats of violence, or other inappropriate material that violates our Terms and Conditions, and will block users who make repeated violations. We ask all readers to expect diversity of opinion and to treat one another with dignity and respect.


@BigDataExpo Stories
SYS-CON Events announced today that BMC Software has been named "Siver Sponsor" of SYS-CON's 18th Cloud Expo, which will take place on June 7-9, 2015 at the Javits Center in New York, New York. BMC is a global leader in innovative software solutions that help businesses transform into digital enterprises for the ultimate competitive advantage. BMC Digital Enterprise Management is a set of innovative IT solutions designed to make digital business fast, seamless, and optimized from mainframe to mo...
SoftLayer operates a global cloud infrastructure platform built for Internet scale. With a global footprint of data centers and network points of presence, SoftLayer provides infrastructure as a service to leading-edge customers ranging from Web startups to global enterprises. SoftLayer's modular architecture, full-featured API, and sophisticated automation provide unparalleled performance and control. Its flexible unified platform seamlessly spans physical and virtual devices linked via a world...
The IoT is changing the way enterprises conduct business. In his session at @ThingsExpo, Eric Hoffman, Vice President at EastBanc Technologies, discuss how businesses can gain an edge over competitors by empowering consumers to take control through IoT. We'll cite examples such as a Washington, D.C.-based sports club that leveraged IoT and the cloud to develop a comprehensive booking system. He'll also highlight how IoT can revitalize and restore outdated business models, making them profitable...
As organizations shift towards IT-as-a-service models, the need for managing and protecting data residing across physical, virtual, and now cloud environments grows with it. Commvault can ensure protection, access and E-Discovery of your data – whether in a private cloud, a Service Provider delivered public cloud, or a hybrid cloud environment – across the heterogeneous enterprise. In his general session at 18th Cloud Expo, Randy De Meno, Chief Technologist - Windows Products and Microsoft Part...
IoT generates lots of temporal data. But how do you unlock its value? How do you coordinate the diverse moving parts that must come together when developing your IoT product? What are the key challenges addressed by Data as a Service? How does cloud computing underlie and connect the notions of Digital and DevOps What is the impact of the API economy? What is the business imperative for Cognitive Computing? Get all these questions and hundreds more like them answered at the 18th Cloud Expo...
The cloud market growth today is largely in public clouds. While there is a lot of spend in IT departments in virtualization, these aren’t yet translating into a true “cloud” experience within the enterprise. What is stopping the growth of the “private cloud” market? In his general session at 18th Cloud Expo, Nara Rajagopalan, CEO of Accelerite, will explore the challenges in deploying, managing, and getting adoption for a private cloud within an enterprise. What are the key differences betwee...
SYS-CON Events announced today that EastBanc Technologies will exhibit at SYS-CON's 18th International Cloud Expo®, which will take place on June 7-9, 2016, at the Javits Center in New York City, NY. EastBanc Technologies has been working at the frontier of technology since 1999. Today, the firm provides full-lifecycle software development delivering flexible technology solutions that seamlessly integrate with existing systems – whether on premise or cloud. EastBanc Technologies partners with p...
In his session at 18th Cloud Expo, Andrew Cole, Director of Solutions Engineering at Peak 10, will discuss how the newest technology advances are reducing the cost and complexity of traditional business continuity and disaster recovery solutions. Attendees will: Learn why having a full disaster recovery strategy is more important now than ever before Explore the key drivers of a successful disaster recovery solution Achieve measurable operational and business value from a disaster recovery ...
SYS-CON Events announced today Object Management Group® has been named “Media Sponsor” of SYS-CON's 18th International Cloud Expo, which will take place on June 7–9, 2016, at the Javits Center in New York City, NY, and the 19th International Cloud Expo, which will take place on November 1–3, 2016, at the Santa Clara Convention Center in Santa Clara, CA.
SYS-CON Events announced today that Commvault, a global leader in enterprise data protection and information management, has been named “Bronze Sponsor” of SYS-CON's 18th International Cloud Expo, which will take place on June 7–9, 2016, at the Javits Center in New York City, NY, and the 19th International Cloud Expo, which will take place on November 1–3, 2016, at the Santa Clara Convention Center in Santa Clara, CA. Commvault is a leading provider of data protection and information management...
SYS-CON Events announced today that Hanu Software will exhibit at SYS-CON's 18th International Cloud Expo®, which will take place on June 7-9, 2016, at the Javits Center in New York City, NY. Leveraging best-in-class people, processes, and technologies, Hanu provides high-quality, high-value software development and business process outsourcing services to independent software vendors (ISVs) and enterprises.
In his session at 18th Cloud Expo, Bruce Swann, Senior Product Marketing Manager at Adobe, will discuss how the Adobe Marketing Cloud can help marketers embrace opportunities for personalized, relevant and real-time customer engagement across offline (direct mail, point of sale, call center) and digital (email, website, SMS, mobile apps, social networks, connected objects). Bruce Swann has more than 15 years of experience working with digital marketing disciplines like web analytics, social med...
SYS-CON Events announced today that Tintri Inc., a leading producer of VM-aware storage (VAS) for virtualization and cloud environments, will exhibit at the 18th International CloudExpo®, which will take place on June 7-9, 2016, at the Javits Center in New York City, New York, and the 19th International Cloud Expo, which will take place on November 1–3, 2016, at the Santa Clara Convention Center in Santa Clara, CA.
The cloud era has reached the stage where it is no longer a question of whether a company should migrate, but when. Enterprises have embraced the outsourcing of where their various applications are stored and who manages them, saving significant investment along the way. Plus, the cloud has become a defining competitive edge. Companies that fail to successfully adapt risk failure. The media, of course, continues to extol the virtues of the cloud, including how easy it is to get there. Migrating...
The initial debate is over: Any enterprise with a serious commitment to IT is migrating to the cloud. But things are not so simple. There is a complex mix of on-premises, colocated, and public-cloud deployments. In this power panel at 18th Cloud Expo, moderated by Conference Chair Roger Strukhoff, panelists will look at the present state of cloud from the C-level view, and how great companies and rock star executives can use cloud computing to meet their most ambitious and disruptive business ...
SYS-CON Events announced today that ContentMX, the marketing technology and services company with a singular mission to increase engagement and drive more conversations for enterprise, channel and SMB technology marketers, has been named “Sponsor & Exhibitor Lounge Sponsor” of SYS-CON's 18th Cloud Expo, which will take place on June 7-9, 2016, at the Javits Center in New York City, New York. “CloudExpo is a great opportunity to start a conversation with new prospects, but what happens after the...
The IoTs will challenge the status quo of how IT and development organizations operate. Or will it? Certainly the fog layer of IoT requires special insights about data ontology, security and transactional integrity. But the developmental challenges are the same: People, Process and Platform. In his session at @ThingsExpo, Craig Sproule, CEO of Metavine, will demonstrate how to move beyond today's coding paradigm and share the must-have mindsets for removing complexity from the development proc...
SYS-CON Events announced today that AppNeta, the leader in performance insight for business-critical web applications, will exhibit and present at SYS-CON's @DevOpsSummit at Cloud Expo New York, which will take place on June 7-9, 2016, at the Javits Center in New York City, NY. AppNeta is the only application performance monitoring (APM) company to provide solutions for all applications – applications you develop internally, business-critical SaaS applications you use and the networks that deli...
Companies can harness IoT and predictive analytics to sustain business continuity; predict and manage site performance during emergencies; minimize expensive reactive maintenance; and forecast equipment and maintenance budgets and expenditures. Providing cost-effective, uninterrupted service is challenging, particularly for organizations with geographically dispersed operations.
SYS-CON Events announced today that Isomorphic Software will exhibit at SYS-CON's [email protected] at Cloud Expo New York, which will take place on June 7-9, 2016, at the Javits Center in New York City, NY. Isomorphic Software provides the SmartClient HTML5/AJAX platform, the most advanced technology for building rich, high-productivity enterprise web applications for any device. SmartClient couples the industry’s broadest, deepest UI component set with a java server framework to deliver an end-...