2009年2月25日星期三

Sybase ASE内存分配(1)

今天同事为ASE分配内存后出现ASE服务无法启动的情况,观察ASE的errorlog发现报“os_create_region: Failed to get virtual memory information.”,确定是因为内存配置不合理造成的。通过google发现解决问题办法,如下:
修改$servername$.cfg
[Named Cache:default data cache]

cache size = DEFAULT

cache status = default data cache

cache replacement policy = DEFAULT

local cache partition number = D
EFAULT
修改cache size = DEFAULT

然后重新配置

没有修改ASE启动时的默认配置文件$servername$.cfg,而是将修改之前的ASE配置文件备份(如$servername$.033之类)修改名称替换掉当前不正确的cfg配置文件,重新启动后ASE恢复正常。

思考ASE启动失败的原因,在Sybase的《系统管理员教程》中,《14. 配置内存》中讲到如果ASE不能得到配置的内存,就可能无法启动。
那么如何正确的分配内存呢?
1. 确定计算机总的物流内存;
2. 从总的物流内存中减去操作系统和其他必备服务、软件所占用的内存;
3. 减去backup server 、Monitor Server和其他与ASE Server相关软件所耗用的内存;
4. 如果计算机非ASE专用,减去其他系统所需内存;比如X-window等客户应用程序;
5. 减去分配给additional network memory配置参数的任何内存;
剩下的内存即是ASE可用的总内存,可参考此值设置total memory的值。
我认为一个比较简便的方法是不启动ASE,而将Backup Server和Monitor Server以及其他必备服务、程序启动起来,观察计算机所剩内存,由此确定Total Memory。

当遇到以下情况时应该考虑修改total memory值:
1. 计算机RAM数量改变时;
2. 当计算机使用模式改变时;(不太明白?)
3. 如果为ASE的 addtional network memory分配了内存。

下图是Sybase ASE内存分配示意图。





















其中,过程高速缓存和数据高速缓存根据procedure cache percent进行分配。
在12.5版本中,sybase内存分配有所区别,请见图

没有评论:

发表评论