First of all, you should probably make sure that locktimeout is set to a reasonable number, like 60 seconds. The default is -1 which means that an application waiting on a resource that is locked will wait indefinitely. You can check this with a "db2 get db cfg" command.
Next I would try doing some snapshots, like applicaiton snapshot, or database snapshot, or dynamic SQL snapshot.
In the case of a dynamic SQL snapshot, you can see how long the SQL statement takes (total for all executions, and number of executions). Do a visual explain (using Control Center) on any long running SQL statement to see if the relative cost and access plan is reasonable. Snapshots are described in the Command Reference manual, and also the Monitoring guide.