Top 10 ABAP dump - első rész
Egy programozó előbb vagy utóbb a munkája során találkozni fog szintaktikai vagy logikai hibák mellett dump-al is. Mik az ABAP dump-ok? Ezek a hibaüzenetek sok esetben segítenek megérteni, hogy a rendszernek szüksége van még valamely javításra. Nem arra kell gondolnunk, hogy lemaradt egy pontosvessző valamely sor végéről vagy, hogy rosszak volnának a hivatkozásaink. A probléma okát az SAP mélyén kell keresnünk. Viszont fontos megjegyeznem, hogy a megoldások problémánként különbözőek lehetnek. A megoldásban az SAP kontaktorok mellett segítenek egy kis kitartással az SAP Note-k is.Cikksorozatomban a 10 leggyakoribb ABAP dump-t szeretném bemutatni. Mivel az egyes dump-k több SAP Note-ból állnak, ezért három részre bontottam az anyagot.
A toplista első dump-ja a STORAGE_PARAMETERS_WRONG_SET. A problémák főként a 32 bites operációs rendszer általános korlátozásaihoz kapcsolódnak. A folyamatok az operációs rendszerben futnak szoros összefüggésekben egymással és maximum 4 GB-t tudnak címezni. A heap memory paramétereivel: abap/heap_area_dia, abap/heap_area_nondia, abap/heap_area_total tudjuk a címzést vezérelni.
A dump javításhoz több lehetőségeink vannak:
a) használjuk a boot.ini fájlban a /3GB kapcsolót
SAP Note 552209 - Maximum memory utilization for processes on NT/Win2000
Ha futás közben hibát észlelünk, akkor nézzük meg, hogy milyen szelekciós kritériumokat tudunk használni. Mivel ezek rövidebb futásidőt eredményezhetnek.
Ha korlátozva van az adatkészlet, akkor a meglévő címtartomány elegendő lesz a program befejezéséhez anélkül, hogy további módosításokat kellene végezni a rendszerben.
A paraméterváltozás után lehetséges, hogy a rendelkezésre álló címtartomány továbbra is elégtelen lesz. Ha ez a helyzet áll elő, akkor nem sikerült a szelekciós kritériumokkal korlátozni a riportot vagy a programot. Az SAP azt az üzenetet fogja adni, hogy analizáljuk részletesen a program forráskódját.
Az R/3 kezdte el használni a beállítások specifikációit, ami már a memória-intenzív programokat is végre tudja hajtani. Ez azt jelenti, hogy tesztelnünk kell a beállításokat hétvégenként vagy esténként.
Lépések:
- készítsünk egy másolatot a meglévő profilról
- adjuk hozzá vagy változtassuk meg a paramétereket a következők alapján:
- abap_buffersize = 100000
- rdisp_ROLL_SHM = 625
- rdisp_PG_SHM = 0
- mentsük el a profilt és indítsuk újra az SAP-t
- indítsuk el a kívánt riportot vagy programot
Ha az NT Enterprise Edition vagy Windows 2000 Advanced szervert használjuk és a /3GB opció is működik (SAP Note 110172), akkor ezek a beállítások lehetővé teszik egy folyamat számára, hogy 2,5 GB memóriát foglaljon le magának a memóriatárból. Ha ezen, paraméterek beállításit használja az NT és 2000 szerver, akkor körülbelül 1,5 GB szabad memória áll rendelkezésre. Ha sikerült végrehajtani a programot a fenti beállításokkal, akkor a következő kérdéseket kellene figyelembe venni: Milyen gyakran fut a program? Naponta? Hetente?
A következő tényezők függvényében kell döntenünk:
- ha az NT vagy 2000 server még nincs telepítve, akkor telepítsem-e?
- elég-e az újonnan létrehozott profillal elindítani a rendszert?
- létre kell-e hoznom egy másik esetben egy már meglévő másik serveren, ami ezután kezdte el használni ezt a profilt, és amely speciálisan konfigurált módon hajtja végre a memória intenzív programokat?
Ez esetben a profil nem tagja a bejelentkezési csoportoknak, hanem csak arra szolgál, hogy a memória-intenzív programokat hajtsa végre.
SAP Note 110172 - Windows: Transactions with large memory requirements
Egy munkafolyamat számára a 2 GB címzési memória 32 bites Windows szerver (NT4, Windows 2000 és 2003 szerver) alatt nem tudja kielégíteni a programok óriási memóriaigényét. Korában a 32 bites Windowsban a 2 GB címzési memóriából 1,2-1,5 GB memória állt rendelkezésre a programok számára. A maradék címzési memóriát a Shared Memory buffer használta, a program adatok és a betöltött DLL-k erősen töredezettek voltak. (Osztott memória (Shared/Common Memory): minden korszerű rendszer külön virtuális címtartományba helyezi az egyes folyamatokat (MVS), hogy azok ne zavarhassák egymást, viszont külön eszközt biztosít arra, hogy a folyamatok, ha akarnak, használhassanak megosztott memóriatartományokat.)
A címtartomány növeléséhez vagy optimalizálásához a következő lépésekre van szükség:
- a Windows szerver operációs rendszer család, ahol minden folyamat egy speciális boot opcióval rendelkező 3 GB-s címtartomány. A programok, amik ezt a 3 GB címtartományt használják egy flag-el jelölődnek meg a program fej részében. Vagy telepítsük újra a Windows-t, vagy pedig a meglévőt kell összehangolni a Microsoft leírásnak megfelelően.
- aktiváljuk a 3 GB-s boot opciót a Microsoft 283037 leírásnak megfelelően (http://support.microsoft.com/kb/283037/)
- importáljuk a jelenleg megfelelő kernel patch-t az SAP-hoz a következő bejegyzéseknek megfelelően:
Kernel 3.x:
- profil paraméter beállítás: abap/memalloc = REL4. A háttérben futó folyamat először a ROLL-hoz foglalja a ztta/roll_area-t, majd a Extended Memory-hoz a ztta/roll_extension-t és végül a Heap Memory-hoz a ABAP/heap_area_nondia-t. Ezzel az opcióval a munkafolyamat címtartományaiban a memória területek optimalizálva lettek.
- profil paraméter beállítás: abap/heap_area_nondia = 2000000 (2GB). A háttérben futó program 2 GB-t tud lefoglalni a Heap Memory-ból.
- profil paraméter beállítás: ztta/roll_extension = 2000000000 (2 GB). Ezáltal az Extended Memory kvótája törölve lett. Következésképpen a parameter em/address_space_MB (standard: 512 MB) limitálva lett az Extended Memory-ban. Ez a paraméter határozza meg a fenntartott memória cím területét az Extended Memory foglalás munkafolyamatában.
- a háttér folyamat az abap/memalloc=REL4 paraméterrel először 512 MB Extended Memory-t foglalja le, mielőtt megváltozna a Heap Memory. Ennek eredményeként, az Extended Memory jobban lett feltöltve és ezért kell méretezni elég nagyra ahhoz, hogy a memória igénye elég nagy legyen. Azt ajánlom, hogy az em/initial_size_MB (total size EM) = 1.5... kétszerese vagy többszöröse az alap fizikai memóriának.
Kernel 4.0 és 4.5A:
- a nulla adminisztrációs memória kezelése aktív. A memória menedzsment értéke már előre standardra van állítva, ami annyit jelent, hogy nem kell beállítani a profil paramétereket. A háttér folyamat kiosztási sorrendje is be van állítva.
- profil paraméter beállítás: abap/memalloc = REL46D. Ez aktiválja az új, hatékonyabb SAP Heap Memory kezelést, amely a 4.6A-s verzióban standardként szerepel.
Kernel 4.6:
- ugyan úgy, mint a 4.6D-nél nincs szükség további lépésekre.
SAP Note 313347 - Windows editions and memory support
Hardver tanácsok SAP bevezetéshez:
- szorosan együttműködve a hardver partnerrel határozzuk meg, hogy hány hardverre lesz szükség, hány processzorra, mennyi fő memóriára és mekkora lemezterület kell az SAP optimális futásához
- SAP Quick Sizer Tool-t használjuk az SAP követelmények kiszámításához
További segítségeket találunk:
- http://service.sap.com/sizing
- http://service.sap.com/instguides
Általánosságban azt mondhatjuk, hogy a Windows szervernek mindenképp 64 bites változatot kérjük.
Mi a különbség az egyes Windows kiadások között?
Van néhány jelentős különbség az Enterprise Edition és a Standard Edition között.
- az Enterprise Edition további SMP (http://hu.wikipedia.org/wiki/Unicode_karakterek_elhelyezked) támogatásokat kínál, és nagy teljesítményű számítógépeken is használható (MS Cluster Service: http://hu.wikipedia.org/wiki/Microsoft_Exchange_Server)
- Windows szerver 2003 Edition-ről információk: http://www.microsoft.com/windowsserver2003/evaluation/features/comparefeatures.mspx
- Windows szerver 2000-ről információk: http://www.microsoft.com/windows2000
Mit jelent a /3GB opció?
Gyakran az emberek azt gondolják, hogy a /3GB opció bekapcsolása azt jelenti, hogy 3 GB vagy több memóriát tudunk címezni, de valójában ez nem így van. A 2GB memóriát növeljük meg háromra. Minden folyamat a saját címtartományában fut és maximum 2 vagy 3 GB memóriát képes címezni. Ha a folyamat eléri ezt a határt, akkor mindentől függetlenül a foglalt memória méretét lezárja. A hiba a 32 bites architektúrában rejlik. Aktiváljuk a /3GB opciót a boot.ini fájlban, amely kiterjeszti egy folyamat korlátozott címtartományát 3 GB-ra. Ezen funkció maximum 16 GB-t main memóriát támogat. Az aktiváláshoz segítséget találunk az MS Knowledge Base cikkekben:
- http://support.microsoft.com/kb/291988/hu
- http://support.microsoft.com/kb/283037/hu
Egy SAP rendszer képes 4 GB-nál nagyobb fizikai memóriát kezelni?
A válasz igen, képes. Az SAP több különálló munkafolyamatot is tartalmaz. Minden egyes munkafolyamatnak 2-3 GB virtuális memóriája van. A memória egy része meg van osztva (osztott memória), ezért csak egyszer létezik a fizikai memóriában. A megosztott és nem megosztott memória ezért lehet több mint 4 GB-t.
Mennyibe kerül a Windows memória támogatása?
Az alábbi táblázatban láthatjuk a main memória által támogatott szervereket, valamit a processzorok számát:
|
Windows szerver |
Támogatott main memória |
Processzorok száma |
|
Windows Server 2003 Standard Edition (32-Bit) |
4 GB |
4 |
|
Windows Server 2003 Standard Edition (64-Bit) |
32 GB |
4 |
|
Windows Server 2003 Enterprise Edition (32-Bit) |
64 GB* |
8 |
|
Windows Server 2003 Enterprise Edition (64-Bit) |
1 TB |
8 |
|
Windows Server 2003 DataCenter Edition |
64 GB* |
32 |
|
Windows Server 2003 Datacenter (64-Bit) |
1 TB |
64 |
|
Windows 2000 Standard Server ** |
4 GB |
4 |
|
Windows 2000 Advanced Server |
8 GB |
8 |
|
Windows 2000 Datacenter Server |
32 GB* |
32 |
*: a /3GB funkció használat maximum 16 GB memóriát támogat
**: Microsoft nem támogatja a /3GB funkciót
b) a másik út a probléma kivédéséhez az volna, hogy próbáljunk meg több kritériumot megadni a riportban/programban/tranzakcióban, aminek eredményként kevesebb belépésre lesz szükség az adatbázisodba vagy a bufferbe. Ha ezt az utat választjuk, akkor a rendszernek nem lesz szüksége sok forrásra a tranzakció futtatáshoz.
c) a memória csökkenést vezérlő paraméterek: rdisp/ROLL_SHM, rdisp/PG_SHM
d) migráljuk a rendszerünket 64 bitesre (SAP Note 931024)
SAP Note 931024 - FAQ: 64-bit platforms for Windows
Az SAP jelenleg milyen 64 bites Windows platformokat támogat?
Az SAP a következő Windows platformokat támogatja:
- x64 (x86_64 vagy AMD64 néven is ismert): ez az AMD-nek egy 64 bites mikroprocesszoros architektúrája. Később az Intel is bemutatott egy kompatibilis architektúrát EM64T néven.
- IA64 (Intel 64 bites architektúra): ez az Intel-nek és Hewlett-Packard egy 64 bites mikroprocesszoros architektúrája (Itanium, Itanium 2).
Mik volnának a platformok közötti különbségek?
Az x64 a hagyományos x32 architektúrát bírálja felül. Az x64 alatt a teljes 32 bites programok mellett 64 bites teljes programok is futtathatók. Az x64 bites standard architektúra lesz a jövő a nagyteljesítményű szerverek számára.
Másik oldalról viszont az IA64-t úgy tervezték, hogy a HP PA-Risk és Intel x86 32 bit-nek legyen a következő generációja. Az EPIC architektúra rakta le az ütemezett logikát a fordítóprogramokhoz. Ahelyett, hogy a logikai chip tartalmazna több párhuzamos integer-t, float egységet és több regisztert. Ennek nagy hasznát veszik a tudományos számítások és az építészet.
További információkat olvashatunk a következő linken: http://www.sap.com/benchmark
Mik volnának a 64 bites platform előnyei a 32 bitessel szemben?
A 32 bites platformnak egy folyamata nem tud 3 GB-nál nagyobb memóriát címezni, még akkor sem, ha több fizikai memória áll rendelkezésre. A növekvő adatbázis méretek és az alkalmazások összetettsége egyre inkább korlátozza a felhasználókat. Ezek ahhoz vezetnek, hogy bizonyos alkalmazások egyszerűen nem tudnak befejeződni. Egy ABAP alkalmazás szerver a következő dump-t adhatja: 'TSV_TNEW_PAGE_ALLOC_FAILED' vagy 'STORAGE_PARAMETERS_WRONG_SET'. Továbbá az adatbázis oldalon is hasonló problémák jelentkezhetnek.
A 64 bites platform egy folyamata gyakorlatilag korlátlan mennyiségű memóriát képes címezni, elkerülve így a fent említett problémákat. További előny, hogy a memória kezelés konfigurációja egyszerűbb, alapvetően tudjuk használni a 64 bites rendszer memóriával kapcsolatos paramétereit. A 32 bites platform puffer kiigazítása nehézzé válik, ha a rendelkezésre álló teljes címtartományt akarjuk használni. A /3GB funkció az operációs rendszernek csak 1 GB memóriát ad, és ez gyakran probléma akkor, mikor a rendszernek több kell. Ez gyakran megtörtént a több mint 12 GB memóriával rendelkező rendszereknél.
A jövőben az SAP ezeket a platformokat, hogy fogja támogatni?
Az SAP támogatni fogja az IA64 és x64 rendszereket egészen mindaddig, amíg a Microsoft és az Intel támogatja az SAP-t.
A következő linken többet is tudunk olvasni a termékrendelkezésre álló mátrixhoz (PAM) mely operációs rendszerek, adatbázisok és SAP alkalmazások választhatók: http://service.sap.com/pam.
Mikortól nem lesznek támogatottak a 32 bites platformok?
Az SAP 6.20-s verzióját ne használjuk 32 bites platformon. További információk itt találhatóak: http://service.sap.com/pam.
SAP Note 996600 - 32 Bit platforms not recommended for productive NW2004s apps
A tranzakció véget ért mivel a memória kiosztás hibás. Az alkalmazás szerver indítása rossz volt, mivel az összes buffer foglalás meghaladta a 32 bites határt. Általános szabályként lehet feltételezni, hogy az új hozzáadott funkcionalitások az alkalmazásokban több erőforrást igényelnek.
Amíg a 32 bites 4.6-s SAP verzió címtartománya elegendő volt néhány ritka esetet kivéve az összes alkalmazás számára, ahol elég nagy belső alkalmazásokat hoztunk létre. Addig a NetWeaver 2004-nek, a 7.00-s megfelelő kernellel a funkcionalitások változásainak a növekedése miatt nagyobb címtartományra volt szüksége:
- az Unicode-k általános elérhetősége megduplázta a minden string méretét
- az Internet Transaction Server beköltözött az appserver-be
- a VM Container a Java VM-t beágyazta az ABAP-ba
Ebben a dump-ban megtapasztalhattuk azt, hogy mennyire fontos kérdés a megfelelő bites Windows szerverválasztás. A következő részben a memóriakezelésről fogok írni. Bízom benne, hogy hasznát veszitek a cikksorozatomnak és remélem legközelebb is fogunk találkozni.
Nincs hozzászólása.
A téma megvitatása a fórumon. (0 hozzászólás)


