系统资源调优与内核参数配置| 学习笔记

简介: 快速学习系统资源调优与内核参数配置。

开发者学堂课程【线上Linux服务器优化经验系统资源调优与内核参数配置】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/382/detail/4801


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

 

内容简介

.系统资源调优

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

相关文章
|
6月前
|
缓存 运维 Linux
Linux系统调优详解(一)——系统调优概述与Top命令详解
Linux系统调优详解(一)——系统调优概述与Top命令详解
122 4
|
6月前
|
运维 监控 Linux
提升系统稳定性:Linux内核参数调优实战
【5月更文挑战第1天】 在运维领域,保障服务器的高效稳定运行是核心任务之一。Linux操作系统因其开源、可靠和灵活的特点被广泛应用于服务器中。本文将深入探讨通过调整Linux内核参数来优化系统性能,提升服务器的稳定性和响应能力。文章首先介绍了内核参数调优的必要性和基本原则,然后详细阐述了调优过程中的关键步骤,包括如何监控当前系统状态,确定性能瓶颈,选择合适的参数进行调优,以及调优后的测试与验证。最后,文中提供了一些常见问题的解决策略和调优的最佳实践。
490 5
|
6月前
|
网络协议 安全 网络安全
系统内核相关参数调优(四)
【4月更文挑战第7天】SYN洪水攻击是一种利用TCP/IP协议的三次握手原理发起的DDoS攻击,攻击者发送大量伪造的SYN连接请求,导致服务器的连接队列被占满,无法处理正常用户的请求。
87 3
|
监控 安全 网络协议
Linux监控和调优:提高系统性能的实用技巧与建议
Linux监控和调优:提高系统性能的实用技巧与建议
1059 0
|
6月前
|
Linux
Linux操作系统调优相关工具(一)查看CPU负载相关工具 找出系统中使用CPU最多的进程?
Linux操作系统调优相关工具(一)查看CPU负载相关工具 找出系统中使用CPU最多的进程?
63 0
|
6月前
|
Linux
Linux操作系统调优相关工具(二)查看Memory运行状态相关工具
Linux操作系统调优相关工具(二)查看Memory运行状态相关工具
46 0
|
6月前
|
运维 Linux 调度
Linux系统调优详解(十)——CPU调优
Linux系统调优详解(十)——CPU调优
117 3
|
6月前
|
缓存 运维 Linux
inux系统调优详解(八)——vmstat查看系统整体运行状态
inux系统调优详解(八)——vmstat查看系统整体运行状态
55 3
|
SQL 存储 缓存
工作常用之Spark调优【二】资源调优
使用 kryo 序列化并且使用 rdd 序列化缓存级别。使用 kryo 序列化需要修改 spark 的序列化模式,并且需要进程注册类操作。
193 1
工作常用之Spark调优【二】资源调优
|
网络安全
服务器初始化及内核调优脚本
服务器初始化及内核调优脚本