HSPS 2015 - SharePoint Performance Santiy Checks

55
0 Key Performance Sanity Checks Andreas Grabner (@grabnerandi) http://dynatrace.com/en/sharepoint

Transcript of HSPS 2015 - SharePoint Performance Santiy Checks

0

Key Performance Sanity Checks

Andreas Grabner (@grabnerandi)

http://dynatrace.com/en/sharepoint

1

Welcome to SharePoint Saturday Houston

• Please turn off all electronic devices or set them to vibrate

• If you must take a phone call, please do so in the hall so as not to disturb others

• Special thanks to our Title Sponsor, ProSymmetry

Thank you for being a part of the 5th Annual SharePoint Saturday for the greater Houston area!

2

Thanks to all our Sponsors!

3

Information

• Speaker presentation slides should be available from the SPSHOU website within a week or so

• The Houston SharePoint User Group will be having it’s next meeting Wednesday April 15th. Please join us at www.h-spug.org

4

That’s why I ended up talking at HSPS

5

4

6

What are these 4 Ideas?

1. 7 Steps to check SharePoint Health

2. Avoid common Deployment Mistakes

3. Analyze SharePoint Usage

4. Which Pages are Slow and Why?

Bonus: Real Life Troubleshooting Example

7

7 Step SharePoint Health Check

#1: End User Health #3: System Health#2: Site Health

#4: IIS Health #5: AppPool Health #6: SQL & Service Health

#7: Web Parts

8

Check #1: End User Health

#1: Geo Location

#2: User Environment

#3: Errors

9

Check #2: Site Health

#1: Load #2: Failures#3:

Performance#4:

Infrastructure#5: End User

Index

10

Check #3: System Host Health

#1: CPU & Memory#3: Process Check: Need to

RE-DEPLOY?#2: I/O: Static & Logs

11

Check #4: IIS Health

#1: Threads

#2: Throughput

#3: Page Size

12

Check #5: AppPool Health

#1: Memory #2: Garbage Collection

#3: Worker Threads

13

Check #6: SQL & Service Health

#2: Connectivity Issues

#1: Excessive SQL Roundtrips

14

Check #7: Web Parts#1: Performance #2: Deployment

#3: Bad Coding: 211 SQL!

15

AVOID COMMON DEPLOYMENT MISTAKES

Connectivity, Missing Files, Permission, …

16

Who’s talking with whom?

How many Web Sites are actually running?

How many requests make it to SharePoint’s AppPool?

Do we call any external services

Is our SQL Server overloaded?

17

Any Deployment Mistakes? HTTP 5xx, 4xx?

Which errors are thrown by which page?

Which Errors impact how many users?

18

Any Bad WebPart?

WebParts that can’t be loaded!

Here is the page that uses this WebPart

19

Connectivity Issues between Services?Watch out for Connection

Exceptions!

This is the page that tries to connect to

that backend service!Root Cause:

Configuration Issue

20

Authentication Issues?

How many users have authentication issues?

Which pages are users trying to access?

21

User Permission Problems?#1: Permission Issue Detected!

#2: Related to SocialNavigationControl

#3: Here is the problematic page

22

Missing Lists?List not found Exception!

Here is the page that references this list!

23

Missing Columns?Somebody deleted a

column?

Here is the page that shows that column!

24

Bad Filter Settings?

Bad filter settings result in Exceptions

Here is the page that uses that bad filter!

25

ANALYZE SHAREPOINT USAGE

Who is using What, How from Where?

26

How are people navigating through SharePoint?

Which browsers do people use?

Where are they from? Which Office?

How do they navigate through the site?

How fast/slow are these pages for

them?Maybe impacted by

bad network connectivity?

27

Which Lists/Views are Used?How often used? How fast/slow? Time spent in SQL Server?

Same information interesting per View

High Failure Rate?

28

Which Web Parts are used?

29

WHICH PAGES ARE SLOW

How to identify them?

30

What are the top slowest end user pages?How Fast/Slow for

the end user?How much of that

is Server Time?

31

What makes them slow?How do these pages load?

Lots of JavaScript that loads slow? Maybe

