系统资源调优与内核参数配置

简介: 1.关注ulimit命令2.系统内核参数调优ip_conntrack_max参数swappiness参数

系统资源调优与内核参数配置

 

内容简介

.系统资源调优

1.关注ulimit命令

2.系统内核参数调优

ip_conntrack_max参数

swappiness参数

 

 

.系统资源调优

1.关注ulimit命令 可以设置系统资源

ulimit-n(最大打开文件数)

我们输入ulimit -a

image.png

它会把系统里面所有的资源信息都给列出来,这里面有

Core file size             (blocks,-c)  0

 

表示是否打开Core文件调试,这个主要针对我们程序C或者C++,如果调试问题,我们可以通过这个打开,通过Core文件调试他们的异常。


另外是关于数字文件,数字样式的大小,默认情况下我们都不做设置,保持文件大小。其中我们重点关注。

 

open files     (-n)  65535打开的最大文件数,通过这个命令我们也可以看到,打开最大文件数的方法就是-n,它的配置就是系统中的配置打开最大文件数,这个文件不是严格意义上的文件,在ulimit里面它的专业名词叫做文件句柄。


其实也就是说,一个进程可能会加载很多文件句柄。因此我们在查文件数也就是在ulimit里面查文件句柄的大小。

 

还有一个我们需要经常关注的就是最大用户数,这也是要重点关注的

max user processes      (-u)  7811

其他的一般出现问题的几率很低。

 

那么与ulimit-n相关的一个问题

常见案例日志:

java.net.SocketException: Too many open files这个报错是java用的一个报错,为什么在java应用里面会有这么多报错,就是因为java这个里面占用资源的方法和其他应用是不一样的。


一个java进程他其实是有多线程去运行的,那么每个线程会加载很多文件句柄,然后一个进程有很多个线程,一个线程又加载很多个文件,这样就会有很多很多文件句柄,因此java的应用我们会重点关注系统资源这个打开最大文件数文件数,这个问题是经常会发生的。出现这个问题是因为我们打开的系统文件数超出了限制。

 

那怎么样解决这个问题或者怎么样避免这个问题,其实也就是有几个配置文件需要修改。

 

相关配置文件:

/etc/security/limits.conf  主配置文件(centos5.xcentos6.x版本有)

/etc/security/limits.d/90-nproc.conf(centos6.x版本后新增的文件)

*(用户名)      soft(软限制)  nofile     65536 (打开最大文件数的大小)

*(用户名)      hard(硬限制)  nofile    65536

ulimit   -u(最大用户数)和系统相关

*(用户名)       soft  nproc   65536

root    soft   nproc    unlimited

如何修改打开的最大文件数?

通过

*      soft  nofile     65536

*      hard  nofile    65536 这两个参数加到/etc/security/limits.conf之后就可以了。

配置完成之后不会马上生效,一般是要退出去重新进来在生效

image.png

这是以生效的结果。

 

 

2.系统内核参数调优  

内核参数调优要综合各方面的知识去权衡,然后再根据我们的业务特点或环境综合做调试,没有固定不变的一个参数。

 

常见案例日志:

kernel: ip_conntrack: table full, dropping packet这个报错的原因就是由于系统参数有问题导致的。

 

那么具体和谁相关?

这个报错关注点就是ip_conntrack_max 参数,这个参数其实是内核参数。

这个参数在centos5.xcentos6.x,每个版本都是不一样的。


ip_conntrack_max参数

/proc/sys/net/ipv4/netfilter/ip_conntrack_max(路径)     或者

/proc/sys/net/ipv4/ip_conntrack_max(centos5.x)

/proc/sys/net/netfilter/nf_conntrack_max(centos6.x)

 

因为在ip_conntrack里面他其实是维护了一个访问,连接的一个链表,他一个链表他其实是有一个限制值的,比如一个进来是会有一个连接的链表,第二个进来的时候它会显示第二个,以此类推,他有很多个。


那么当这个连接的链表满了之后就会发生table full这个问题。知道了这个原理,解释这个问题就方便多了。


为了杜绝我们线上的服务器会发生类似问题,我们在服务器部署刚开始就把这个值调的大一点,是没有任何坏处的。


第一我们调大不会增加服务器的负载,所以我们把这个值调大就会避免很多问题。


它的参数值就是net.ipv4.netfilter.ip_conntrack_max

调参数在/etc/sysctl.conf加入

