[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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- HBase記憶體配置及JVM優化記憶體JVM優化
- Android效能優化篇之記憶體優化--記憶體洩漏Android優化記憶體
- Android記憶體優化Android記憶體優化
- 關於redis記憶體分析,記憶體優化Redis記憶體優化
- 從記憶體洩露、記憶體溢位和堆外記憶體,JVM優化引數配置引數記憶體洩露記憶體溢位JVM優化
- Android 效能優化之記憶體優化Android優化記憶體
- 記憶體優化相關記憶體優化
- Android Note - 記憶體優化Android記憶體優化
- 1.記憶體優化(一)記憶體洩漏記憶體優化
- 實踐App記憶體優化:如何有序地做記憶體分析與優化APP記憶體優化
- Android記憶體優化之圖片優化Android記憶體優化
- iOS圖片記憶體優化iOS記憶體優化
- App記憶體優化-實踐APP記憶體優化
- Redis-記憶體優化(一)Redis記憶體優化
- JNI記憶體管理及優化記憶體優化
- mariadb 記憶體佔用優化記憶體優化
- 淺談Android記憶體優化Android記憶體優化
- Android記憶體優化全解析Android記憶體優化
- NginxPHP配置與優化(學習筆記二十二)NginxPHP優化筆記
- 學習 CLR 原始碼:連續記憶體塊資料操作的效能優化原始碼記憶體優化
- win10怎麼優化記憶體 win10系統記憶體優化的方法Win10優化記憶體
- Spark學習——記憶體管理Spark記憶體
- 記憶體分配策略學習記憶體
- 2.記憶體優化(二)優化分析記憶體優化
- Redis 記憶體優化神技,小記憶體儲存大資料Redis記憶體優化大資料
- Linux 效能優化之 記憶體 篇Linux優化記憶體
- iOS 使用Instruments優化記憶體效能iOS優化記憶體
- MongoDB記憶體使用分析和優化MongoDB記憶體優化
- SAP專家培訓之NetweaverABAP記憶體管理和記憶體調優最佳實踐記憶體
- win10虛擬記憶體如何優化_win10怎麼優化虛擬記憶體Win10記憶體優化
- 異構記憶體及其在機器學習系統的應用與優化記憶體機器學習優化
- SAP專家培訓之Netweaver ABAP記憶體管理和記憶體調優最佳實踐記憶體
- win10系統如何優化記憶體_win10優化記憶體佔用率怎麼操作Win10優化記憶體
- Java記憶體區域學習Java記憶體
- android記憶體管理機制與優化Android記憶體優化
- android效能評測與優化-記憶體Android優化記憶體
- 讀書筆記2-記憶體優化篇筆記記憶體優化
- 斜率優化學習筆記優化筆記