Unblocking The Main Thread Solving ANRs and Frozen Frames
be the captain of your connections deployment
1. Be the captain of your IBM
Connections Deployment
•Adm04.
Christoph Stoettner &
Sharon Bellamy James
2. Who are we?
Christoph
• Senior Consultant – panagenda
• IBM Notes / Domino since 1999
• IBM Connections since version 2.5 / 2009
• Many years of experience in:
• Migrations
• Administration and installs
• Performance analysis
• Joined panagenda in 2015 focusing in:
• IBM Connections deployment und
optimization
• IBM Connections monitoring
• Husband of one & father of two, Bavarian
Sharon
• Cube Soft Consulting Ltd.
• IBM WebSphere since 1999
• IBM Connections since version 2 / 2008
• Many years of experience in:
• Migrations
• Administration and installs
• Integration/Cusomization
• DOCUMENTATION
• Co-Founded Cube Soft in 2013
• Bit of a star wars and Disney fan
• Charity fundraising Cosplayer/Costumer
5. Databases
WebSphere Application Server
IBM HTTP ServerWebSphere Plugins
Application DBsPEOPLEDB
LDAP Server
TDI
Forward to Application Server and
Port
(Load balancing and Failover)
Redirect
unknown
URL
Upload and Download of
Files, Attachments
Common: Access
Customization,
Webressources
Read and Write
Authentication
Users / Groups
Create, Update,
Delete and Inactivate
Profiles
Shared
Directory
Link
to
Attachments
Profile changes synchronize to
Membertables through JMS Queue
Optional:
Direct Access
to Attachments
6. System Requirements
• Regularly check requirement documents
• All versions
• http://short.stoeps.de/vwzrv
• IBM Connections 5
• http://short.stoeps.de/mspdi
• IBM Connections 5.5
• http://short.stoeps.de/cnx55sysreq
• Check all notes, Download PDF
• Be careful with installation documents
• Sometimes wrong dependencies mentioned
• Supported statement does not mean it’s licensed
Connections 5.0 CR3
Connections 5.5
7. Sizing
• Be prepared for future growth
• Do not overact
• A few hundred users doesn’t mean you need a large deployment
• Not fans of multi-instance database machines
• If I run in database performance issues I split the databases to different
machines
• Performance tuning guide
• Multi-instance is best practice, if you have enough resources
8. Sizing
• A word on requirements
• 4 | 8 GB memory minimum is often too less,
better to start with 10 or 12 GB
• Memory swapping kills all tuning efforts
• CPU cores
• 2 cores minimum only on small deployments
• Thumb rule: calculate one core for each jvm
(expensive with PVU license)
• Disk
• Using network storage or virtualized servers
• Easier to extend
Connections 5.0
Connections 5.5
9. Prepare for your Installation
• Download all software packages
• Check System Requirements!
• Paths shouldn't contain spaces
• No spaces in source and destination folders
• Use a dedicated administration user
• Especially on Windows avoid users with applied group policies
• If possible disable User Account Control (UAC)
• Run all Installer and Scripts with option “Run As Administrator”
10. Security & OS
• During installation you should disable all "Security" Software
• SELinux
• AppArmor
• Antivirus
• Firewalls
• Self developed scripts and extensions
• It's not fun, when a script deletes databases, because you forgot to add the
directory to the script exclusions
• With Linux check the ulimit/security limits
• With Windows UAC off for install, ensure account passwords do not expire and no
odd policies area applied to the admin account
• IBMi check the CCSID installs struggle with the default setting 65535
11. Network
• Name lookup / DNS
• All servers must be resolvable (hosts is not a suitable workaround)
• Knowing the protocol
• Avoid Round Robin
• No Authentication failover in WebSphere with Round Robin!
• Network storage (file locking is important)
• NFS v4 / SMB|CIFS
• No DFS
• Reverse Proxies / Proxies
• Always test your deployment without proxies
• Activate after successful testing
12. Register WAS as a service
• Register WAS as a service
• Services for Deployment Manager and NodeAgent(s)
• wasservice.bat|sh
• Map service to a technical user
• any Active Directory User is possible
• allowed to read / write network share with Shared Content
• Service can parse commands to nodeagent
• -stopArgs "<NA commands>"
• Configure monitoring policy (if required)
13. Register WAS as a service
cd D:IBMCNXWebSphereAppServerbin
WASService.exe
-add CnxNode01
-serverName nodeagent
-profilePath d:ibmcnxwebsphereappserverprofilesCNXNode01
-stopArgs "-username wasadmin -password password -stopservers"
-userid cnxtec -password password
-encodeParams
-restart true
-startType automatic
Stops AppServer
parsed to nodeAgent
14. Monitoring Policy
• Each Application Server
• Change Node restart state to
"RUNNING"
• Large deployment on Windows
• Default timeout for service shutdown
= 20 seconds
• Increase Value at:
HKEY_Local_Machine:
SYSTEMCurrentControlSetControl
WaitToKillServiceTimeout
• Must set this to stopped before
performing updates
15. Directories & Synching
• Prepare your LDAP
• Better data within LDAP → better Profiles
• Switching Authentication directories is possible
• Need some planning
• Dependencies
• Quality of LDAP data
• Plans to activate SPNEGO
• Domino Mail Integration
16. Federated Repositories Best Practice
• Leave the file based wasadmin with
WebSphere Application Server
• Fallback if LDAP Bind Credentials changed
• Solving problems with
Federated Repositories
• Default does not allow this
(you have to disable security to
change configuration)
Check this box
17. Logs – Useful info
• Change log language to English (IBM will love you for this)
• WebSphere
Add "-Duser.language=en –Duser.region=US" to Generic JVM arguments of
• Each application server (Process definition – Java Virtual Machine)
• dmgr (System Administration – Deployment Manager – Process Definition ...)
• nodeagents (System Administration – Node agents – nodeagent – Process Def
...)
• TDI
• edit ibmdisrv.bat|sh
• add -Duser.language=en –Duser.region=US
to LOG_4J variable
18. Rotate Logs
• WebSphere Logs too small for Troubleshooting
• Default: 5 Logs 1 MB each (SystemOut and SystemErr)
• Better 5-10 Logs 20 MB each
• Setting for each Application Server
• remember Nodeagents and Dmgr
• Change this as soon as your servers
have been created
19. Rotate Logs
• IBM Connections 5.5 – SET BY DEFAULT!!
• Install.log
• Result:
• So your logs are stored 30 days, independent of size
20. Rotate IBM HTTP Server Logs
• Default: no max size for access_log and error_log
• Often some GB of Log files
• Open with an Editor?
• Disk size
• Search for this lines in httpd.conf:
• Comment out:
CustomLog log/access_log common
ErrorLog logs/error_log
# CustomLog log/access_log common
# ErrorLog logs/error_log
21. Rotate IBM HTTP Server Logs
• Add:
• Delete Log Files older than x days
• Linux
• Windows (Batch through Task Scheduler or Powershell)
Linux:
CustomLog "|/opt/IBM/HTTPServer/bin/rotatelogs /opt/IBM/HTTPServer/logs/access_log.%Y%m%d 86400" common
ErrorLog "|/opt/IBM/HTTPServer/bin/rotatelogs /opt/IBM/HTTPServer/logs/error_log.%Y%m%d 86400“
Windows:
CustomLog "|D:/IBM/HTTPServer/bin/rotatelogs.exe D:/IBM/HTTPServer/logs/access_log.%Y%m%d 86400" common
ErrorLog "|D:/IBM/HTTPServer/bin/rotatelogs.exe D:/IBM/HTTPServer/logs/error_log.%Y%m%d 86400"
crontab -e
# Delete logfiles older than 3 days in logs
10 0 * * * find /opt/IBM/HTTPServer/logs/*_log.* -mtime +3 -exec rm -rf {} ;
forfiles -p "D:IBMHTTPServerlogs" -s -m *_log.* -d -3 -c "cmd /c echo @file"
22. Rotate Logs DB2
• db2diag.log
• Default: no maximum size
• Default: %PROGRAMDATA%IBMDB2instancenameDB2
• Full C-Partition in Windows still hard to solve
[db2inst1@cnx-db2 ~]$ db2 get dbm cfg |grep -i diagsize
Size of rotating db2diag & notify logs (MB) (DIAGSIZE) = 0
[db2inst1@cnx-db2 ~]$ db2 update dbm cfg using DIAGSIZE 1024
DB20000I The UPDATE DATABASE MANAGER CONFIGURATION command completed successfully.
[db2inst1@cnx-db2 ~]$ db2 get dbm cfg |grep -i diagsize
Size of rotating db2diag & notify logs (MB) (DIAGSIZE) = 1024
23. HTTP Server Keystore
• NEVER EVER use the plugin keystore for the IHS SSL
key – this is a BAD idea
• Hard to debug if issues
• This overwrites plugin-key.kdb on your Webserver
• What if the SSL Key deleted
• Have you got a backup?
• When you want to reuse Plugin Key store
• Import SSL Key into CMSKeyStore
• But never seen this in the wild
24. HTTP Server Keystore
• Best Practice - Create a separate key store for IHS
• Ikeyman will help you
• Possible to use a wildcard
• If wildcard keystore you can copy it to use on dev/ test machines
• Easier to debug
• Backup the keystore
before changes
26. J2EE Roles
• Some Applications are public readable after installation
• Profiles
• Communities
• Blogs
• Check after Updates
• Google: “Site:myconnections-host”
• Should only show a login page
• Use the Community Scripts to do this or change in the ISC
28. Harden HTTP
• If you use SSL Keys longer than 2048 bit, you must replace
• Download and replace Java (unrestricted) policy files
• https://www-01.ibm.com/marketing/iwm/iwm/web/reg/pick.do?source=jcesdk
• Also needed if Domino (Mail Integration) or Sametime Proxy use
longer keys
• Remove Server Information (HTTP Header, Error pages)
• ServerSignature Off
• ServerTokens Prod (DEFAULT)
• AddServerHeader Off
Default
29. Remove Index
• Remove all Files except index.html from <IHS_ROOT>/htdocs
• Rename index.html (e.g. 0815.html)
• echo 1 > 0815.html
• For testing you can access the file
• Add robots.txt
32. Worst Practise Example - Tuning
• Customer showed me a system with following infrastructure
• WebSphere
• Large deployment
• 16 GB RAM
• 4 Cores
• DB2
• 12 instances
• 8 GB RAM
• 4 Cores
• Connections restart 22 minutes
Web Server
ihs.example.local
WebSphere
was1.example.local
Db2 / TDI
db2.example.local
Freigabe
LDAP
domino1.example.local
User SynchronisationAuthentication
33. Solving the problem
• Large deployment means about 15 JVM on the machine
• Restart shows 15 min 100% CPU usage
• Adding 4 cores and restart time get down to 7 minutes
• Other option would be midsize deployment, but then you have to reinstall
Connections
• Java Heap Sizes set to default (256 MB and 768 MB) -> increase to 1.5 – 2.5 GB
• Perf Guide mentions that multiple instances on DB2 only increase performance
with enough resources
• But that was not the real problem
• DataSource connectionPool Sizes are set to Default 1/10
• Increase this values to the proposals in the guide and ...
• Restart time comes down under 3 minutes
• Key point: read the complete guide
35. Java Heap
• Default Java Heap Sizes on Midsize Deployment: 2506 MB /
application server
• Large Deployment depends on application: 0.5 to 2.5 GB
• Main point in memory tuning
• Never exceed the system memory
• Swapping kills all your tuning efforts
• Counting the JVM Heap sizes is not enough
• Maximum heap is not the maximum amount of memory the jvm uses!
• Libraries, jars and so on count additional to memory usage
• JVM memory usage may be 3 * JVM maximum Heap
• Initial and maximum Heap Size should be equalized
36. IBM HTTP Server
• Enable compression
• Important !!!!!
• See Slides from BP307 - IBM Connect 2014
• Save up to 70% network traffic
• Minimal increase of CPU load
• Enable file download through IHS
• Depend on your deployment
• Often security forbids storage access from DMZ
• If you have no access to file share from IHS -> Files should be
installed in a separate Cluster
37. Midsize Deployment Files
• Often IHS positioned in the red zone (DMZ)
• Mostly No Access to SHARED DIRECTORY
• Create a Cluster for Files
• No Problem with Large Deployments
• With Midsize you can add an additional Cluster during Setup
(Looks different on Connections 5.5!)
38. Activate Synchronous File transfer
• Servers -> Application Servers -> serverName -> Web Container
Settings -> Web Container -> Custom Properties
• com.ibm.ws.webcontainer.channelwritetype=sync
40. Prepare
• TEST FIRST
• In a test system – not got one?
Build one
• Side by Side where possible
• Less risky, allows for fast roll
back
• Backup your data
• Gather your requirements
• Keep it simple
• Upgrade first
• Test
• Add additional components
• Test again
• Do not use all or nothing
• Can cause issues
• Difficult to debug
41. Migrating – What You Need To Know
• Essentially its like installing a new Connections system
• There is no magical upgrade button
• Most components need updating or are new versions
• Sometimes the instructions for configuring have completely changed
• Know what to back up
• Read the migration guide
• Backup the shared data, customizations and Data Bases before you start
• DO NOT just copy the customizations over
• Often jsps or config has changed. Once new version is installed – reapply the
changes in the new file versions
• READ THE DOCUMENTATION – before you do anything
42. Side by Side VS In Place
Side By Side
• Completely separate environment – live system
can stay up whilst migration testing / system
building occurs
• Allows for full testing before go-live
• Any changes can be made to the new system
with little pressure as the live is still functioning
• An actual live migration can be run when the
system has planned downtime (weekend,
maintenance window etc) – an can take as little
as 4 hours (depending on amount of data)
• If issues with live migration – existing system is
still available to roll back to in seconds
• Less risk, less pressure, easier to debug
In Place
• All or nothing – once you have started there is
no real roll back
• System is down when the migration takes place
– users are off for however long it takes
• Much pressure if there is a problem
• Avoid where possible
• If there HAS to be an in place migration ensure
sufficient offline backups and snapshots have
been taken to allow a restore
• Have a plan to roll back, where possible migrate
when system has down time (weekend,
maintenance window etc)
43. Installing Clean Connections
Side by Side
• Stop the Connections system – back up
everything
• Restart and let your users carry on
• Install a fresh Connections system elsewhere
and configure it up as per normal – apply fixes,
customizations etc.
• Test the clean system to ensure it works as
expected – then BACK IT UP
• Migrate the data – File system (Connections
data shared)
• Migrate the DB’s – either with the DBT or drop,
restore and update
• Test
In Place
• Stop EVERYTHING – your system will be
completely offline whilst the update takes place
• Back it up : DBs and File System
• Uninstall Connections
• Ensure WAS profiles are clean (no apps or
config), update WebSphere, recreate and
configure (as per install)
• Install connections and configure
• Drop new Connections DBS, restore and update
existing
• Configure connections, apply fixes, any
customizations
• Test
44. Restore DB VS DBT
Restore and update
• Drop the test DBs, then
restore and update
• Often faster
• Easy to roll back for extensive
testing of migration
• Can only do same OS and
versions of DB
Database transfer tool
• Takes more time
• Can be a bit tricky to get going
• Can run tests with live DB up
• Can move OS’s
• Can move DB Types
• Not always straight forward
but very possible
Both methods have their place – chose which ones best suits your needs
45. Migration issues with Backups
• Compressed backups cause issues with migration
• Do not compress the backups used for migration
• Makes extra work as they have to be restored elsewhere then migrated
in
• Avoid changing bit types – can cause issues
• Full offline back ups where you can
• Avoid making extra work (remember K.I.S.S)
• If you do need to do anything *sexy* with DB migration
use the DBT – if in doubt .. PMR or ask the community
47. What to Backup
• Using an example Connections installation guide rarely explains
backups
• These guides normally do not mention backup, or what to back up
• Disk crash means data loss
• Database backups through file backup are not supported and mostly
not restorable
• Important!!!
• Database Backup through Online Backups can be taken when Connections is
up
• Offline backups are also possible
• Ensure the file system & DB backup are run at the same time of day
• DB and Filesystem data will stay in sync – if you take your DB backup at
midnight and the file system at midday they will be out of sync
48. Backup
• Most important (minimum daily)
• Databases (offline or online)
• Shared content
• Important
• Configuration
• WebSphere Application Server
• Connections
• IBM HTTP Server
• TDI Solution
• Test if restore is possible!!!!
• Several issues with WebSphere restores, where binaries weren't on the tape
50. Checklist
• DO
• Document your installation steps
• The official documentation is
sometimes confusing, because all OS
within one document
• Use a LDAP user for
connectionsAdmin
• Be prepared for scaling
• Shared directory on UNC path
• No small deployment installations
• Tune your environment
• READ THE DOCUMENTATION!!!!
• DON’T
• Use multiple instances DB2 with small
resources
• Install on a single machine (unless the
environment is very small or for test)
• Copy customizations to newer
versions
• jsp, ftl copy will break something
• Use unstable file shares
• Test deployment with server IE
• Test with only one language
51. Install Checklist
• WebSphere Application Server
• Configure Federated Repository
• LtpaToken, enable security
• WebSphere Application Server Supplements (IHS, Plugins)
• DB2 (or other DBM)
• TDI
• Add Webserver to Dmgr (use configurewebserver.bat)
• Enable SSL on IHS
• Import IHS Root Key within WebSphere cell trust keystore (retrieve from port)
• Configure CCM
53. Documentation
• Everyone (except Sharon) hates
writing documentation
• BUT – make notes as you go, it
doesn’t need to be a full step by step
guide with screenshots
• Document all customizataions
• Any additional changes made
• Anything of note that deviates from
the guides
• Lessons learnt or how you solved
issues
• Use the scripts to output some of it
54. Useful Tools
• Browser
• Firefox (portable) / Firefox ESR
• Chrome
• IE (download vm with different
versions)
• https://www.modern.ie
• Network analyzer
• Wireshark
• tcpdump
• Unzip / Unarchiver
• 7-zip
• WinRar
• Editor with syntax highlighting
• vim, geany
• notepad++
• Tail
• baretail
• multitail
• mtail
• Proxy
• Fiddler (often asked for by IBM
Support)
• Burpsuite (intercept proxy)
55. Links and References
• IBM Connections System Requirements
• http://www-01.ibm.com/support/docview.wss?uid=swg27012786
• IBM Connections Family Documentation
• http://www.ibm.com/support/knowledgecenter/SSYGQH/welcome
• IBM Connections 4 Performance Tuning Guide
• https://www-10.lotus.com/ldd/lcwiki.nsf/dx/IBM_Connections_4.0_Performance_Tuning_Guide
• IBM Connections 4.5 Performance Tuning Guide Addendum
• https://www-10.lotus.com/ldd/lcwiki.nsf/dx/IBM_Connections_4.5_Performance_Tuning_Guide_Addendum
• IBM Connections 5 CR1 Performance Tuning Guide
• https://www-10.lotus.com/ldd/lcwiki.nsf/dx/IBM_Connection_V5_CR1_Tuning_guide