net.ipv4.netfilter.ip_conntrack_max= 655360(centos5.x)

net.nf_conntrack_max=100000(centos6.x)

 

swappiness 参数

 

表示使用swap的概率,此值越大,表示使用swap的概率越大。

 

推荐配置如下:

查看目前配置:cat/proc/sys/vm/swappiness

添加如下内容到/etc/sysctl.conf

vm.swappiness=10(这个值越小,使用率越低)

表示当内存使用率超过(100-10)90%时,才开始使用swap

 

我们线上web 服务器配置参考(每天3亿的量)

如下配置:

net ipv4.conf.lo.arp_ignore = 1

net.ipv4.conf.lo.arp_announce = 2

net.ipv4.conf.all.arp_ignore = 1

net.ipv4.conf.all.arp_announce = 2

net.ipv4.tcp_tw_reuse=1

net.ipv4.tcp_tw recycle=1

net.ipv4.tcp_fin_timeout =10

 

net.ipv4.tcp_max_syn_backlog=20000

net.core.netdev_max_backlog= 32768

net.core.somaxconn=32768

 

net.core.wmem_default =8388608

net.core.rmem_default = 8388608

net.core.rmem_max=16777216

net.core.wmem_max=16777216

 

net ipv4.tcp_timestamps = 0

net.ipv4.tcp_synack_retries = 2

net.ipv4.tcp_syn_retries =2

net ipv4.tcp_mem = 94500b00 915000000 927000000

net.ipv4.tcp_max_orphans=3276800

 

net.ipv4.ip_local_port_range = 1024  65535

net.ipv4.tcp_max_tw_buckets = 500000

net ipv4.tcp_keepalive_time=60

net.ipv4.tcp_keepalive_intvl= 15

net.ipv4.tcp_keepalive_probes = 5

net.nf_conntrack_max=2097152

相关文章
|
1月前
|
机器学习/深度学习 负载均衡 算法
深入探索Linux内核调度机制的优化策略###
本文旨在为读者揭开Linux操作系统中至关重要的一环——CPU调度机制的神秘面纱。通过深入浅出地解析其工作原理,并探讨一系列创新优化策略,本文不仅增强了技术爱好者的理论知识,更为系统管理员和软件开发者提供了实用的性能调优指南,旨在促进系统的高效运行与资源利用最大化。 ###
|
7月前
|
网络协议 安全 网络安全
系统内核相关参数调优(四)
【4月更文挑战第7天】SYN洪水攻击是一种利用TCP/IP协议的三次握手原理发起的DDoS攻击,攻击者发送大量伪造的SYN连接请求,导致服务器的连接队列被占满,无法处理正常用户的请求。
92 3
|
7月前
|
Linux
Linux操作系统调优相关工具(一)查看CPU负载相关工具 找出系统中使用CPU最多的进程?
Linux操作系统调优相关工具(一)查看CPU负载相关工具 找出系统中使用CPU最多的进程?
64 0
|
监控 Java Linux
大厂的OOM优化和监控方案(二)
大厂的OOM优化和监控方案(二)
大厂的OOM优化和监控方案(二)
|
网络安全
服务器初始化及内核调优脚本
服务器初始化及内核调优脚本
|
存储 缓存 固态存储
Linux性能调优之内存负载调优的一些笔记
+ 整理一些Linux内存调优的笔记,分享给小伙伴,博文没有涉及的Demo,理论方法偏多,可以用作内存调优入门 博文内容涉及: Linux内存管理的基本理论 寻找内存泄露的进程 内存交换空间调优 不同方式的内存回收 食用方式 需了解Linux基础知识 理解不足小伙伴帮忙指正
420 1
Linux性能调优之内存负载调优的一些笔记
|
安全 Java Linux
系统资源调优与内核参数配置| 学习笔记
快速学习系统资源调优与内核参数配置。
系统资源调优与内核参数配置| 学习笔记
|
缓存 Linux 应用服务中间件
系统性能调优之绑定cpu
系统性能调优之绑定cpu
系统性能调优之绑定cpu
|
存储 JSON 监控
大厂的OOM优化和监控方案(三)
大厂的OOM优化和监控方案(三)
大厂的OOM优化和监控方案(三)
|
监控 JavaScript Java
大厂的OOM优化和监控方案(一)
大厂的OOM优化和监控方案(一)
大厂的OOM优化和监控方案(一)

相关实验场景

更多