Monitoring the Dispatcher Queue

本文介绍了如何使用SAP系统的内置工具来监控和分析工作进程的状态,包括如何查看工作进程的详细信息,如状态、占用时间等,并提供了针对不同状态的工作进程进行故障排查的方法。

Dispatcher statistics

Occasionally, it may be useful to analyze the work process dispatcher queue. Statistics on dispatcher activities are available via the server overview at the following path:

TOOLS • ADMINISTRATION • MONITOR • SYSTEM MONITORING • SERVER (Transaction SM51)

Then, mark an SAP instance with the cursor and select Go To • SERVER • INFORMATION • QUEUE INFO.

A list appears, showing information for each work process type on the requests currently waiting, the maximum number of user requests since the SAP instance was started, the maximum possible number of user requests for each queue, and the number of requests read and written.

The information about the dispatcher queue is especially important when the system is not responding because the number of requests in the queue is much larger than the number of work processes. In this situation, the SAP system does not have any more work processes available to perform an analysis. To obtain the queue data, call the auxiliary program dpmon (option P).

Monitoring work processes

You can monitor the actions of SAP work processes by using the TIME, STATUS, REASON, ACTION/REASON FOR WAITING, and TABLE fields in the work process overview. Note the following points:

->Are there sufficient idle (status: WAITING) work processes of each type on each SAP instance?
->Are there programs that use a work process for too long (TIME field)?
    If so, the user should check this program and see if it has any errors.
    A detailed program analysis may also be necessary.
-> Check the STATUS, REASON, ACTION/REASON FOR WAITING and TABLE fields to see whether more than 20% of the work processes are performing the same action. The main problems with this can be one of the following:

 ~If more than 20% of the work processes are in PRIV mode or in the roll-in or roll-out phase, this indicates a problem with SAP memory management.
 ~If more than 40% of work processes are performing a database action, such as SEQUENTIAL READ, COMMIT, etc., this indicates a database problem.
 ~If more than 20% of work processes are reading the same table at the same time, there may be a problem with an expensive SQL statement or exclusive lock waits in the database.

You can call the work process overview at the operating system level with the d pmon program. This is particularly necessary if the performance problem is so massive that no work processes can be used for the analysis.

Procedure Road map for Analyzing SAP Work Processes:

SAP Work Process Overview (Transaction Code SMSO/SM66)

  ? Work Processes with StatusRunning?

      ? Corresponding Actions: Direct Read, Sequential Read, Insert, Update, Delete, Commit

          0 Database Lock Monitor (Transaction Code DB01)

              ? ExclusiveLock Waits?

                 Analyze the Process Holding the Lock.

          0 Database Process Monitor (Transaction ST04, Function Oracle Session)

              Analyze Expensive SOL Statements.

          0 SOL Trace (Transaction Code ST05)

              Analyze Expensive SOL Statements.

   ?Corresponding Actions: Load Report, or semaphore1 ?

        Analyze SAP Program Buffer - Buffer Too Small?

    ? Corresponding Action:Roll-in, Roll-out, or semaphore6?

       Analyze SAP Memory Management- Extended Memory or Roll Buffer Too Small?

   ? Work Processes with Status Stopped? 

       ?Corresponding Reason: PRIV.

          Analyze SAP Memory Management- Extended Memory or Roll Buffer Too Small?

        ? Corresponding Reason: CPIC?

            RFC Destinations(Transaction SM59, Test RFC Destination Function)

            Check for Unavailable or Slow RFC Destinations.

            Work Process Overview(Transaction Code SM50/SM66) in Target System

            Check for Bottlenecks, e. g., Due to All Work Processes in The Target System Being Occupied.

   ? Work Processes with Status Complete?

           Save the Work Process Trace File for Analysis, and Restart the Work Process.




给定参考引用中未提及SQL Server中DISPATCHER_QUEUE_SEMAPHORE的相关信息。但一般而言,在 SQL Server 里,信号量(Semaphore)是用于资源管理的一种机制。 ### 介绍 DISPATCHER_QUEUE_SEMAPHORE 可能是与调度程序队列相关的信号量。调度程序负责将工作任务分配给可用的工作线程,而该信号量可能用于控制对调度程序队列的并发访问。当多个进程或线程尝试访问调度程序队列时,借助这个信号量来保证同一时间只有有限数量的操作可以进行,从而避免队列出现混乱或数据不一致的状况。 ### 作用 其主要作用是进行资源同步和并发控制。它能够防止过多线程同时对调度程序队列进行操作,避免出现竞争条件,保证调度程序队列的稳定性与可靠性。通过限制并发访问的数量,能够让系统资源得到更合理的使用,防止资源过度竞争引发性能下降或者系统崩溃。 ### 使用场景 - 在高并发场景下,大量的查询请求或者任务需要调度程序处理。此时,DISPATCHER_QUEUE_SEMAPHORE 能够控制对调度程序队列的访问,保证系统的稳定性和性能。 - 当系统资源有限时,例如 CPU 核心数量有限或者内存资源紧张,该信号量可以限制同时访问调度程序队列的线程数量,避免资源过度消耗。 ### 示例代码 以下是一个简单的伪代码示例,展示了信号量在调度程序队列中的基本使用: ```python import threading # 模拟 DISPATCHER_QUEUE_SEMAPHORE dispatcher_queue_semaphore = threading.Semaphore(2) # 允许同时有 2 个线程访问 def access_dispatcher_queue(): dispatcher_queue_semaphore.acquire() try: # 模拟访问调度程序队列的操作 print("Accessing dispatcher queue...") finally: dispatcher_queue_semaphore.release() # 创建多个线程来模拟并发访问 threads = [] for _ in range(5): thread = threading.Thread(target=access_dispatcher_queue) threads.append(thread) thread.start() # 等待所有线程完成 for thread in threads: thread.join() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值