George - I feel your pain brother.
Currently nursing a prod server for the past 4 hours, trying to figure out why it is today going as SLOW as possible. Whereas in the past it has been fast. The suggestions above are ones we regularly follow:
- Clear UNSENT_MAIL folder
- Clear Execution Context table
- Optimise App as per Vlad video
- As ACDC pointed out, drop downs can be a real killer, watch them and make sure you are not 'fetching all' if there are a large number of instances in the BO, this is very hard to find as it will not show in any logs
- Watch out for attaching large docs to the RegularUser BO, this can slow users down
All of this raises one important issue we have discovered, the logging currently makes it VERY hard to find these kinds of problems. We have a simple Linux memory too called "Top" to measure memory usage, we can track this per second to see memory spikes. BUT you can't easily track what a user is doing in your app with current logging.
It would be AWESOME if there was some form of Aware logging that simple output to a text file:
ServerTimeStamp | BSVName | LoginName | Useraction
where the 'Useraction' in the above is what the user is doing in your app, it would be:
- the form name, process name, button name they clicked
- the process name that was initiated from a user action
basically "what" the user initiated at that time.
If you had this info, you can map memory spikes to the user interaction by timestamp and zero in on the problem immediately.
The current logging is either far too detailed and full of Java items that you don't understand and detailed rule terms, OR not detailed enough. Having said that, I still want to keep the current logging, I just want an additional piece as described above 🙂