今天学习内存架构产生一个疑问,看手册上说 system_memory 这个参数默认值为 30G,这部分内存是预留给租户共享资源和功能的。如果在服务器上内存本身只有 30G,那 OB 是如何控制资源占用的?是否还有另外一个百分比的参数参与自动调整?
如果是这种情况,OB启动会失败!
阿福老师没有说清楚这个30G内存是计算机的内存,还是OB将要占用的内存。也没有说是商业版 还是开源版?
如果OB启动至少要占用30G内存,30G内存的计算机启动后,OB是无法启动的!OB 也没有办法资源占用的。
结论就是调整默认值大小。并且是调小
服务器上内存本身只有 30G,那么操作系统会占用一部分,在不调整
system_memory
参数来启动,就会启动失败。
系统内部可使用的内存上限可通过 ystem_memory
参数来配置,该参数是对系统内部使用内存的预估,实际上限制的是租户可使用的内存上限,即
memory_limit - system_memory。例如,假设 OceanBase 数据库内存上限为 80 GB,system_memory 的值为 20 GB,那么可用于租户分配的内存就是剩下的 60 GB。
system_memory
用于设置系统预留的内存容量。默认值30G
取值范围[0M, +∞)
不会失败
不会失败的,失败我也不会问这个问题呀,看我的配置文件,我的虚拟机每个机器只有12GB内存
oceanbase-ce: servers: - name: server1 ip: 10.211.55.74 - name: server2 ip: 10.211.55.75 - name: server3 ip: 10.211.55.76 global: home_path: /home/chris/observer data_dir: /data redo_dir: /data/redo devname: eth0 mysql_port: 2881 rpc_port: 2882 zone: zone1 datafile_size: 30G appname: obcluster root_password: observer proxyro_password: obproxy server1: zone: zone1 server2: zone: zone2 server3: zone: zone3 obproxy-ce: depends: - oceanbase-ce servers: - 10.211.55.73 global: home_path: /home/chris/obproxy skip_proxy_sys_private_check: true enable_strict_kernel_release: false listen_port: 2883 prometheus_listen_port: 2884 cluster_name: obcluster obproxy_sys_password: obproxy-sys observer_sys_password: obproxy
部署采用的是autodeploy的方式
obd yaml文件里如果没有指定,autodeploy的时候会自动计算(调整)比如memory_limit/system_memory。
2 个赞
感谢老师,解决了我的疑惑
autodeploy会根据机器可用资源自动计算关键配置项如memory_limit,system_memory等;