Performance Tuning in a .Net Environment - Midwest User Group

hungryhorsecabinSoftware and s/w Development

Dec 14, 2013 (3 years and 7 months ago)

120 views

Performance Tuning

in a
.Net

Environment

Scott M Dulecki
-

Pridgeon & Clay

Dan Foreman
-

BravePoint

Scott Dulecki Intro


Scott M. Dulecki


Presenter at
MWUG and
various user groups


Board Member, QAD Midwest Users Group


President, West Michigan Progress Users Group


Past President, Michigan Progress Users Group


PEG member 1998061901


Author of:


Back to Basics: Dump and Load


Safe Haven: Archiving in MFG/PRO


Safe Haven: MFG/PRO Basics


Dan Foreman Intro


Progress User since 1984


Author of several Progress publications


Progress Performance Tuning Guide


Progress Database Administration Guide


Progress Virtual & System Tables Guide


Progress V10 Jumpstart

Dan Foreman Intro


Author of:


ProMonitor



DB Monitoring Tool


LockMon



Record Lock Detection Tool
-

NEW


ProDump&Load



Dump&Load

a Database of
any

size with minimal downtime


Other interesting & useful stuff


What Are We Going To Do?


Setting the environment
-

Scott


Software installation, related pieces, choices


The impacted Progress pieces


Dan


Webspeed
,
A
ppservers
, Databases, choices

QDT


Replacement to MFG/
Util


Default: one installation


Pro: single icon, multiple instances


Con: single point of failure / contention


Big Con: patches apply at the instance level as
well as the QDT level


Impossible to test a patch outside of production…


We are switching when we rebuild our
environment

Warning!


Running Unix scripts against a Windows
QDT install can mess things up horribly


Repair involves remove and reinstall of
QDT


Qdtadmin.bat is a Unix script…

Tomcat


Default is one Tomcat instance


Default installs as a program, not a service


One goes down, they all go down…


Program down, all down


Error messages are… less than useful


“Object reference not set to an instance of an
object”


When we rebuild…




Performance
settings


CATALINA_OPTS


-
Djava.awt.headless
=true


-
Xms256m


-
Xmx256m


-
Dfile.encoding
=utf
-
8


-
XX:PermSize

256m


-
XX:MaxPermSize

256m


Georgia
Softworks


One instance
vs

multiple (default is one)


GSW licenses <> users


At least 5:1 ratio, 15:1 reasonable


One user ID
vs

multiple


Simplicity
vs

management

Telnet Maintenance


Script Lines contain password info


Must be updated for test, pilot, etc.


Files owned by this ID, not end user


Maximum connections


max for this user


Unlimited, 0, 1
-
99


Minimum


minimum always available


Default 2, suggested 0

Resource skills


Unix? Great!


Linux? Even better!


Windows? Have you heard about Linux?


Skilled resources are available, but far fewer


.Net

vs

Character


Decisions…


Performance or candy?


See Scott
Dulecki’s

other session for nice candy


Daemons


EE only… new financials


They don’t work, you’re screwed


They don’t communicate nicely


i.e. They don’t tell you they didn’t work



No easy way to check them all out*

Dulecki’s

Daemon Status Browse


OID Gotcha


OID Uniqueness


Required with Enhanced Controls


May exist without…


QAD routine to populate OID


Gpoidfcn.i



OID Function Library


NextOIDValue


Gpoidcr.i



Get next OID value


I confess… Excel with formula and macro ;)

What’s
Local
?


.Net

Client


%instance%
\
qadui


Character Client


Start
-
in directory


Report server for framework


Start
-
in Directory


C:
\
Program Files (x86)
\
QAD
\
QAD Enterprise
Apps
2011.1 EE

What Else Is Local?


Excel Integration


Local hard drive


CIM processing


%instance% remote drive

Where’s the Log?


DB:
%instance%
\
db


Webspeed
:
%
qdt
%
\
logs


Appserver
:
%
qdt
%
\
logs


Tomcat:
%tomcat%
\
logs


Daemon:
%
qdt
%
\
envs
\
%instance%
\
logs (EE only)


GSW:
%
GS_uts
%
\
log (
Windows only)


QDT:
%
qdt
%
\
logs


Sessions:
%instance%
\
qadui


.Net

client:
%
appdata
%
/Roaming/QAD/Shell/2.9


When we rebuild, these will be… easy to find.

How Big are the Logs


Log Maintenance


Not mentioned in default
ubroker.properties


brkrLogThreshold


brkrNumLogFiles


srvrLogThreshold


srvrNumLogFiles

The Next Layer
-

Progress


AppServers

(AS)


WebSpeed

Agents (WSA)


Name Server


Admin Server

AS & WSA are Progress Clients


Benefit from same tuning parameters that
other Progress Clients do


Options:


Direct connect


AIA


AS & WSA No Brainers


Sort Block Size:

-
TB 31


Sort Merge Buffers:

-
TM 32


Temp Table DB Block Size:
-
tmpbsize

8


