如果你的SAP跑在Windows环境下,SAP是建议“零内存
管理”的,我在AIX,Solaris和Linux下都跑过SAP,控制ST02的参数还是需要手工调的。如果你双
击带红的行,然后选“Current Parameter”键,SAP会告诉你哪个参数来调这一行缓冲区。我个人
以为,如果想成为SAP Basis性能调试高手,你必须钻进ST02的细节中去了解每一行都是干什么
的,受什么影响,又如何影响性能。SAP在线帮助“SAP Memory Management”是我研究这一领域的
基础文献,读了不下20遍,等你吃透了,你就可以和SAP争论他的GoLive Check报告了。象你这 ST02的状态,我认为EWA或者GoLive报告应该能给你正确的建议的。
分析一下:
首先,你需要查每个Buffer的历史,来看到底是空间不够,还是FreeEntry不够。
1. Field Definitiion
我估计是空间不足,参数rsdb/ntab/ftabsize现在是60000,建议改到80000或100000
2. Initial records
通常情况下是由于FreeDictionaryEntry不足,你现在的7500是由rsdb/ntab
/entrycount=30000决定的(除四),建议你把这参数调到60000
3. program
600MB的ABAP程序缓冲对于ECC系统来说有些小了,建议把abap/buffersize从600000调整到
1024000(1GB)。
4. CUA
建议把rsdb/cua/buffersize调整到20000
5. Screen
建议把zcsa/presentation_buffer_area从20000000调整到30000000,sap/bufdir_entries从
10000调整到5000(原设定有些大,不盖也无所谓)
6. Generic Key
建议把zcsa/table_buffer_area从100000000调整到200000000,zcsa/db_max_buftab从10000
调整到20000。这对参数对你系统性能的影响挺大的,尽量不要让它红。
7. Export/import
建议把rsdb/obj/buffersize从40000调整到100000。
除此之外,我认为SAP的em/initial_size_MB=7189是合理的,只不过不是用来解决你的红色的问
题罢了。如果你的机器内存允许,我认为应当按建议设置。当然你还需要调整 ztta_roll_extension* 和 abap/heap_area*参数来控制每一Work Process所能消耗的内存,既要让它跑,又要防止它把内存都吃了,需要根据你的ECC Workload的特点来调整。
最后有两点提醒:
1. 改完参数后,一定要到OS上用sappfpar check pf=来检查一下是否有错,否则系统
是起不来的。
2. 如果又设置了大的Oracle SGA/PGA,或者有超过200的用户要同时使用,你的系统
就会大量使用虚拟内存,OS swaping是很毁系统性能的,你可能需要更多的内存。