随同 admin() 或 task() 函数,使用 scheduler lmm enable 参数来启动自动的低内存管理并更新低内存阈值设置。
元素 | 描述 | 关键考虑 |
---|---|---|
start_threshold_size | 您想要数据库服务器保持的空闲内存量。如果内存量少于 start_threshold_size,则服务器自动地释放内存并终止应用。 | 该值可表示为 SHMTOTAL 配置参数值的百分率或特定数量。如果该值小于 50,则认为是百分率。输入参数的结果值必须大于 5
MB 且小于 95 MB。
缺省值为 5 MB。 在 LMM START THRESHOLD 与 LMM STOP THRESHOLD 之间必须至少差 5 MB |
stop_threshold_size | 在服务器停止自动释放内存和终止应用之前,您想要数据库服务器拥有的空闲内存量。 | 该值可表示为 SHMTOTAL 配置参数值的百分率或特定数量。如果该值小于 50,则认为是百分率。输入参数的结果值必须大于 10 MB 且小于 100 MB。该值还必须至少比
LMM START THRESHOLD 多 5 MB。
缺省值为 10 MB。 |
minimum_amount_of_time | 定义会话为空闲的时间量,以秒为单位 | 该值必须在 1 与 86400 之间。
缺省值为 300 秒。 |
当低内存管理操作完成时,通过将 VP_MEMORY_CACHE 配置参数设置回其原始值,低内存管理器返回到监视模式并恢复数据库服务器的内存配置。
数据库服务器在 ph_threshold 表中存储自动低内存管理设置。
您可用 onstat -g lmm 命令查看低内存管理设置和近期的活动。
下列示例指定当数据库服务器有 10 MB 或更少的空闲内存时,服务器会启动自动低内存管理停止应用并释放内存。该示例还指定如果会话尚未运行 300 秒则认为会话空闲,该示例指定当服务器有 20 MB 或更多空闲内存时会停止自动低内存管理。
EXECUTE FUNCTION task("scheduler lmm enable", "LMM START THRESHOLD", "10MB", "LMM STOP THRESHOLD", "20MB", "LMM IDLE TIME", "300");
假定您设置 SHMTOTAL 配置参数为 1000000(1000 MB 或 1 GB),LMM START THRESHOLD 为 2,且 LMM STOP THRESHOLD 为 3。因为任何小于 50 的值都是 SHMTOTAL 值的百分率,所以实际的 LMM START THRESHOLD 为 20000(20 MB)且实际的 LMM STOP THRESHOLD 为 30000(30 MB)。
当剩余空闲内存为 20 MB 或更少时,数据库服务器开始管理低内存,且当空闲内存量为 30 MB 或更多时,停止管理内存。
假定您决定更改 SHMTOTAL 配置参数的值,因为您知道现在不需要这么多内存,您想要让操作系统使用内存。请您设置 SHMTOTAL 的值为 250000(250 MB)。这更改实际的 LMM START THRESHOLD 为 5000(5 MB),实际的 LMM STOP THRESHOLD 为 7500(7.5 MB)。LMM STOP THRESHOLD 现在无效,因为 LMM START THRESHOLD 与 LMM STOP THRESHOLD 值之间必须至少差 5 MB。LMM STOP THRESHOLD 值还必须至少为 10 MB。
对于您的系统,你可能已经决定差 10 MB 是正确的数量。但是差 5 MB,数据库服务器可能会在低内存管理进程上花费太多的时间,这可能导致性能问题。