How
to troubleshoot a background job running for long duration in sap?
1) First of all identify the
job that is long running and identify details like job class, workprocess that
is executing the job
2) Click on the job to view
the display job screen. In the screen, click on job log to understand what is
being performed by the job currently. This may give details like job is
currently extracting some data packages or processing data packages etc
3) Identify the executing
server and process id of the job from the step 1 and goto transaction SM50 of the respective executing server
to view more details about the background job running.
Figure out the status of the
job like On Hold or running from the process overview. If the job is On
Hold, find out the reason for On Hold by examining the "Reason"
column of SM50
transaction. Reason for On Hold could be due to CPIC/RFC/DEBUG/ENQ/PRIV/UPD
etc.
Double click on the reason
column for detailed information on the same and troubleshoot accordingly. If
reason is RFC, check out which RFC it is referring to and cross check
whether destination system is up or not and any other problems with that
system.
- If it is ENQ,
check out any lock issues like lock overflow etc
- If it is PRIV,
check out for memory bottlenecks
- If it is UPD,
check out whether any update issues
- If it is CPIC,
check out for any network , gateway, message server and other
communication problems
4) After performing step3, if
you figure out job is not on Hold and it is in running state, then examine
report column to identify what report/program is being executed by the job.
Once you got the report/program details, figure whether it sap program or
custom program and take actions accordingly.
5) Also examine Action and
table columns in SM50 transaction of respective executing server to identify
what is the action( roll in/roll out /Sequential read/Physical read/insert/update/delete
etc) being carried out by the job currently and what is the table on
which action is being carried out.
If it is sequential read,
figure out the cost of that sequential etc and consider for indexing etc. If it
is physical read, check out whether there are too many swaps and consider
resizing buffers accordingly. If you observed delay is due to high roll in/roll
out, identify reasons for the same and tune buffer/memory parameters
accordingly.
6) Once you get the table
details on which action is being carried out, figure
out
- How many
records are existing in the table?
- Is this taking
long time due to volume of records?
- Are there
proper indexes on the table ?(If no proper index, consider index
creation by taking help of DBA )
- Is the table
having upto date statistics? (If statistics are out of date, consider
updating statistics of that table)
7) Consider debugging the
process in SM50 (Program/Session -> Program -> Debugging) to
figureout the issue
8) Using ST05 or ST12, a
trace can be taken for background job to figure out where exactly time is being
consumed and to identify various cpu/memory bottlenecks or any buffer issues.
9) STAT/STAD transaction can
be used to figure out what is the reason for high response time and actions can
be taken accordingly
10) By taking help of ABAP
er, even ABAP run time analysis can be done using SE30 transaction
By following the above steps,
you can pin point the issue and take actions accordingly to
minimize runtime of long running background jobs.
No comments:
Post a Comment