cache on a Proxy/CDN?

32

REASONS FOR SLOW PAGES

Client and Server Side

33

Many reasons for bad performance

• Frontend– Overloaded and complex Pages

– Too much JavaScript slows down older browsers

– Bad content caching

• Backend– Bad/Too Much Database Access

– Bad Coding of custom code

– Overhead due to configuration issues and resulting logs/exceptions

– High Memory Consumption

– Wrong Deployment Configurations (e.g: worker threads, …)

34

Overloaded Pages

2.6MB for Home Page !

Don’t overload with too much information!

35

Database Impact: too many requests211! SQLs per Page Request

36

Database Impact: Same SQLSame SQL called many times per page!

37

Database Impact: Whom to blame?

• Overloaded Pages with too many Web Parts

• Badly implemented custom web parts

• 3rd party WebParts or Controls

38

Bad Coding of Custom Web Parts - #1

ALL List Items are retrieved from the Database

DO NOTint noOfItems = SPContext.Current.List.Items.Count;

Item Count is kept redundant in the AllUserData table and also kept in memory

DOint noOfItems = SPContext.Current.List.ItemCount;

39

Bad Coding of Custom Web Parts - #2DO NOTfor (int itemIx=0;itemIx< SPContext.Current.List.Items.Count;itemIx++) {

SPListItem listItem = SPContext.Current.List.Items[itemIx];

// do something ...

}

Every access to Count and Items Property queries the whole SharePoint list

We end up with 202 SQL Executions with a total exec time of > 1s

40

Good Coding of Custom Web Parts - #2DOSPListItemCollection items = SPContext.Current.List.Items;

foreach (SPListItem listItem in items) {

// do something ...

}

Only first access to the collection queries the data

41

Telerik Grid Control Going Wild

#1: Data Driven ProblemDepending on the user input on that request we see up to

493! SQL Calls per requestRoot Cause: Every Grid Cell

executed a new SQL

#2: Statements not preparedNone of these executions has

been prepared

42

High Garbage Collection

Memory Heavy Apps result in High GC that impacts Performance

43

High GC Result of High Memory Usage!

Long Running GCs!

Analyze Memory Patterns

44

High GC: Performance Heap AnalysisWhich classes stay

on the heap?Which have the biggest impact?

Who is keeping them in memory?

45

REAL LIFE TROUBLESHOOTING

The journey of a frustrated SharePoint User

46

Frustrated User report bad Response Times

Frustrated User

Slow Page Load caused by Browser JS Time

Slow Page Load caused by Server-Side Processing

47

Really slow page6.8s to deliver Default.aspx page

Involved Web Parts

Most of the Time spentIn waiting

48

WebPart uses multiple parallel Threads

Async Threads are busy with I/O

49

First Remote Call is Very Slow

Web Service call by ContentEditorWebPart

HttpWebRequests uses ServicePoint internally

First Web Serivce Requests takes 5.8s to return

50

Thread Limit lets all other Threads wait!

We have 10 parallel calls in our background threads

The other background threads spend their time“waiting” in the ServicePoint

51

Solution: Change Defaults

52

Key Points to Take Home

#1: End User Health: Happy or Frustrated? Desktop or Mobile?

#3: System Health: CPU, Memory, Process Distribution, …

#2: Site Health: Any Errors? Any Performance Issues?

#4: IIS Health: Bandwidth? Threads? HTTP 4xx, 5xx?

#5: AppPool Health: Memory, CPU, GC, Exceptions, Logs …

#6: SQL & Service Health: # Roundtrips, Data Amount, CPU, Memory, I/O

#7: Web Parts: 3rd Party & Custom. Bad Coding and Bad Deployments lead to crashes

53

More Links for You

• Tools: http://dynatrace.com/en/sharepoint

• More Stories: http://blog.dynatrace.com/

• YouTube Tutorials: http://bit.ly/dttutorials

• Follow Me: @grabnerandi

• Contact Me: [email protected]

54

Please Leave Feedback During Q&A

Please submit feedback by going to http://whatsyouranswer.com?S201547151810

or by scanning the QR code to the right