BizTalk Server 2016 Performance Tuning and Optimization — Agustín Mántaras BizTalk Server 2016 Performance Tuning and Optimization Agustín Mántaras BizTalk Server 2016: Performance Tuning and Optimization Agustín Mántaras Dubai, United Arab Emirates ISBN-13 (pbk): 978-1-4842-3993-3 ISBN-13 (electronic): 978-1-4842-3994-0 https://doi.org/10.1007/978-1-4842-3994-0 Library of Congress Control Number: 2018965175 Copyright © 2019 by Agustín Mántaras This work is subject to copyright. All rights are reserved by the Publisher, whether the whole or part of the material is concerned, specifically the rights of translation, reprinting, reuse of illustrations, recitation, broadcasting, reproduction on microfilms or in any other physical way, and transmission or information storage and retrieval, electronic adaptation, computer software, or by similar or dissimilar methodology now known or hereafter developed. Trademarked names, logos, and images may appear in this book. Rather than use a trademark symbol with every occurrence of a trademarked name, logo, or image we use the names, logos, and images only in an editorial fashion and to the benefit of the trademark owner, with no intention of infringement of the trademark. The use in this publication of trade names, trademarks, service marks, and similar terms, even if they are not identified as such, is not to be taken as an expression of opinion as to whether or not they are subject to proprietary rights. While the advice and information in this book are believed to be true and accurate at the date of publication, neither the authors nor the editors nor the publisher can accept any legal responsibility for any errors or omissions that may be made. The publisher makes no warranty, express or implied, with respect to the material contained herein. Managing Director, Apress Media LLC: Welmoed Spahr Acquisitions Editor: Smriti Srivastava Development Editor: Siddhi Chavan Coordinating Editor: Shrikant Vishwakarma Cover designed by eStudioCalamar Cover image designed by Freepik (www.freepik.com) Distributed to the book trade worldwide by Springer Science+Business Media New York, 233 Spring Street, 6th Floor, New York, NY 10013. Phone 1-800-SPRINGER, fax (201) 348-4505, e-mail orders-ny@springer- sbm.com, or visit www.springeronline.com. Apress Media, LLC is a California LLC and the sole member (owner) is Springer Science + Business Media Finance Inc (SSBM Finance Inc). SSBM Finance Inc is a Delaware corporation. For information on translations, please e-mail [email protected], or visit http://www.apress.com/ rights-permissions. Apress titles may be purchased in bulk for academic, corporate, or promotional use. eBook versions and licenses are also available for most titles. For more information, reference our Print and eBook Bulk Sales web page at http://www.apress.com/bulk-sales. Any source code or other supplementary material referenced by the author in this book is available to readers on GitHub via the book’s product page, located at www.apress.com/978-1-4842-3993-3. For more detailed information, please visit http://www.apress.com/source-code. Printed on acid-free paper For my father, mother, wife, and friends, even though I know none of them will read it. Oh, yes, and for the rest of my family; otherwise, I would have a problem (Houston). Table of Contents About the Author ���������������������������������������������������������������������������������������������������xiii About the Technical Reviewers �������������������������������������������������������������������������������xv Acknowledgments �������������������������������������������������������������������������������������������������xvii Introduction ������������������������������������������������������������������������������������������������������������xix Requirements and Source Code ������������������������������������������������������������������������������xxi Chapter 1: Revealing the Black Box �������������������������������������������������������������������������1 XML Language Premier �����������������������������������������������������������������������������������������������������������������2 XML Schema Concepts Used by BizTalk Server ����������������������������������������������������������������������������2 Attribute �����������������������������������������������������������������������������������������������������������������������������������2 Namespace ������������������������������������������������������������������������������������������������������������������������������3 Element �����������������������������������������������������������������������������������������������������������������������������������3 BizTalk and XML Namespaces in Detail ����������������������������������������������������������������������������������������4 The Declaration �����������������������������������������������������������������������������������������������������������������������5 Identification of an Incoming Message������������������������������������������������������������������������������������7 BizTalk Server Schemas ���������������������������������������������������������������������������������������������������������������8 BizTalk Server Schema Types ��������������������������������������������������������������������������������������������������8 Delimited Flat Files ������������������������������������������������������������������������������������������������������������������9 Positional Flat Files ���������������������������������������������������������������������������������������������������������������10 XML Schemas ������������������������������������������������������������������������������������������������������������������������10 JSON Messages ���������������������������������������������������������������������������������������������������������������������11 Envelope Schemas ����������������������������������������������������������������������������������������������������������������13 Property Schemas �����������������������������������������������������������������������������������������������������������������13 The Message Engine �������������������������������������������������������������������������������������������������������������13 v Table of ConTenTs Host and Host Instances �������������������������������������������������������������������������������������������������������������15 Publications: The BizTalk Server Message ����������������������������������������������������������������������������16 The Message Type Property ���������������������������������������������������������������������������������������������������21 Subscriptions ������������������������������������������������������������������������������������������������������������������������������27 Activation Subscriptions ��������������������������������������������������������������������������������������������������������29 Instance Subscriptions ����������������������������������������������������������������������������������������������������������32 Request-Response Scenario �������������������������������������������������������������������������������������������������32 Solicit-Response Scenario ����������������������������������������������������������������������������������������������������32 Subscription Priority ��������������������������������������������������������������������������������������������������������������33 Searching for Subscription Information���������������������������������������������������������������������������������35 Publishers �����������������������������������������������������������������������������������������������������������������������������������38 Subscribers ���������������������������������������������������������������������������������������������������������������������������������40 The Dequeue Process ������������������������������������������������������������������������������������������������������������41 Adapters ��������������������������������������������������������������������������������������������������������������������������������44 The MessageBox Database ���������������������������������������������������������������������������������������������������������45 Host Tables ����������������������������������������������������������������������������������������������������������������������������46 Queue Tables �������������������������������������������������������������������������������������������������������������������������46 System Tables������������������������������������������������������������������������������������������������������������������������47 Spool Table ����������������������������������������������������������������������������������������������������������������������������47 Summary�������������������������������������������������������������������������������������������������������������������������������������49 Chapter 2: Performance Analysis ���������������������������������������������������������������������������51 Performance Analysis Techniques ����������������������������������������������������������������������������������������������51 Increasing Trends Over Long Periods ������������������������������������������������������������������������������������52 Performance Counters Analysis Guidelines ��������������������������������������������������������������������������������57 Processor �������������������������������������������������������������������������������������������������������������������������������58 Percentage of Processor Privileged Time ������������������������������������������������������������������������������59 Percentage of User Time �������������������������������������������������������������������������������������������������������60 Percentage of Processor Time �����������������������������������������������������������������������������������������������61 System Processor Queue Length�������������������������������������������������������������������������������������������62 Memory ���������������������������������������������������������������������������������������������������������������������������������63 vi Table of ConTenTs Memory\% Committed Bytes in Use ��������������������������������������������������������������������������������������64 Memory\Available MBytes �����������������������������������������������������������������������������������������������������64 Disks �������������������������������������������������������������������������������������������������������������������������������������������65 LogicalDisk\% Free Space �����������������������������������������������������������������������������������������������������66 Disk Idle Time Percentage �����������������������������������������������������������������������������������������������������67 Avg� Disk Sec/Read and Avg� Disk Sec/Write ������������������������������������������������������������������������68 Avg� Disk Queue Length ���������������������������������������������������������������������������������������������������������70 Network ��������������������������������������������������������������������������������������������������������������������������������������72 Network Interface(*)\Bytes Total/Sec ������������������������������������������������������������������������������������73 Network Interface\Output Queue Length �������������������������������������������������������������������������������73 Latency����������������������������������������������������������������������������������������������������������������������������������������74 Latency Factors ���������������������������������������������������������������������������������������������������������������������������77 Load ���������������������������������������������������������������������������������������������������������������������������������������77 Bad Disk Performance or Overused Disks �����������������������������������������������������������������������������77 Throttling �������������������������������������������������������������������������������������������������������������������������������77 Complex Maps �����������������������������������������������������������������������������������������������������������������������78 Complex Orchestrations and Custom Code� ��������������������������������������������������������������������������78 Size of the Message ��������������������������������������������������������������������������������������������������������������78 Latency Performance Counters ���������������������������������������������������������������������������������������������78 Latency Thresholds ����������������������������������������������������������������������������������������������������������������81 Throttling �������������������������������������������������������������������������������������������������������������������������������������83 What Is Throttling? ����������������������������������������������������������������������������������������������������������������84 Throttling Performance Counters ������������������������������������������������������������������������������������������87 Suspended Messages ���������������������������������������������������������������������������������������������������������������100 Impact of Suspended Messages �����������������������������������������������������������������������������������������101 Monitoring Suspended Messages ���������������������������������������������������������������������������������������101 BizTalk Health Monitor Tool �������������������������������������������������������������������������������������������������������103 Visual Basic Script to Deal with Suspended Messages �������������������������������������������������������104 Tracking ������������������������������������������������������������������������������������������������������������������������������������105 Tracking Performance Counters ������������������������������������������������������������������������������������������106 Summary�����������������������������������������������������������������������������������������������������������������������������������107 vii Table of ConTenTs Chapter 3: Performance Tools ������������������������������������������������������������������������������109 Performance Monitor ����������������������������������������������������������������������������������������������������������������109 Setting Up a Performance Counter Capture ������������������������������������������������������������������������110 The Performance Analysis of Logs Tool �������������������������������������������������������������������������������126 Creating a New Analysis Using PAL Tool ������������������������������������������������������������������������������126 Understanding the PAL Output ��������������������������������������������������������������������������������������������136 Using LoadGen to Test the Environment �����������������������������������������������������������������������������������139 The LoadGen Configuration File �������������������������������������������������������������������������������������������140 Testing a Solution ����������������������������������������������������������������������������������������������������������������������142 Summary�����������������������������������������������������������������������������������������������������������������������������������144 Chapter 4: Optimizing the BizTalk Platform ���������������������������������������������������������145 Assigning Application Priority Levels (APL) �������������������������������������������������������������������������������146 Release Stage Level (RSL) ���������������������������������������������������������������������������������������������������148 Business Priority Level (BPL) �����������������������������������������������������������������������������������������������148 High Availability Level (HAL) ������������������������������������������������������������������������������������������������150 Transaction Levels (TL) ��������������������������������������������������������������������������������������������������������150 Performance Behavior Level (PBL) ��������������������������������������������������������������������������������������151 Service-Level Agreements Between the Integrated Parties �����������������������������������������������������152 Performance Service Level Agreement �������������������������������������������������������������������������������152 Availability SLA ��������������������������������������������������������������������������������������������������������������������157 Factors That Are Important for BizTalk Performance ����������������������������������������������������������������159 Message Size ����������������������������������������������������������������������������������������������������������������������160 Tracking �������������������������������������������������������������������������������������������������������������������������������165 Host Architecture �����������������������������������������������������������������������������������������������������������������174 Host Performance Settings ��������������������������������������������������������������������������������������������������179 Automating Host Settings ����������������������������������������������������������������������������������������������������190 Message Box Database �������������������������������������������������������������������������������������������������������209 Scaling the BizTalk Server Group ����������������������������������������������������������������������������������������230 Microsoft Distributed Transaction Coordinator ��������������������������������������������������������������������230 Number of Simultaneous Connections of HTTP Adapters ����������������������������������������������������232 Windows Communication Foundation Throttling �����������������������������������������������������������������234 viii Table of ConTenTs Documenting Applications ��������������������������������������������������������������������������������������������������������235 The Excel Sheet �������������������������������������������������������������������������������������������������������������������236 Application Form �����������������������������������������������������������������������������������������������������������������236 Flow Forms ��������������������������������������������������������������������������������������������������������������������������240 Sizing Message Box and DTA ����������������������������������������������������������������������������������������������240 Summary�����������������������������������������������������������������������������������������������������������������������������������247 Chapter 5: Instrumenting BizTalk Solutions ���������������������������������������������������������249 Instrumenting Using Event Tracing for Windows �����������������������������������������������������������������������250 The BizTalk CAT Framework for ETW �����������������������������������������������������������������������������������252 Instrumenting Using Business Activity Monitoring��������������������������������������������������������������������274 Business Activity Monitoring �����������������������������������������������������������������������������������������������274 Designing the Instrumentation Activities for a BizTalk Server Solution �������������������������������277 Instrumenting Creating Custom Performance Counters �����������������������������������������������������������296 Developing Custom Performance Counters �������������������������������������������������������������������������297 How Does It Work? ��������������������������������������������������������������������������������������������������������������298 Book Orders Orchestration Flow Diagram ���������������������������������������������������������������������������300 Examining PerformanceCounterHelper Component ������������������������������������������������������������301 Summary�����������������������������������������������������������������������������������������������������������������������������������310 Chapter 6: Developing High- Performance Solutions ��������������������������������������������311 Improving Schema Definitions ��������������������������������������������������������������������������������������������������311 Length of the Element Names ���������������������������������������������������������������������������������������������312 Message Properties Performance Recommendations ��������������������������������������������������������312 Canonical Schemas �������������������������������������������������������������������������������������������������������������314 Improving Orchestrations ����������������������������������������������������������������������������������������������������������316 To Orchestrate or Not To Orchestrate, That Is the Question �������������������������������������������������316 Reducing the Impact of Persisted Data �������������������������������������������������������������������������������321 Improving Orchestration Latency �����������������������������������������������������������������������������������������325 Controlling Orchestration Memory Consumption �����������������������������������������������������������������329 Reducing Orchestration Complexity ������������������������������������������������������������������������������������331 ix Table of ConTenTs Improving Maps Execution ��������������������������������������������������������������������������������������������������������332 BizTalk Host Instance Temp Folder Location �����������������������������������������������������������������������332 Using the XslCompiledTransform Class �������������������������������������������������������������������������������332 Improving Pipelines�������������������������������������������������������������������������������������������������������������������333 Use the PassThru Pipelines �������������������������������������������������������������������������������������������������334 Disposing of Objects ������������������������������������������������������������������������������������������������������������334 Avoid Using XMLDocument Objects �������������������������������������������������������������������������������������335 Developing Pipeline Components to Improve Performance ������������������������������������������������������336 Types of Pipeline Components ���������������������������������������������������������������������������������������������337 Custom Pipeline Interfaces ��������������������������������������������������������������������������������������������������339 Attributes of Pipeline Components ��������������������������������������������������������������������������������������341 Developing a General Custom Pipeline Component ������������������������������������������������������������341 Solution Overview����������������������������������������������������������������������������������������������������������������342 Developing the Property Schema Project ����������������������������������������������������������������������������342 Developing the Custom Pipeline Component Project ����������������������������������������������������������343 Creating the Visual Studio Project for the Custom Pipeline Component ������������������������������344 Summary�����������������������������������������������������������������������������������������������������������������������������������366 Chapter 7: Decreasing Downtime �������������������������������������������������������������������������367 Side-by-Side Versioning ������������������������������������������������������������������������������������������������������������367 How Can You Solve this Problem? ���������������������������������������������������������������������������������������368 Component Version Side-by-Side Execution �����������������������������������������������������������������������369 Applying Side-by-Side Versioning to a BizTalk Server Project ��������������������������������������������370 Using Business Rules to Reduce Deployment ���������������������������������������������������������������������������380 Policy Execution Steps ��������������������������������������������������������������������������������������������������������381 Business Rules Performance Recommendations ����������������������������������������������������������������382 Securing Application Configuration Settings �����������������������������������������������������������������������������387 The SSO MMC Snap-In Tool �������������������������������������������������������������������������������������������������388 Adding New Keys to the SSO Store �������������������������������������������������������������������������������������390 Importing and Exporting Application Configuration �������������������������������������������������������������392 Creating an SSO Helper Component ������������������������������������������������������������������������������������394 Summary�����������������������������������������������������������������������������������������������������������������������������������397 x
Description: