hbase服务器优化之硬件优化(用好操作系统)

  

下图是HBase官方文档上对操作系统环境的几点配置要求:
1,关闭透明大页
回声“从未”在/sys/kernel/mm/transparent_hugepage/
启用回声“从未”在/sys/kernel/mm/transparent_hugepage整理
///这一步是需要加入到开机自启动中,才可以关闭的
//THP是一种动态管理策略,会在运行期分配管理大页,因此会有一定程度的分配延时,这对追求响应延时的数据库系统来说不可接受.TPH关闭场景下(永远)HBase性能最优,比较稳定。而THP开启的场景(总是)、性能相比关闭的场景有30%左右的下降,而且曲线抖动很大。可见,HBase线上切记要关闭THP。
2,设置虚拟机。swappiness=0//这里要设置成0
//禁止交换(可选),内存页面交换在某些情况下会导致鼎晖性能下降
[root@cloudera01 parcels513。el7] #回声vm。swappiness=1在祝辞/etc/sysctl.参看
[root@cloudera01 parcels513。el7] # sysctl - p
vm。swappiness=1
//具体含义解释为:
swappiness,这个值用来定义内核使用交换的积极程度,值越高,内核就会积极地使用交换,值越低,就会降低对交换的使用积极性。该值取值范围在0 ~ 100,默认是60。
对于数据库来讲,交换是尽量需要避免的,所以需要将其设置为1。此处需要注意,设置为1并不代表不执行交换哦!
提示:
swappiness的值的大小对如何使用交换分区是有着很大的联系的。先前,人们建议把vm.swapiness设置为0,它意味着“除非发生内存益处,否则不要进行内存交换”。直到Linux内核3.5 -rcl版本发布,这个值的意义才发生了变化。这个变化被一直到其他的发行版本上,包括RedHat企业版内核2.6.32-303。在发生变化之后,0意味着“在任何情况下都不要发生交换”。所以现在建议把这个值设置为1. swappiness=100的时候表示积极的使用交换分区,并且把内存上的数据及时的搬运到交换空间里面。
3,设置虚拟机。min_free_kbytes至少1 gb(大内存系统8 gb)
//该文件表示强制Linux VM最低保留多少空闲内存(kb)。//代表系统所保留空闲内存的最低限
官方文档中要求min_free_kbytes不能小于1克(在大内存系统中设置8 g),就是不要轻易触发直接回收。
当可用内存低于这个参数时,系统开始回收缓存内存,以释放内存,直到可用内存大于这个值。
vm.min_free_kbytes=409600;
vm.vfs_cache_pressure=200;
VM。swappiness=40。
调整MIN_FREE_KBYTES的目的是保持物理内存有足够的空闲空间,防止突发性的换页。
swapiness缺省为60,减少swapiness会使系统尽快通过swapout不使用的进程资源来释放更多的物理内存。
vfs_cache_pressure的缺省值是100,加大这个参数设置了虚拟内存回收目录和索引节点缓冲的倾向,这个值越大,回收的倾向越严重。调整这3个参数的目的就是让操作系统在平时就尽快回收缓冲,释放物理内存,这样就可以避免突发性的大规模换页。
https://blog.csdn.net/hanyingzhong/article/details/71637391?utm_source=blogxgwz0
具体操作如下:
[root@NewCDH-0——141 ~ #猫/proc/sys/vm/min_free_kbytes//原来的
67584
[root@NewCDH-0——141 ~ #猫/proc/sys/vm/min_free_kbytes//设置成
1048576
[root@NewCDH-0——141 ~ #我/proc/sys/vm/| wc - l
42
4,禁用numa区与vm回收。zone_reclaim_mode=0
//官方建议把vm。zone_reclaim_mode=0设置成0
(root@NewCDH-0——141 vm) #猫/proc/sys/vm/zone_reclaim_mode//这个参数系统默认就是0
0
//乌玛是什么? NUMA和交换有什么关系? zone_reclaim_mode的具体意义?
zone_reclaim_mode,这个参数定义了NUMA架构下不同的内存回收策略,可以取值0/1/3/4,其中0表示在本地内存不够用的情况下可以去其他的内存区域分配内存;1表示在本地内存不够用的情况下本地先回收再分配;3表示本地回收尽可能先回收文件缓存对象;4表示本地回收优先使用交换回收匿名内存。

  

交换是干什么的?
交换意思是交换,顾名思义,当某进程向操作系统请求内存发现不足时,操作系统会把内存中暂时不用的数据交换出去,放在交换分区中,这个过程称为交换。当某进程又需要这些数据且操作系统发现还有空闲物理内存时,又会把交换分区中的数据交换回物理内存中,这个过程称为交换。
当然,交换大小是有上限的,一旦交换使用完,操作系统会触发OOM-Killer机制,把消耗内存最多的进程杀死掉以释放内存。
显然,互换机制的初衷是为了缓解物理内存用尽而选择直接粗暴伯父进程的尴尬。

  

数据库系统为什么嫌弃交换?
1,数据库系统一般都对响应延迟比较敏感,如果使用交换代替内存,数据库服务性能必然不可接受。

hbase服务器优化之硬件优化(用好操作系统)