[BASIS]SAP記憶體優化配置學習

penguin.23發表於2018-05-07
     SAP應用系統為三層:SAP GUI、SAP應用伺服器、SAP資料伺服器
    本次我們主要針對SAP應用伺服器進行內容優化配置; SAP應用伺服器架構主要由Dispatcher、Work Process兩部分組成,其中Work Process又包括了有Dialog:前臺操作、Update:非同步資料更新、Background:後臺任務、Enqueue:用於加鎖與同步、Spool:用於列印。
   SAP應用伺服器對於記憶體的使用:
1. 
User Context
–user-specific area: user and authorization data
–session context: 每個前臺使用者可以有6個Session
2. Variables
3. Internal Tables

4 什麼是記憶體切換?
   為什麼要進行記憶體切換?所有的前臺操作都是由一批有限數量的後臺Dialog程式進行服務的
一個Dialog程式可能需要同時服務多個前臺程式
一個Dialog程式是如何為多個前臺會話服務的?
每一個前臺操作,是由一系列Transaction Step組成
每個Transaction Step是SAP ABAP程式獨立執行的最小單位
每個Transaction Step作為一個Dialog執行請求被提交給Dispatcher
Dispacher將任務指派給某個Dialog程式去處理
    所以,Dialog程式需要在處理每個Transaction Step前後切換User Context


5 進入PRIV模式:直到當前的Transaction結束
  進入PRIV模式的程式的自動終結
 PRIV模式程式個數超過Max(rdisp/wppriv_max_no-5, 1)
 進入PRIV模式時間超過rdisp/max_priv_time(default=600s)
 非Dialog程式不受影響
 Dialog程式如何分配記憶體


6 最佳優化實踐-左右為難
 多分配一些記憶體給資料庫可以提高資料訪問速度,但是過多也會造成作業系統Page in/out過多,而降低效能
 Roll Area過大,記憶體複製的開銷會很大,過小則容易使非Dialog程式進入PRIV模式
 Extended Memory應設得大一些,以避免Dialog程式進入PRIV模式,但太大了容易造成過多的作業系統Page in/out
 Dialog程式設得多一些可以提高前臺響應速度,但過多又太浪費記憶體

7 最佳優化實踐-優化方法
 資料庫訪問通常不會成為瓶頸,因此可以少分配記憶體給它;而且,當我們合理地設定了作業系統Cache時,與資料庫本身Cache的效能區別不大
 ztta/roll_first應該設得小一些,以使得Dialog程式儘量使用Extended Memory, ztta/roll_area也無需太大,以節省每個程式所佔用的記憶體
 Extended Memory應該設得較大,以避免進入PRIV模式,但又保證系統使用記憶體總量(扣除OS Cache)不超過實體記憶體太多
 Dialog程式數量應經過一個階段的試用而定,主要是保證最大佇列長度不太大
 abap/heaplimit設為一個大小適中的值,可以少佔記憶體
 abap/buffersize無需設得過大,只要沒有明顯受到影響即可

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/20659905/viewspace-2153986/,如需轉載,請註明出處,否則將追究法律責任。

相關文章