Software Architecture in Practice

Slides:



Advertisements
Similar presentations
Module 13: Performance Tuning. Overview Performance tuning methodologies Instance level Database level Application level Overview of tools and techniques.
Advertisements

Welcome to Middleware Joseph Amrithraj
Enterprise Web Architecture and Performance Shennon Shen & Scott Carey --- Plumtree Software Inc.
Netscape Application Server Application Server for Business-Critical Applications Presented By : Khalid Ahmed DS Fall 98.
Capacity Planning and Predicting Growth for Vista Amy Edwards, Ezra Freeloe and George Hernandez University System of Georgia 2007.
  Copyright 2003 by SPAN Technologies. Performance Assessments of Internet Systems By Kishore G. Kamath SPAN Technologies Testing solutions for the enterprise.
Technical Architectures
The Architecture of Transaction Processing Systems
Chapter 9 Overview  Reasons to monitor SQL Server  Performance Monitoring and Tuning  Tools for Monitoring SQL Server  Common Monitoring and Tuning.
Module 8: Monitoring SQL Server for Performance. Overview Why to Monitor SQL Server Performance Monitoring and Tuning Tools for Monitoring SQL Server.
Capacity Planning in SharePoint Capacity Planning Process of evaluating a technology … Deciding … Hardware … Variety of Ways Different Services.
Platform as a Service (PaaS)
Virtual Memory Tuning   You can improve a server’s performance by optimizing the way the paging file is used   You may want to size the paging file.
Cloud Computing for the Enterprise November 18th, This work is licensed under a Creative Commons.
Database System Concepts and Architecture Lecture # 3 22 June 2012 National University of Computer and Emerging Sciences.
Microsoft ® SQL Server ® 2008 and SQL Server 2008 R2 Infrastructure Planning and Design Published: February 2009 Updated: January 2012.
Database Systems: Design, Implementation, and Management Eighth Edition Chapter 10 Database Performance Tuning and Query Optimization.
Parallel Programming Models Jihad El-Sana These slides are based on the book: Introduction to Parallel Computing, Blaise Barney, Lawrence Livermore National.
Copyright © 2010, Scryer Analytics, LLC. All rights reserved. Optimizing SAS System Performance − A Platform Perspective Patrick McDonald Scryer Analytics,
Windows Azure Conference 2014 Deploy your Java workloads on Windows Azure.
Designing and Deploying a Scalable EPM Solution Ken Toole Platform Test Manager MS Project Microsoft.
Oracle 10g Database Administrator: Implementation and Administration Chapter 2 Tools and Architecture.
Module 10 Administering and Configuring SharePoint Search.
4 - 1 Copyright © 2006, The McGraw-Hill Companies, Inc. All rights reserved. Computer Software Chapter 4.
3-Tier Architecture Chandrasekaran Rajagopalan Cs /01/99.
VMware vSphere Configuration and Management v6
1 Copyright © 2005, Oracle. All rights reserved. Following a Tuning Methodology.
E-commerce Architecture Ayşe Başar Bener. Client Server Architecture E-commerce is based on client/ server architecture –Client processes requesting service.
Platform as a Service (PaaS)
Chapter 7: Using Windows Servers
Databases (CS507) CHAPTER 2.
Monitoring Windows Server 2012
CompTIA Security+ Study Guide (SY0-401)
Understanding and Improving Server Performance
Platform as a Service (PaaS)
Table General Guidelines for Better System Performance
Platform as a Service (PaaS)
Netscape Application Server
Operating Systems : Overview
Query Performance Tuning: Start to Finish
Hitting the SQL Server “Go Faster” Button
Advanced QlikView Performance Tuning Techniques
Database Performance Tuning &
Server Concepts Dr. Charles W. Kann.
The Client/Server Database Environment
MONITORING MICROSOFT WINDOWS SERVER 2003
Introduction to Networks
Database Performance Tuning and Query Optimization
#01 Client/Server Computing
Introduction of Week 3 Assignment Discussion
CompTIA Security+ Study Guide (SY0-401)
Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 2 Database System Concepts and Architecture.
Migration Strategies – Business Desktop Deployment (BDD) Overview
Hitting the SQL Server “Go Faster” Button
Operating Systems : Overview
System And Application Software
Oracle Architecture Overview
Operating Systems : Overview
Table General Guidelines for Better System Performance
Cloud computing mechanisms
Software models - Software Architecture Design Patterns
Operating Systems : Overview
Operating Systems : Overview
Operating Systems : Overview
Internet Protocols IP: Internet Protocol
Chapter 11 Database Performance Tuning and Query Optimization
(Computer fundamental Lab)
Client/Server Computing
Database System Architectures
#01 Client/Server Computing
Presentation transcript:

Software Architecture in Practice Architecture and Performance Factors

Introduction In Performance Engineering it is important to understand the factors of the Architecture that determines performance of your solution. In this presentation the most common factors are presented. A basic understanding of queuing theory is useful for understanding the impact these factors can have on performance.

Performance Factors In the following slides we will look at some factors layer by layer. Since we cannot consider everything we will use the architecture of the TM16 application as basis Hardware Operating system Application Server Application Database Network

Hardware The “big four” Processor no. or processors, no. of cores, hyper-threading, processor speed, cache Memory Amount of physical memory, paging, memory speed Disk I/O Disk speed, RAID configuration, local disk vs. network disk Network I/O Network interface speed, protocol, network bandwidth A good explanation of how to monitor these under windows can be found here: http://www.windowsitpro.com/article/monitoring-and-analysis/monitor-windows-server-with-performance-counters Performance “hotspots” are typically detected from utilization and queue lengths E.g. processor utilization, disk queue length etc.

Operating System Depending on the solution there is typically a number of configuration options to be made, e.g. Size of virtual memory, network buffer sizes, number of available TCP/IP ports, etc. Operating system services can also impact performance Unnecessary ones should be disabled Necessary ones should be scheduled to cause minimum impact on your application Eg. run outside office hours or give lower priority Virtualization In later years virtualized servers has become more common so majority of hosted solutions are now virtualized In general virtualization systems do not constrain performance significantly, but you should know when you run virtualized – since you might not have the capacity you think

Application Server An application server is a server that provides software applications with services such as security, data services, transaction support, load balancing, and management of large distributed systems. The term is often used for web servers that support the Java Platform, Enterprise Edition, however its use isn't restricted to Java. Performance tuning generally starts with the Java Virtual Machine (JVM), which serves as the foundation for the application server. Depending on the services used by your application you will tune Number of Application Server instances (JVM’s) JVM heap size Thread pool size Connection pool size Caches ….

Application The application design has a major impact on the performance of your system. In general you should focus on minimizing the work involved in moving data from database to the user Don’t have too many layers Client must not be too chatty with the server Don’t fetch more data than necessary from database – and don’t visit other components when not needed We will look more into patterns and anti-patterns in a later session

Database Most applications use a relational database for data storage. The database is a very common cause of performance issues which are typically rooted in two different aspects The configuration/structure of the RDBMS and the database The applications’ use of the database The query optimizer is an important piece of every DBMS. It determines how your SQL expression will fetch the data you ask for.

Database optimization Database optimization is a complex task beyond the scope of this class. Knowing about the basics is however a critical skill for performance engineers. You always need to consider these aspects: Keep database statistics up-to-date Build appropriate indexes Do the work on data as close to the data as possible Consider stored procedures for large volumes of data Only retrieve the data needed from the database SELECT only the columns and rows needed Use WHERE clauses to filter data Use parameterized queries SELECT x from user where name=‘?’ Partition large databases

Henrik Bærbak Christensen … note And quite a few of these rules do not apply to NoSQL databases … CS@AU Henrik Bærbak Christensen

Network There is typically a number of networks involved between end users and the components of your application For any network the two primary factors to consider are Latency Transmission speed These are impacted by a number of factors, e.g. Protocol Number of “hops” from end-2-end Network utilization Network security (e.g. SSL) Amount of messages exchanged Message sizes Network packet sizes ….

A few words on Java When using the Java programming language there are a number of subjects you should be aware of Garbage collector algorithm Heap sizes Temporary objects creations Object retention leaks …. A good way to investigate the inner workings of your Java application – and to learn more about general JVM performance – is to use a java code profiler JDK contains a powerful graphical profiler jvisualvm There are a wealth of good guides on the internet describing JVM performance, e.g. http://www.javaworld.com/javaworld/jw-08-2012/120821-jvm-performance-optimization-overview.html