Not specified in default
ubroker.properties


Temp File Location:

-
T


Fastest Storage Possible


Not specified in default
ubroker.properties


AS/WS Use with Care


R
-
Code Cache (
-
mmax
)


Multiplied by the number of AS/WS running


Default of 16000 in
ubroker.properties


Temp
-
Table Buffer Cache (
-
Bt
)


Multiplied by the number of AS/WS running


No easy way to monitor efficacy prior to V11


Default of 10000 in
ubroker.properties


Message Compression (
-
mc)

AS/WS Use with Care


Message Size (
-
Mm) discussed shortly


Quick Request (
-
q)


Logging Level


brkrLoggingLevel

(0
-
4)


srvrLoggingLevel

(0
-
4)


The higher the level, the slower the
performance


AS/WS Configuration


Remote DB Connection (REMC)


Self Service DB Connection (SELF)


Tradeoff: Performance versus Scalability


SELF has the best performance


REMC has many new tuning options starting in
V10.2B SP6

Remote Client DB Connections


Secondary Login Brokers (
proserve

-
m3)


Can be used to separate the DB connections for:


WebSpeed

Clients


AppServer

Clients


SQL (ODBC/JDBC) Clients


Maximum Clients per Server (
-
Ma)


Perfect: 1


Compromise: 2
-
5


Re
-
Read (
-
rereadnolock
)


Crucial for all REMC

Remote Client DB Connections


Message Size (
-
Mm)


Performance gains are highly dependent upon the
nature of the I/O but always a valuable option


Best improvement: NO
-
LOCK Reads


Must be used on
both

the Client & the DB Broker


Default:


1024 (1K)


Recommended:

4096
-
8192 (4K
-
8K)


Remote Client DB Connections


New REMC Parameters in V10.2B SP6


XXX Rated


Adults only


The Next Layer


The Database


Configuration


Tuning

Database Configuration


Storage Areas


Any one using EE?


Dan: The number of Storage Areas is NOT
appropriate to a product with the word ‘Enterprise’
in the name


QAD: “The
database group made that change
without talking to the performance team. It is now
part of the product but should be changed back at a
later release. Not sure why they made
the
change
but it is something we are stuck with for awhile.”



DB Tuning


No Brainers


BI Buffers (
-
bibufs
) GE 50


AI Buffers (
-
aibufs
) GE 50


BI Cluster Size (

bi) GE 32mb


Database Block Size (
-
blocksize
) 4K or 8K


8K is better


AI Block Size (
-
aiblocksize
) 16k


BI Block Size (
-
biblocksize
) 16K

DB Tuning


No Brainers


Async

Page Writers (APWs) 2
-
4


BI Writer


AI Writer


None of these are specified in the default
conmgr.properties

DB Tuning


No Brainers


Spin Lockout Timeout (
-
spin)


Worst: some calculation involving the number
of CPUs (and that’s what Progress defaults to)


Better: 2000
-
90000 (i.e. mid
-
range 5
-
digit
number)


Best: Use your birthday year *
π


Not specified in EE
conmgr.properties



Default is Dangerous on Servers with GT 16
CPUs/Cores

DB Tuning


Proceed w/Caution


Database Buffers (
-
B)


As large as possible but not so large that physical
memory is exhausted


More valuable use of memory than Clients


Use Buffer Hit Ratio (not percentage in
promon
) to
monitor; 100:1 to 1000:1 is optimal


The Hit Ratio is NOT just about the size of the

B


Scatter & Fragmentation


Nature of I/O activity (current versus old data)


Other utilities (
probkup
,
proutil

dbanalys
, etc.)



DB Tuning


Exotic


LRU Skips (
-
lruskips
)


Added in V10.2B SP6


LRU Skips for ABC (
-
lru2skips)


Added in V10.2B SP6


Alternate Buffer Cache; ABC (
-
B2)


Added in V10.2B


General Recommendation: Small to medium
size tables with very high read rates


DB Tuning
-

Miscellaneous


BI Max Size Threshold (
bithold
)


Watch Dog (
watchdogprocess
)


BI Writer (
beforeimageprocess
)


Index Range Size (
indexrangesize
)


Table Range Size (
tablerangesize
)


-
B for help (
blocksindatabasebuffers
) 50000 ??


The Next Layer


DB Server


Amount of File System Cache allocation


Fastest supported NIC Speed for Remote
Client communication


Storage


RAID 5, 6, and DP are
EVIL


NetApp

is our least favorite SAN vendor


SANs need to be configured very carefully


Don’t mix DB LUNs with other LUNs

Miscellaneous


VMware


Vmware


Adds another operating system layer


Many more buttons to push and knobs to twist


Memory management is tricky


Need good monitoring practices


Generally lose about 15% compared to ‘bare metal’


TEST, TEST, TEST

Questions?

Thank You for Coming!


Please don’t forget your evaluations!


EventBoard

or paper… not both



Scott Dulecki
(sdulecki@pridgeonandclay.com)


Dan Foreman (danf@prodb.com)