[BASIS]SAP記憶體優化配置學習
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無需設得過大,只要沒有明顯受到影響即可
本次我們主要針對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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SAP BASIS學習筆記(轉)筆記
- HBase記憶體配置及JVM優化記憶體JVM優化
- Android學習之 記憶體管理機制與應用記憶體優化Android記憶體優化
- eclipse 增加記憶體的方法、修改配置檔案 記憶體優化Eclipse記憶體優化
- 記憶體優化策略記憶體優化
- UIImage 記憶體優化UI記憶體優化
- PHP記憶體優化PHP記憶體優化
- 記憶體優化技巧記憶體優化
- Android效能優化篇之記憶體優化--記憶體洩漏Android優化記憶體
- linux的hugepage的配置-優化oracle記憶體 .Linux優化Oracle記憶體
- 關於redis記憶體分析,記憶體優化Redis記憶體優化
- Android效能優化 - 記憶體優化Android優化記憶體
- 從記憶體洩露、記憶體溢位和堆外記憶體,JVM優化引數配置引數記憶體洩露記憶體溢位JVM優化
- 記憶體優化相關記憶體優化
- Android記憶體優化Android記憶體優化
- Python 記憶體優化Python記憶體優化
- Android 記憶體優化Android記憶體優化
- app 的記憶體優化APP記憶體優化
- 1.記憶體優化(一)記憶體洩漏記憶體優化
- Android記憶體優化之記憶體快取Android記憶體優化快取
- 實踐App記憶體優化:如何有序地做記憶體分析與優化APP記憶體優化
- Android 效能優化之記憶體優化Android優化記憶體
- Android記憶體優化(一):Java記憶體區域Android記憶體優化Java
- LayaAir引擎學習日誌14----LayaAir記憶體優化的問題AI記憶體優化
- Android 效能優化之記憶體洩漏檢測以及記憶體優化(上)Android優化記憶體
- Android 效能優化之記憶體洩漏檢測以及記憶體優化(下)Android優化記憶體
- Android 效能優化之記憶體洩漏檢測以及記憶體優化(中)Android優化記憶體
- iOS圖片記憶體優化iOS記憶體優化
- App記憶體優化-實踐APP記憶體優化
- Android Note - 記憶體優化Android記憶體優化
- Redis-記憶體優化(一)Redis記憶體優化
- JNI記憶體管理及優化記憶體優化
- android 記憶體優化篇Android記憶體優化
- 記憶體配置的最佳化記憶體
- hugepages優化記憶體原理與優點優化記憶體
- Android記憶體優化之圖片優化Android記憶體優化
- NginxPHP配置與優化(學習筆記二十二)NginxPHP優化筆記
- Spark學習——記憶體管理Spark記憶體