This document discusses the importance of performance and strategies for improving performance. It notes that performance issues can occur anywhere in an application's architecture from the client, application server, databases, legacy systems and more. It recommends identifying performance risks early, defining objectives, conducting architectural reviews, and monitoring applications. Specific techniques are provided for improving memory usage, data retrieval from databases, and reducing remote calls. The conclusion emphasizes that investing in performance testing and engineering can significantly reduce costs compared to dealing with performance problems later.
Earning Attention Where it Matters Most: The Power & Imperative to Build Bran...iStrategy
Consumers are spending a growing majority of their time engaging and consuming content on their mobile connected devices. Brands are struggling in this attention economy to achieve cut-through, build brand awareness and affinity and deliver relevant, engaging advertising messages to their target audiences. Gavin Stirrat, Managing Director EMEA, at Millennial Media, will outline the reasons why having an integrated mobile strategy is now an absolute imperative to reach consumers. Using relevant case studies, he will outline the key facets that any mobile campaign should include to ensure success. Further insight will also be provided that explains how the unique characteristics of the mobile device can be used to reach the right consumer, in the right place, at the right time.
How to avoid being a data zombie by Brandwatch iStrategy
Big data can leave you feeling brain dead. What's relevant? What's not? What do to about it? Sometimes it feels like you're mindlessly ploughing through numbers just for the sake of it.
This workshop, led by Brandwatch COO Bryan Tookey, will take you through some examples of big datasets, specifically looking at social media. It will give you the tools to bring your mindless reports and reporting processes back to life.
Key takeaways:
• Spotting reports for reports sake and other big data zombie traps
• How to ensure you are getting value from your big data brains
• Bring your big data back from the dead
iStrategy London - Social Media: Making it Work Globally and Locally Gemma Tr...iStrategy
A major challenge in social is deciding the right approach to globalising or localising content and conversations. Should brands control social media globally for easier management and brand consistency? Or work on a local level that can be more costly but allows responses to be tailored to local needs and therefore lead to better engagement?
Hosted by Gemma Trippas, Oracle’s Social Partnerships Manager and Jeremie Moritz, Social Media Manager at Pernod Ricard, this session will look at what brands can do to adopt the right balance for their social media efforts internationally, drawing on Pernod Ricard’s vast experience in managing many sub-brands across multiple territories.
iStrategy London - Social Commerce: Do Consumers Trust Your Brand? Steve Seme...iStrategy
In a world of increasing consumer expectations for transparency and quality, is your brand trusted? How can you tell? And how might you use social commerce technologies like reviews and discussions to glean insights and provide consumer assurance? Follow case studies on leading global brands like Kraft, Whole Foods and the NFL to see how marketers and e-commerce executives are working to foster trust.
Earning Attention Where it Matters Most: The Power & Imperative to Build Bran...iStrategy
Consumers are spending a growing majority of their time engaging and consuming content on their mobile connected devices. Brands are struggling in this attention economy to achieve cut-through, build brand awareness and affinity and deliver relevant, engaging advertising messages to their target audiences. Gavin Stirrat, Managing Director EMEA, at Millennial Media, will outline the reasons why having an integrated mobile strategy is now an absolute imperative to reach consumers. Using relevant case studies, he will outline the key facets that any mobile campaign should include to ensure success. Further insight will also be provided that explains how the unique characteristics of the mobile device can be used to reach the right consumer, in the right place, at the right time.
How to avoid being a data zombie by Brandwatch iStrategy
Big data can leave you feeling brain dead. What's relevant? What's not? What do to about it? Sometimes it feels like you're mindlessly ploughing through numbers just for the sake of it.
This workshop, led by Brandwatch COO Bryan Tookey, will take you through some examples of big datasets, specifically looking at social media. It will give you the tools to bring your mindless reports and reporting processes back to life.
Key takeaways:
• Spotting reports for reports sake and other big data zombie traps
• How to ensure you are getting value from your big data brains
• Bring your big data back from the dead
iStrategy London - Social Media: Making it Work Globally and Locally Gemma Tr...iStrategy
A major challenge in social is deciding the right approach to globalising or localising content and conversations. Should brands control social media globally for easier management and brand consistency? Or work on a local level that can be more costly but allows responses to be tailored to local needs and therefore lead to better engagement?
Hosted by Gemma Trippas, Oracle’s Social Partnerships Manager and Jeremie Moritz, Social Media Manager at Pernod Ricard, this session will look at what brands can do to adopt the right balance for their social media efforts internationally, drawing on Pernod Ricard’s vast experience in managing many sub-brands across multiple territories.
iStrategy London - Social Commerce: Do Consumers Trust Your Brand? Steve Seme...iStrategy
In a world of increasing consumer expectations for transparency and quality, is your brand trusted? How can you tell? And how might you use social commerce technologies like reviews and discussions to glean insights and provide consumer assurance? Follow case studies on leading global brands like Kraft, Whole Foods and the NFL to see how marketers and e-commerce executives are working to foster trust.
This talk explains how we use NoSQL databases at wooga to scale our backend services to deal with the data of millions of players every day. Learn from our experience running Basho's Riak in production and how to use Amazon S3 as a database.
A story of a Ruby programmer having to understand that learning Erlang is more than just syntax. Learn differences in paradigms, pitfalls and applied use cases for this incredibly powerful language
Executing hundreds or thousands of process instances per second? Yes, it's possible. This webinar is about best practices for high-load situations, and how to scale Camunda BPM horizontally.
The Autobahn Has No Speed Limit - Your XPages Shouldn't Either!Teamstudio
Using XPages out of the box lets you build good-looking and well-performing applications. As XPage applications become bigger and more complex, performance can become an issue. There are several ways to improve scalability and performance that you should take into consideration. In this webinar, learn how to use partial refresh and partial execution mode and how to monitor its execution using a JSFLifeCycle monitor to avoid multiple re-calculations. See how readily available tools from OpenNTF will allow you to profile and analyze your code to improve the speed of your applications. Using Server Side Java Script and encountering a significant slow down when using Script Libraries? Learn how you can improve the speed of your application using JAVA instead of JavaScript, JSON and even @formulas.
Accelerating Application Performance with Amazon ElastiCache (DAT207) | AWS r...Amazon Web Services
Learn how you can use Amazon ElastiCache to easily deploy a Memcached or Redis compatible, in-memory caching system to speed up your application performance. We show you how to use Amazon ElastiCache to improve your application latency and reduce the load on your database servers. We'll also show you how to build a caching layer that is easy to manage and scale as your application grows. During this session, we go over various scenarios and use cases that can benefit by enabling caching, and discuss the features provided by Amazon ElastiCache.
Centralized applications are easy. Your entire system lives in one physical location and you can reason about, vertically scale, and manage your system without a lot of friction. Unfortunately none of us build applications this way anymore. Our systems are distributed, have external dependencies, and may even have to be geographically redundant.
Dealing with distribution is a must at Fastly where our applications are deployed all over the world and must be highly performant and resilient. But there are some inherent challenges related to designing and building systems that scale. In this talk we’ll go over the key lessons we learned while building our Image Optimization service. What worked, what didn’t, the tradeoffs we made, and what can you do as a systems engineer to learn from our experiences while building your own applications.
You can watch the replay for this Geek Sync webcast, Performance Tune Like an MVP, in the IDERA Resource Center, http://ow.ly/aDE250A4qdF.
The life of a DBA is evolving and your tuning skills should always be sharp. Tuning is one of the key components of a great DBA and developer. In this demo rich session we'll deep dive into performance tuning for on-premises, PaaS (platform as a service), and IaaS (infrastructure as a service). We'll discuss tips and techniques for troubleshooting bottlenecks and how to remediate them for hardware, OS, and the database.
Speaker: Daniel Janik has been supporting SQL Server for over 18 years. Six of those years were at Microsoft Corporation supporting SQL Server as a Senior Premier Field Engineer (PFE) where he supported over 287 different clients with both reactive and proactive database needs. Daniel has presented at many community events and SQL Saturdays.
Með tilkomu vefsins og nýrra lausna í skýinu, hafa kröfur til vefkerfa breyst mikið. Nú þarf að meðhöndla marga notendur og stundum vera undir miklu álagi. Það kemst í fréttirnar þegar vinsælir vefir hrynja undan álagi. En hvernig búum við til launsir sem þola álag. Í þessu fyrirlestri skoðum við leiðir til að skala og þau hugtök sem tengjast því.
This talk explains how we use NoSQL databases at wooga to scale our backend services to deal with the data of millions of players every day. Learn from our experience running Basho's Riak in production and how to use Amazon S3 as a database.
A story of a Ruby programmer having to understand that learning Erlang is more than just syntax. Learn differences in paradigms, pitfalls and applied use cases for this incredibly powerful language
Executing hundreds or thousands of process instances per second? Yes, it's possible. This webinar is about best practices for high-load situations, and how to scale Camunda BPM horizontally.
The Autobahn Has No Speed Limit - Your XPages Shouldn't Either!Teamstudio
Using XPages out of the box lets you build good-looking and well-performing applications. As XPage applications become bigger and more complex, performance can become an issue. There are several ways to improve scalability and performance that you should take into consideration. In this webinar, learn how to use partial refresh and partial execution mode and how to monitor its execution using a JSFLifeCycle monitor to avoid multiple re-calculations. See how readily available tools from OpenNTF will allow you to profile and analyze your code to improve the speed of your applications. Using Server Side Java Script and encountering a significant slow down when using Script Libraries? Learn how you can improve the speed of your application using JAVA instead of JavaScript, JSON and even @formulas.
Accelerating Application Performance with Amazon ElastiCache (DAT207) | AWS r...Amazon Web Services
Learn how you can use Amazon ElastiCache to easily deploy a Memcached or Redis compatible, in-memory caching system to speed up your application performance. We show you how to use Amazon ElastiCache to improve your application latency and reduce the load on your database servers. We'll also show you how to build a caching layer that is easy to manage and scale as your application grows. During this session, we go over various scenarios and use cases that can benefit by enabling caching, and discuss the features provided by Amazon ElastiCache.
Centralized applications are easy. Your entire system lives in one physical location and you can reason about, vertically scale, and manage your system without a lot of friction. Unfortunately none of us build applications this way anymore. Our systems are distributed, have external dependencies, and may even have to be geographically redundant.
Dealing with distribution is a must at Fastly where our applications are deployed all over the world and must be highly performant and resilient. But there are some inherent challenges related to designing and building systems that scale. In this talk we’ll go over the key lessons we learned while building our Image Optimization service. What worked, what didn’t, the tradeoffs we made, and what can you do as a systems engineer to learn from our experiences while building your own applications.
You can watch the replay for this Geek Sync webcast, Performance Tune Like an MVP, in the IDERA Resource Center, http://ow.ly/aDE250A4qdF.
The life of a DBA is evolving and your tuning skills should always be sharp. Tuning is one of the key components of a great DBA and developer. In this demo rich session we'll deep dive into performance tuning for on-premises, PaaS (platform as a service), and IaaS (infrastructure as a service). We'll discuss tips and techniques for troubleshooting bottlenecks and how to remediate them for hardware, OS, and the database.
Speaker: Daniel Janik has been supporting SQL Server for over 18 years. Six of those years were at Microsoft Corporation supporting SQL Server as a Senior Premier Field Engineer (PFE) where he supported over 287 different clients with both reactive and proactive database needs. Daniel has presented at many community events and SQL Saturdays.
Með tilkomu vefsins og nýrra lausna í skýinu, hafa kröfur til vefkerfa breyst mikið. Nú þarf að meðhöndla marga notendur og stundum vera undir miklu álagi. Það kemst í fréttirnar þegar vinsælir vefir hrynja undan álagi. En hvernig búum við til launsir sem þola álag. Í þessu fyrirlestri skoðum við leiðir til að skala og þau hugtök sem tengjast því.
Adding Value in the Cloud with Performance TestRodolfo Kohn
System quality attributes such performance, scalability, and availability are among the main concerns for cloud application developers and product managers. There are many examples of notable system failures that show how a company business can be affected during key events like a Cyber Monday. However, many difficulties come up when a team intends to consciously manage these type of quality attributes during development and operations. It is possible to group these difficulties in two main aspects: human aspects and technical aspects. During this presentation, I will share main technical difficulties we had to deal with in the last seven years working with different cloud services as well as key technical performance, scalability, and availability issues we were able to find and solve. It is about cases that are relevant through different products, technologies, and teams.
Grokking Techtalk #37: Data intensive problemGrokking VN
At some point in your software engineer career, you will have to deal with data and your success depends on how big the data that your software can deal with. From a simple problem that requires processing a large amount of data, this talk will present to you how to approach this kind of issue and how to design and choose an efficient solution.
About speaker:
Hồ is Senior Software Engineer at AXON where he helps design and develops complex distributed systems, including image and video encoding, distributed file conversion system. Besides coding, Ho likes to read manga and meet friends in his free time.
Designing a Scalable Twitter - Patterns for Designing Scalable Real-Time Web ...Nati Shalom
Twitter is a good example for next generation real-time web applications, but building such an application imposes challenges such as handling an every growing volume of tweets and responses, as well as a large number of concurrent users, who continually *listen* for tweets from users (or topics) they follow. During this session we will review some of the key design principles addressing these challenges, including alternatives *NoSQL* alternatives and blackboard patterns. We will be using Twitter as a use case, while learning how to apply these to any real-time we application
One of the most critical design decisions on enterprise programming is where to keep the state. As we talked about in the lecture on Concurrency, session state is the state that is maintained between requests. A session starts when the user first hits the enterprise system, and lasts until the user signs out or times out. In this lecture we look at the session state and explore three design patterns on where to store the session state.
The second topic in this lecture is how to distribution the applications. The primary reason we want to do that is to get more performance and handle more load. Most enterprise applications have lots of users, some hundreds of thousands. The only way to cope with such load is to scale the application. Scalability is how much more load an application can take if more resources are added. We will look at two ways to scale, one is by load balancing and the other by clustering.
Video of this lecture are found here:
http://www.olafurandri.com/?page_id=2762
Running a Megasite on Microsoft Technologiesgoodfriday
MySpace and Microsoft.com are two of the most-visited Web sites on the planet. Come to this session to hear about lessons learned using Microsoft technologies to run Web applications on a massive scale. Representatives from Microsoft.com talk about lessons learned using an all-Microsoft datacenter. Representatives from MySpace talk about the realities of using Microsoft technologies in a scalable, federated environment using SQL Server 2005, .NET 2.0 and IIS 6 on Windows Server 2003 64-bit editions. This session features an open Q&A with a panel of technical managers and engineers from MySpace and Microsoft.com.
Essentials of Automations: The Art of Triggers and Actions in FMESafe Software
In this second installment of our Essentials of Automations webinar series, we’ll explore the landscape of triggers and actions, guiding you through the nuances of authoring and adapting workspaces for seamless automations. Gain an understanding of the full spectrum of triggers and actions available in FME, empowering you to enhance your workspaces for efficient automation.
We’ll kick things off by showcasing the most commonly used event-based triggers, introducing you to various automation workflows like manual triggers, schedules, directory watchers, and more. Plus, see how these elements play out in real scenarios.
Whether you’re tweaking your current setup or building from the ground up, this session will arm you with the tools and insights needed to transform your FME usage into a powerhouse of productivity. Join us to discover effective strategies that simplify complex processes, enhancing your productivity and transforming your data management practices with FME. Let’s turn complexity into clarity and make your workspaces work wonders!
GraphRAG is All You need? LLM & Knowledge GraphGuy Korland
Guy Korland, CEO and Co-founder of FalkorDB, will review two articles on the integration of language models with knowledge graphs.
1. Unifying Large Language Models and Knowledge Graphs: A Roadmap.
https://arxiv.org/abs/2306.08302
2. Microsoft Research's GraphRAG paper and a review paper on various uses of knowledge graphs:
https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024Neo4j
Neha Bajwa, Vice President of Product Marketing, Neo4j
Join us as we explore breakthrough innovations enabled by interconnected data and AI. Discover firsthand how organizations use relationships in data to uncover contextual insights and solve our most pressing challenges – from optimizing supply chains, detecting fraud, and improving customer experiences to accelerating drug discoveries.
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionAggregage
Join Maher Hanafi, VP of Engineering at Betterworks, in this new session where he'll share a practical framework to transform Gen AI prototypes into impactful products! He'll delve into the complexities of data collection and management, model selection and optimization, and ensuring security, scalability, and responsible use.
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfPaige Cruz
Monitoring and observability aren’t traditionally found in software curriculums and many of us cobble this knowledge together from whatever vendor or ecosystem we were first introduced to and whatever is a part of your current company’s observability stack.
While the dev and ops silo continues to crumble….many organizations still relegate monitoring & observability as the purview of ops, infra and SRE teams. This is a mistake - achieving a highly observable system requires collaboration up and down the stack.
I, a former op, would like to extend an invitation to all application developers to join the observability party will share these foundational concepts to build on:
State of ICS and IoT Cyber Threat Landscape Report 2024 previewPrayukth K V
The IoT and OT threat landscape report has been prepared by the Threat Research Team at Sectrio using data from Sectrio, cyber threat intelligence farming facilities spread across over 85 cities around the world. In addition, Sectrio also runs AI-based advanced threat and payload engagement facilities that serve as sinks to attract and engage sophisticated threat actors, and newer malware including new variants and latent threats that are at an earlier stage of development.
The latest edition of the OT/ICS and IoT security Threat Landscape Report 2024 also covers:
State of global ICS asset and network exposure
Sectoral targets and attacks as well as the cost of ransom
Global APT activity, AI usage, actor and tactic profiles, and implications
Rise in volumes of AI-powered cyberattacks
Major cyber events in 2024
Malware and malicious payload trends
Cyberattack types and targets
Vulnerability exploit attempts on CVEs
Attacks on counties – USA
Expansion of bot farms – how, where, and why
In-depth analysis of the cyber threat landscape across North America, South America, Europe, APAC, and the Middle East
Why are attacks on smart factories rising?
Cyber risk predictions
Axis of attacks – Europe
Systemic attacks in the Middle East
Download the full report from here:
https://sectrio.com/resources/ot-threat-landscape-reports/sectrio-releases-ot-ics-and-iot-security-threat-landscape-report-2024/
UiPath Test Automation using UiPath Test Suite series, part 5DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 5. In this session, we will cover CI/CD with devops.
Topics covered:
CI/CD with in UiPath
End-to-end overview of CI/CD pipeline with Azure devops
Speaker:
Lyndsey Byblow, Test Suite Sales Engineer @ UiPath, Inc.
Elevating Tactical DDD Patterns Through Object CalisthenicsDorra BARTAGUIZ
After immersing yourself in the blue book and its red counterpart, attending DDD-focused conferences, and applying tactical patterns, you're left with a crucial question: How do I ensure my design is effective? Tactical patterns within Domain-Driven Design (DDD) serve as guiding principles for creating clear and manageable domain models. However, achieving success with these patterns requires additional guidance. Interestingly, we've observed that a set of constraints initially designed for training purposes remarkably aligns with effective pattern implementation, offering a more ‘mechanical’ approach. Let's explore together how Object Calisthenics can elevate the design of your tactical DDD patterns, offering concrete help for those venturing into DDD for the first time!
DevOps and Testing slides at DASA ConnectKari Kakkonen
My and Rik Marselis slides at 30.5.2024 DASA Connect conference. We discuss about what is testing, then what is agile testing and finally what is Testing in DevOps. Finally we had lovely workshop with the participants trying to find out different ways to think about quality and testing in different parts of the DevOps infinity loop.
GridMate - End to end testing is a critical piece to ensure quality and avoid...ThomasParaiso2
End to end testing is a critical piece to ensure quality and avoid regressions. In this session, we share our journey building an E2E testing pipeline for GridMate components (LWC and Aura) using Cypress, JSForce, FakerJS…
The Art of the Pitch: WordPress Relationships and SalesLaura Byrne
Clients don’t know what they don’t know. What web solutions are right for them? How does WordPress come into the picture? How do you make sure you understand scope and timeline? What do you do if sometime changes?
All these questions and more will be explored as we talk about matching clients’ needs with what your agency offers without pulling teeth or pulling your hair out. Practical tips, and strategies for successful relationship building that leads to closing the deal.
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Albert Hoitingh
In this session I delve into the encryption technology used in Microsoft 365 and Microsoft Purview. Including the concepts of Customer Key and Double Key Encryption.
2. Performance? That's what version 2 is for!
Overview
► Introduction / Motivation
► Performance Issues & Solution Strategies
► How to proactively reduce risk of Performance Issues?
► Conclusion
4. Why is performance important?
Trustworthy
Real User Experience
USABILITY
Profit
Performance Monitoring
Maintenance SPEED MATTERS
Success Factor Stress
Bottlenecks
Revenue Economical
Efficiency
Less Resources Stability Security
Conversion Rate FASTERSatisfied customers SPEED SLA Monitoring
More
Higher Fault Tolerance BETTER
Key Performance Indicators Reputation
SALES
5. Why is performance important?
A page that was 2 seconds slower 400 ms delay cause 0.59% drop
results in a 4.3% in searches/user
drop in revenue/user
(Bing) (Google)
400 ms slowdown cause Introducing gzip compression resulted
5-9% drop in full-page traffic in 13-25% speedup and cut outbound
network traffic by 50%
(Yahoo) (Netflix)
Source: www.stevesouders.com
Investing in Performance
really pays off
6. Consequences of Poor Performance
Consequences
► Damaged customer relations
– Reputation of the company suffers
– People will continue to associate poor performance with the product, even when
the issue is fixed later on
► Lost income & Delayed project schedules
– Revenue is lost
– Penalties have to be paid due to late delivery
► Increased development & maintenance costs
– Delivering features requires more time and effort if performance issues are
hindering the acceptance of those features
– Additional time and resources are required if performance issues are found
7. Consequences of Poor Performance
The cost to fix a performance issue
► Is a Technical Debt (defined by Ward
Cunningham)
– doing things the quick&dirty way sets us
up with technical debt
– technical debt incurs interest payments
(in the form of additional effort)
– The later technical debt is payed Source: Steven Haines. Pro Java EE 5: Performance Management
and Optimization
back, the higher the interest will be
► So should we pay huge interest at the end or
pay back technical debt every development
cycle?
9. Performance Issues & Solution Strategies
Application Server
Client
Databases
Legacy Systems / Service Provider
10. Performance Issues & Solution Strategies
Application Server
Application
Client
Databases
Legacy Systems / Service Provider
11. Performance Issues & Solution Strategies
Application Server
Application
Client
Databases
Legacy Systems / Service Provider
12. Performance Issues & Solution Strategies
Client (UI / Browser)
► Bloated Clients
► Very expensive DOM manipulations
► Too many requests required until a page is fully loaded
– Time to first impression
– JavaScript files are at the wrong places
► Unsuitable communication patterns
– long running synchronous calls that block the UI
► Network bandwidth
– especially in the mobile area
14. Performance Issues & Solution Strategies
done with: www.webpagetest.org
Chrome / DSL (1.5 Mbps/384Kbps)
50ms RTT
DOM complete
after 2.6 s
Rendering starts
after 3.4 s
49 requests
two uncompressed
images
3.9 s till page
is fully loaded
15. Performance Issues & Solution Strategies
Solution Approach
► Reducing RTTs by
– Reducing number of resources
– Avoiding bad requests
– Minimizing redirects
– Combining CSS / JS resources (e.g. during build process)
► Reducing Request overhead by
– Using compression (gzip, deflate)
– Minifying CSS / JS resources (cssminifier.com, jscompress.com)
► Placement of CSS and JS files
– CSS at the top / JS at the bottom
● browser should start rendering as early as possible (user perceives a faster loading
page)
● anything below the script is blocked from rendering and downloading until after the
script is loaded (even when threads are available)→ entire page is delayed
16. Performance Issues & Solution Strategies
How to achieve that in Java (e.g. in JSF)?
► JAWR (jawr.java.net)
– Built-in minification
– Enforced caching
– Bundling of resources
– CSS image sprite generation
– Can be integrated in Ant / Maven
– Can be used with (JSF, Spring MVC, Wicket, Grails, ...)
17. Performance Issues & Solution Strategies
source: jawr.java.net
JAWR
What we would How we want How we can define
like to achieve to structure files bundles
our work
18. Performance Issues & Solution Strategies
Application Server
Application
Client
Databases
Legacy Systems / Service Provider
19. Performance Issues & Solution Strategies
Application Server / Application eden
► Memory issues
– Memory leaks / OutOfMemoryErrors (but not every leak leads to OOME) survivor
survivor
– Unnecessary creation of expensive objects
– Static fields and Lists / ThreadLocal usage within AppServer
– inappropriate GC strategy / Heap sizing (for generational GC)
old
► Caching
– Wrong caching strategy
– Too much or the wrong stuff is cached perm
► Remote boundaries too fine-grained
– remote communication often done transparently for the developer
– increased round trips
– increased serializations/deserializations
20. Performance Issues & Solution Strategies
Application Server / Application
► Synchronization issues
– synchronized blocks are too wide (method locks vs block locks) → code is locked that
is not necessary
– issue will not be present when doing tests with a small number of users
– can't scale when number of requests grows (the surprise comes when doing load tests
or putting application to production)
– not taking advantage of lock-free data structures (java.util.concurrent.atomic)
► Verbose Logging log.debug("Starting " + getInstName() + "/" + getInst());
– What is the cost of getInstName() and getInst()?
– too much is logged / unnecessary string concatenations
► Not taken advantage of the possiblities of the underlying containers (Web, EJB, …)
– unsuitable pool sizes (Thread Pools, EJB Pools, Connection Pools, …)
21. Performance Issues & Solution Strategies
Solution Approaches eden
► Memory
– Generation sizing (for generational GC) survivor
● -XX:NewRatio=3 → 1:3 (Young:Old) → Young takes ¼ of what was specified survivor
with -Xmx
● Sizing proportion between Old/Young generation is important for performance
● e.g. if too many short-lived objects are created, they are moved to the old
generation
old
● An oversized young generation can also cause performance problems
–Space on old generation is reserved for emergencies (so that all objects
can be copied)
● Memory analysis with e.g. VisualVM, -verbose:gc
perm
– ThreadLocal variables in an application server
● Threads are reused but data is kept
● Need to delete ThreadLocal variables before thread is reused by application
server
– Static fields and Lists
● Best Approach: use only for data that never changes
23. Performance Issues & Solution Strategies
Solution Approaches eden
► Memory
– Generation sizing (for generational GC) survivor
●
-XX:NewRatio=3 → 1:3 (Young:Old) → Young takes ¼ of what was specified survivor
with -Xmx
●
Sizing proportion between Old/Young generation is important for performance
●
e.g. if too many short-lived objects are created, they are moved to the old
generation old
●
An oversized young generation can also cause performance problems
– Space on old generation is reserved for emergencies (so that all objects
can be copied)
●
Memory analysis with e.g. VisualVM, -verbose:gc
perm
– ThreadLocal variables in an application server
●
Threads are reused but data is kept
●
Need to delete ThreadLocal variables before thread is reused by application
server
– Static fields and Lists
●
Best Approach: use only for data that never changes
24. Performance Issues & Solution Strategies
Solution Approaches
► Remote boundaries
– Decrease number of remote calls → „The best call is the call that is not
done“
– Boundaries should be more coarse-grained e.g. by using wrapper classes
(of course that contain only the really required information)
– Depending on the communication parties (heterogeneous/homogeneous),
the right protocol should be used
► Logging
– carefully plan what to log and on which level
=> Log messages should have the ability to run fast in production
environment and at same time help in identifying any issue in QA and
TEST environment
25. Performance Issues & Solution Strategies
Application Server
Application
Client
Databases
Legacy Systems / Service Provider
26. Performance Issues & Solution Strategies
Databases (from an application's point-of-view)
► More / Less data is retrieved than actually required
► Same data is retrieved over and over again (n+1 query problem)
► High normalization good for reducing redundancy, but bad for performance
► Inappropriate connection pool sizes
► Usage of O/R mappers
– can lead to unexpected behavior if used in a wrong way
– possibilities of JPA framework not known or not used efficiently
27. Performance Issues & Solution Strategies
Solution Approaches
► Data Retrieval
– Read-Only queries (query.setHint(“eclipselink.read-only“, “true“) )
●
improves performance by avoiding copying and change tracking the objects
– Fetch Joins
– Batch Reads
– Other loading optimizations
●
Use projection queries where appropriate
●
Use pagination for large result sets (query.setMaxResults(), query.setFirstResults())
●
Use named queries (likely to be precompiled by provider, reusability)
► Updating Data
– Batch Update
●
allows a bunch of update operations to be performed as a single DB access
●
reduces round trips to the database
<property name="eclipselink.jdbc.batch-writing" value="Oracle-JDBC"/>
28. Performance Issues & Solution Strategies
Fetch Joins - Example
Query query = em.createQuery(“SELECT po from PurchaseOrder po WHERE
po.status = 'ACTIVE' AND po.customer.address.city = 'Stuttgart'”);
List<PurchaseOrder> orders = query.getResultList();
for (PurchaseOrder order: orders) {
order.getCustomer().getName();
}
{returns N purchase orders} → 100 positions = 101 SQLs
Better:
SELECT po from PurchaseOrder po FETCH JOIN po.customer...
{returns N purchase orders} → 100 positions = 1 SQL
→ related objects will be joined into the query instead of being queried independently
29. Performance Issues & Solution Strategies
Batch Reads - Example
Query query = em.createQuery(“SELECT po from PurchaseOrder po WHERE
po.status = 'ACTIVE' AND po.customer.address.city = 'Stuttgart'”);
query.setHint(“eclipselink.batch”, “po.customer”);
...
{returns N purchase orders} → 100 positions = 2 SQLs
(one additional for each relationship)
→ subsequent queries of related objects can be optimized in batches instead of
being retrieved one-by-one
→ Batch reading is more efficient than joining because it avoids reading
duplicate data.
30. Performance Issues & Solution Strategies
Solution Approaches
► Data Retrieval
– Read-Only queries (query.setHint(“eclipselink.read-only“, “true“) )
● improves performance by avoiding copying and change tracking the objects
– Fetch Joins
– Batch Reads
– Other loading optimizations
● Use projection queries where appropriate
●
Use pagination for large result sets (query.setMaxResults(), query.setFirstResults())
● Use named queries (likely to be precompiled by provider, reusability)
► Updating Data
– Batch Update
●
allows a bunch of update operations to be performed as a single DB access
● reduces round trips to the database
<property name="eclipselink.jdbc.batch-writing" value="Oracle-JDBC"/>
31. Performance Issues & Solution Strategies
Application Server
Application
Client
Databases
Legacy Systems / Service Provider
32. Performance Issues & Solution Strategies
Legacy Systems / Service Provider
► They are often out ouf our control
► Legacy Systems
– often very difficult to troubleshoot legacy systems
– running dinosaurs
– limited insight into those systems
► Service Providers
– No influence on them
– SLAs
34. How to proactively reduce risk of Performance Issues?
Pragmatic Solution Approach
► 1. From a general point-of-view
– Define someone that is responsible for Performance Management in the project
– Identify Performance Risks early
– Define Performance Objectives (measurable & realistic)
●
otherwise there is a risk that objectives are simply ignored because too
difficult to achieve
– Conduct Architectural Reviews (continually)
●
to find out whether the architecture is really capable of meeting performance
objectives
– Do Performance Tests (before application goes to production)
– Monitor your Application (especially in PreProduction & Production)
●
to find out how the application is really used (application usage pattterns)
●
to identify trends (important for capacity planning)
– Know your users
35. How to proactively reduce risk of Performance Issues?
Pragmatic Solution Approach
► 2. From a technical point-of-view
– Know the used technologies
– Always look out for possible performance improvements in those technical
areas
● Important: analyze the effects of „improvements“ and „Best Practices“
– Pay back technical debt as soon as possible
– Add small performance tests and not just unit tests (and automate them)
36. Conclusion
Conclusion
► Investing time & money in performance really pays off
► There needs to be someone responsible for APM
► Performance issues can reside anywhere in an architecture
– Architectural reviews, performance tests, aware
developers/architects/testers can help in reducing the risk
► From the managements point-of-view it seems that performance engineering
seems to cause initially more costs than bringing value
– Problem: difficult to demonstrate success, but poorly performing
applications are clearly observable as failures
“Why do we have performance engineers
if we don't have performance problems?” by Connie U. Smith
37. Thank you for your Attention!
Please also have a look at the PERT Wiki space at
https://www.adesso.de/wiki/index.php/PERT
PERT@adesso.de
eduard.tudenhoefner@adesso.de
www.adesso.de