系统优化2


+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
张贺,多年互联网行业工作经验,担任过网络工程师、系统集成工程师、LINUX系统运维工程师
个人网站:www.zhanghehe.cn
笔者微信:zhanghe15069028807,现居济南历下区
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-


系统优化

优先级调优

进程调优首先关注的第一个就是优先级。

进程的优先级为0—139,其中1—99是实时优先级,越大优先级越高;而100—139是动态优先级,是我们可以自由调节的,越小越高。

进程调试算法

  • sched_fifo算法,先进先出,内核控制的我们无法控制,调度的对象是0—99这些优先级。通过chrt –f [1-99] /path/to/program arguments使用

  • sched_rr算法,轮询算法,调度的对象是0—99这些优先级,chrt –r [1-99] /path/to/program arguments使用

  • sched_normal,普通算法,调度的对象是100—139些优先级,可以通过nice和renice自由调节。

应用场景:

  • 在生产玩意应该将sshd的优先级提高,防止ddos攻击时自由无法连接进入服务器。

  • 在web集群服务器当中,应该把nginx或apache这样的web应用的优先级调高一些。

内存调优

内存调优的目的是让CPU控制更多的内存页面,但受限于MMU(内存管理单元)的大小,默认每个内存页是4k大小,每一条MMU里面的记录也只能映射一个页面,我们可以通过启动内存大页,使得每一条mmu里面的记录不仅仅可以映射为4k,而增大为2M或1G,我们使用的就是2M,只要自己的内存还没超过1T大小,就不要使用1G大小的内存大页。

应用场景:

重型应用,比如java项目,数据库可以启用内存大页,我们在使用内存大页时可以限定内存大页的数量,并不用让所有的内存映射都搞成内存大页。

swap限制

在内存没有用光之前尽量不要使用swap分区,通过overcommit_memory内核来设置,

overcommit_memory取值又三种分别为0, 1, 2

  1. overcommit_memory=0, 表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程,内核的判断可能并不精确。

  2. overcommit_memory=1, 表示内核允许分配所有的物理内存,而不管当前的内存状态如何,尽量使用内存而不用swap,我们在调节的时候尽量选择这个。

  3. overcommit_memory=2, 表示内核允许分配超过所有物理内存和交换空间总和的内存

配置:
vim /etc/sysctl.conf
vm. overcommit_memory = 1
vm.nr_hugepages = 10  内存大页的数量
sysctl –p
//验证
cat /pro/meminfo
HugePages_Total:内存大页的个数,应该和上述的内存大页数量一样。

消息队列

这里面的消息队列指的是本机进行与进程之间的消息队列。

  • msgmax:定义单个消息的最大值,默认是65536的字节。

  • msgmnb:就是一个队列最大可以有多大,默认是65535,也就是这一个队列当中只能存放一个最大的消息,但一般消息没有那么大。

  • msgmin:内核当中最多可以有多少个队列,默认是1736个字节,oracle是以多进程方式运行,所以如果服务器运行的是oracl的话,可以把这个调整高一些。

共享内存

shmall:系统规定的是最大单个内存片段,64位系统是4294967296字节

shmax:,共享内存最大能有多大,默认是68719476736字节

shmmni:内核允许有多少个内存片段,默认是4096字节

在/proc/sys/kernel里面可做修改

文件系统

file-max:打开的文件数量,默认是1024

aio-max-nr:指定异步IO时当中允许的最大事件数,默认是65535,nginx应用可以调整到大一些。

OOM优化

/proc/pid/oom_adj

oom_adj:当oom时优先干掉优先级,范围是-16到15之间,越大被干掉的可能性就越大,我们可以把服务器上运行的关键业务的值调低一点,如果设置成-17是发生oom永远也不干掉自己。

内存下刷频率

dirty_ration:当单个进程的脏数据达到自己进程总数的百分比之后才下恻,启动pbflush,默认是百分之二十,可以调整到百分之四十。

[root@kk ~]# cat /proc/sys/vm/dirty_ratio 
30 默认是三十
dirty_background_ratio当所有进程达到内存总数的百分比之后才下刷,默认是10
[root@kk ~]# cat /proc/sys/vm/dirty_background_ratio 
10  可调大一点,由其是有备用电源的情况下

这里面的参数看自己业务的情况,不能盲目!

cat /proc/slabinfo
drop-_cache:什么时候清除cache
  • 1是内存缓存:一般释放这一个就可以了。

  • 2是属性缓存(slab缓存),不要不要搞这个,要不要重装查找。

  • 3是全部缓存

以上调优参数想要永久生效的话就放置到/etc/sysctl.conf文件当中

posted @ 2020-04-14 18:50  张贺贺呀  阅读(217)  评论(0编辑  收藏  举报