CNC Best Practices OBUG JDE14 November 2014 Niall Baker ► Technology Director @ Forza ► Responsible for CNC Managed Services/Consulting ► Joined JDE in 1999 ► 15 years CNC experience Marcelo Tamassia ► Founding partner @ EmeraldCube Solutions ► 18 years of tech industry experience ► 13 years of EnterpriseOne consulting in South and North America ► Planned, designed, executed, and managed over 90 E1 implementations and upgrades worldwide Agenda Intended Audience Best Practices – Performance – Database Monitoring – JDE Monitoring – Log Monitoring – JDE CNC Packman Prism Intended Audience JDE System Administrators Folks in Technical Roles Geeks, Nerds, Techies, Trekkies, etc… BEST PRACTICES? PERFORMANCE BEST PRACTICES #1 Performance – Track Enterprise Queries Configure JDE.INI – Set QueryExecutionTimeTreshold > 0 (start at 30 seconds) Search logs for “dbperfrq.c” JDE Log 6373/1 MAIN_THREAD Thu Jan 30 00:00:33.704811 dbperfrq.c770 doQueryDiagnostics: The following SQL query took 10 seconds which is equal to or greater than QueryExecutionTimeThreshold (10 seconds) for E1User(MARK) with DBProxyUser(JDE). 6373/1 MAIN_THREAD Thu Jan 30 00:00:33.705162 dbperfrq.c782 SELECT * FROM PRODTA.F41021 WHERE ( LIPQOH <> 0.000000 OR LIPCOM <> 0.000000 OR LIHCOM <> 0.000000 OR LIPREQ <> 0.000000 OR LIQOWO <> 0.000000 OR LIQTTR <> 0.000000 OR LIQTO1 <> 0.000000 OR LIFCOM <> 0.000000 OR LIMCU <> ' 1001' OR LIITM > 1.000000 ) ORDER BY LIITM ASC,LIMCU ASC #1 Performance – Track Enterprise Queries Research Issue – Determine type of process (JDE.LOG) – Talk to the user (shown on log message) Be mindful of row security impact on queries Involve your DBA (if you have one) to determine why the query is taking to long – Bad Query/Inquire – Missing Index(es) – Slow I/O – Locking/Blocking #2 Performance – Tune JDE Kernels Make sure you have enough kernels of at least these: – Call Object: 6 to 12 users / multithread kernel – Security: 40 to 60 users / kernel – Metadata: 150 users / kernel – Network: 1 process + 200 users / kernel – UBE: 60 users / kernel Make sure you don’t have too many – Memory & Performance considerations E1: KER: EnterpriseOne Kernels Overview (Doc ID 961823.1) #3 Performance – Compress Data Use database compression – SQL Enterprise 2008+ – Oracle Enterprise 11g + Feature Results – Data reduction of 60% to 90% – Reduced memory requirements – Reduce backup/restore time – Fewer I/O – 40% to 50% performance improvement – 5% to 10% higher CPU consumption #3 Performance – Compress Data Sample compression rates Table Name Compression F4111 Item Ledger File 76% F0911 Account Ledger 73% F0411 Accounts Payable Ledger 69% F43121 Purchase Order Receiver File 69% F4311 Purchase Order Detail File 68% F9000 Task Master 62% F0101 Address Book Master 61% F4229 Sales Summary History File 56% F0005 User Defined Code Types 54% #4 Performance – Consider Solid State Most JDE E1 environments are I/O bound, not CPU bound – Faster I/O most likely will result in faster overall E1 performance – Faster CPU might/ might not result in faster overall E1 performance Most JDE E1 environments are 2/3 reads and 1/3 writes Performance Comparison (IOMeter Database – Average IO/s) – HDD 15K RPM: 445 IOPS – SSD: 2300 IOPS Cost / GB – HDD: 0.05 USD – SSD: 0.80 USD #5 Performance – Adjust JVM Heap JVM Process Memory OS memory limits per single process – 32-bit, roughly 2GB – 64-bit, theoretically 2,000 PB #5 Performance – Adjust JVM Heap Garbage Collection – Lock (lock involved objects so they don’t mutate) – Mark (iterate through all objects) – Sweep (remove marked objects / reclaim memory) Why do we care? – Garbage Collection relationship with performance Baseline for 50 users – 32-bit: 1.5 Gb (max = min) – 64-bit: 2 Gb (max = min) #5 Performance – Adjust JVM Heap GCViewer M E M O R Y Slow Performance Region Better Performance Region Point of Crash 70% of Max Heap Threshold Performance Horizon TIME https://github.com/chewiebug/GCViewer #6 Performance – Track ER Loops Event Rules are interpreted by JAS in real time ER loops can cause high CPU and memory consumption How to find out? – Set Long Loop Warning Threshold (jas.ini) to 1000 – If a process performs more than 1000 iterations a message is logged #6 Performance – Track ER Loops Message on JAS log Typical causes – Code issue/bug – End-user mistake DATABASE MONITORING #7 Database Monitoring - I/O Latency Measure Latency – SQL DMVs: Join sys.dm_io_virtual_file_stats and sys.master_files • Read Latency: CEILING((io_stall_read_ms / ( 1.0 + num_of_reads))) • Write Latency: CEILING((io_stall_write_ms / ( 1.0 + num_of_writes))) – Oracle: AWR / Foreground Events “Acceptable” Latency Type Read Write Sequential < 25ms < 10ms Random < 30ms < 20ms Total < 30ms < 20ms #8 Database Monitoring - Blocking Blocking vs Locking What causes blocking – Concurrency? Poor I/O? Code bug? DB Misconfiguration? Identify – SQL DMVs • dm_exec_requests + dm_os_waiting_tasks + dm_exec_sql_text – Oracle • v$lock + v$session #9 Database Monitoring - Long running SQL Monitor – SQL: dm_exec_query_stats + dm_exec_sql_text – Oracle: v$session_longops + v$session Research – Find source process Potential fixes – Application Query Security – Data Selection Security – Create Index(s) JDE MONITORING #10 JDE Monitoring – Zombie Kernels Use Server Manager for alerting Research – Type of kernel – Call stack – ESUs? Clear zombie after all needed data collected #11 JDE Monitoring – Call Object Stats What are your most executed BSFNs? What are the most time consuming BSFNs? What BSFNs timeout the most? How – Manually export data from Server Manager JAS Instance – Prism (TBD) #12 JDE Monitoring – Batches Anomalies – Errors – Queuing Critical Jobs completion Volume – Most frequent vs. Longest running How – Custom queries/scripts – Prism #13 JDE Monitoring – Scheduler Make sure JDE scheduler is up and running Are batches being submitted? How – Custom queries/scripts – Prism #14 JDE Monitoring – Response Time Monitor end-user performance How long is it taking to logon? How long does it take to open P4210? How – Oracle Real User Experience Insight – Prism Virtual User LOG MONITORING #15 - Log Monitoring Monitor all tiers – Operating System logs – Database logs – Enterprise Server logs – HTTP logs – Weblogic / Websphere logs – JAS logs Why? – Spot issues proactively – Reduce troubleshooting time – Identify patterns and frequency of errors #15 - Log Monitoring Know what to ignore and what is an issue Key is to be proactive Tools – Loggly – Prism – Splunk – PaperTrail – Manual CNC BEST PRACTICES #16 – JDE CNC – Compare Specs vs DB Execute R9698711 once a quarter against Production Generate missing tables via OMW (R98403G if many) Generate all missing indexes via OMW (R9698713 if many) Fix any column mismatches #17 – JDE CNC – Users & Roles All users should have: – Valid Address Book number – At least one role – Valid system users All roles should have: – At least one environment assigned to it – At least one user assigned to it #18 – JDE CNC – Technical Purges Database – Job Master + Dependencies – Subsystem – Workflow – Workcenter – Scheduler History – Package History – Security History – Orphan Security Entries – Orphan User Overrides Files – Log files – PrintQueue – Temporary files #19 – JDE CNC – OMW Backup Rule Create a Production Save Location to back up production objects before they get replaced Create new status code and activity rule prior PD Make sure users/developers cannot bypass the PD save on promotion Use Row exit “Backup Rule” PACKAGE AUTOMATION #20 – JDE CNC – Packages Retention – No more than 2 full / pathcode – No need to keep updates for older full packages – Full package for each pathcode should be built at least every 6 months or when excessive number of updates package Be consistent with your name convention If you built more than one package / week you should automate it http://packman.forzaconsulting.eu/ Automate your JDE Object Life Cycle Management Typical Change Mangement Process DV Developer finishes project Package build request Assemble projects Create Package Assembly Build Package Deploy Package Development Test PY Package build request Promote project Assemble projects Create Package Assembly Build Package Deploy Package Prototype Test PD Approve Production Release Promote project Assemble projects Create Package Assembly Build Package Deploy Package In Prduction Automated Change Mangement Process DV Developer finishes project Package build request Assemble projects Create Package Assembly Build Package Deploy Package Development Test PY Package build request Promote project Assemble projects Create Package Assembly Build Package Deploy Package Prototype Test PD Approve Production Release Promote project Assemble projects Create Package Assembly Build Package Deploy Package In Prduction Automate your JDE Object Life Cycle Management Decrease time spent on change management Minimize manual administration tasks Minimize errors Automate periodic update packages Receive email notifications Completely integrated with JD Edwards PRISM Prism Modules – Job Monitor – Log Monitor – Virtual User – Database Monitor – Data Integrity Monitor – Record Reservation Monitor – Technical Purges – Monthly Report – Auto Updater Want to know more? Come and Visit Us at the Forza Stand Want to know more? Come and Visit Us at the Forza Stand Questions?
© Copyright 2024 ExpyDoc