文档章节

linux内核参数都有哪些参数需要调优

w
 wang__tao
发布于 2016/11/19 00:47
字数 1127
阅读 64
收藏 3
点赞 0
评论 0
  • 网络
    linux作为客户端时,默认有最大连接数的限制,可以参考这里,修改的方法是在/etc/sysctl.conf下,增加一下设置
net.ipv4.tcp_timestamps = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1

其具体含义,参考这里,还有timestamps要不要开启,参考这里

  • 打开文件数
    linux系统默认单个进程能够打开最大的文件句柄数量为1024个,通过命令ulimit -n可以查看,修改方法,当时用
ulimit -HSn 102400

需要在root环境下,sudo不起作用
永久生效

 *     soft nofile 1024000
 *     hard nofile 1024000
root soft nofile 1024000
root hard nofile 1024000

只有重启机器有才生效

  • 页是物理内存或虚拟内存中一组连续的线性地址,Linux内核以页为单位处理内存,页的大小通常是4KB。当一个进程请求一定量的页时,如果有可以使用的页,也就是还有空余的物理或虚拟内存时,内核会直接把这些页分配给这个进程,否则,内核会从其它进程或者缓存中拿来一部分给这个进程,这些调用的过程以及分配,内存的位置等都是由内核来完成,有个一专门管理的叫虚拟内存管理器。linux内核使用名为伙伴系统(Buddy System)的机制维护空闲页,可以通过/proc/buddyinfo查看

  • Netfilter模块是被直接写进内核的模块,其在外的表现形式即为iptables。

  • Netfilter把每一个包分为下面四类,NEW:尝试建立新连接的包,ESTABLISHED:已建立连接的包,RELATED:与前面相关的包, INVALID:因为异常或者非法的不知状态的包。

  • Netfilter对匹配到的规则的处理,ACCEPT:接受包,放行,DROP:丢掉包,REJECT:丢掉包并回复一个消息,LOG:记录匹配到的包,MASQUEREAD,SNAT,DNAT,REDIRECT:地址翻译(NAT)

  • TCP/IP滑动窗口

  • Offload 如果网卡支持硬件Offload功能,内核可以卸载适配器的一部分任务,这样就可以减轻CPU的压力

  • 校验值卸载(Checksum offload) TCP/IP在协议的头部会有校验值字段,这个值由数据包中计算得到,通过比较校验值可以得到是否有数据丢失。

  • TCP分片卸载(TCP segmentation offload,TSO) 即MTU(最大传输单元,maximum transmission unit),如果数据比网卡支持的MTU更大,那么,数据就要分割成等于或者小于MTU大小的包,这个选项由内核指定。

  • 绑定模式 利用bonding驱动,Linux内核提供网卡聚合的功能。

  • 调整进程优先级 进程优先级由两部分组成,分别是priority和nice,在通过ps -l查看时

[root@localhost ~]# ps -l
F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
4 S     0  2976  2974  0  80   0 -  2861 wait   pts/1    00:00:00 bash
4 R     0  2996  2976  0  80   0 -  2818 -      pts/1    00:00:00 ps

其中PRI就是priority,NI就是nice,所以,进程优先级的值在priority(0 - 99)和nice(20 - -19)之和的一个区间里,即0 - 140,这个值越低就表示该进程优先级越高,而这个值(0 -140)又关系到这个进程是实时进程还是非实时进程的问题,所有优先级值在0 -99的都是实时进程,其他的则为非实时进程。priority的值可以通过chrt修改,nice值可以通过nicerenice来设置,具体其原理请参考这里

  • 根据业务需求,适当减少磁盘I/O 在一般情况下,大的I/O流都会比小的要高效。

  • 控制/proc/sys/vm/swappiness的大小

  • 控制脏内存的刷新大小/proc/sys/vm/dirty_background_ratio,可以在脏内存达到你设定的值再刷到磁盘

  • 设置应用程序的脏内存刷新大小/proc/sys/vm/dirty_ratio,使其文件系统缓存达到主内存更大的值再写入到磁盘中

  • 设置Hugepages,即HugeTLBfs,具体参考kernel官方文档

  • 选择正确的I/O调度算法,I/O elevator,目前比较流行的有如下四种:

  • CFQ(Complete Fair Queuing) elevator

  • deadline elevator

  • NOOP

  • as(Anticipatory)
    具体原理用法可以参考这篇blog

  • 减少中断

  • 把网卡绑定到特定的CPU上

  • 把其他的绑定到特定的CPU上
    其目的就是为了减少Linux内核处理大量的中断和上下文切换

© 著作权归作者所有

共有 人打赏支持
w
粉丝 1
博文 93
码字总数 33311
作品 0
西安
linux系统调优-存储(内存、硬盘)

首先一个基本概念: 存储系统存储速度的快->慢: 内存->闪存->磁盘 因为内存的价格限制以及操作系统支持的限制,我们只能从磁盘这块来看,可见磁盘正是存储系统的最大瓶颈所在。 **下面具体提...

月黑风高杀人夜
2015/08/21
0
0
Linux 调试三剑客——strace,lsof,tcpdump

Brendan D. Gregg 专注 Linux performance & tuning 许多年,其博客 brendangregg.com 里关于分析和调优的干货琳琅满目。一篇名为 Linux Performance 文章全面而详细的整理了常用工具,覆盖了...

koala bear
2015/01/03
0
0
linux+Oracle集群课程全面升级

作为国内最早从事开源架构师级课程研发的公司,从2006年10月开始,荣新稳步提升,将互联网运维作为主导就业方向,并将Linux集群架构课程发展成为国内最顶级、覆盖技术最全面的Linux课程,作为...

张琦
06/26
0
0
调优 Haproxy 代理 Ceph

调优 Haproxy 代理 Ceph 今天同事告诉我安装的 Haproxy 代理 Ceph 通过压力测试软件压测的时候,使用与直接压主机的配置去压 Haproxy 的时候会被压死。 简单分析,确定调优方向 我们使用 Ce...

seal_90
07/06
0
0
【1】安装rabbitmq server

安装erlang 1、下载源码wget http://www.erlang.org/download/otpsrcR16B02.tar.gz 2、安装erlang编译环境: yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-deve......

不羁青年
2015/08/16
0
0
Linux内核Socket参数调优

可调优的内核变量存在两种主要接口:sysctl命令和/proc文件系统,proc中与进程无关的所有信息都被移植到sysfs中。IPV4协议栈的sysctl参数主要是sysctl.net.core、sysctl.net.ipv4,对应的/pr...

China_OS
2013/03/21
0
0
MySQL性能优化(一)

MySQL是一个开源的小型关系数据库,也是目前应用最广泛的。最近学习了MySQL的性能调优,感觉一下子接触很多之前不了解的东西,这些优化应该来说是非常实用的,所以这里打算写一个系列的博客来...

丶legend
2017/10/22
0
0
如何提高 Linux 上 socket 性能

加速网络应用程序的 4 种方法 使用 Sockets API,我们可以开发客户机和服务器应用程序,它们可以在本地网络上进行通信,也可以通过 Internet 在全球范围内进行通信。与其他 API 一样,您可以...

miffa
2014/12/16
0
0
从传统运维到云运维演进历程之软件定义存储(三)下

上回书讲到了运维小哥的调优方法论(上),对于Ceph运维人员来说最头痛的莫过于两件事:一、Ceph调优;二、Ceph运维。调优是件非常头疼的事情,下面来看看运维小哥是如何调优的。 关卡二:部...

Devin
2016/10/11
0
0
修改linux最大文件句柄数--ulimit -a

最近服务器并发很高,昨天晚上突然好几个服务同时挂了,查找日志发现报错:“too many open files”,在网上也找了些资料,最后通过修改句柄数,解决了问题。 大家知道在linux服务器大并发调...

kou_hao
06/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Python PIPEs

https://www.python-course.eu/pipes.php https://www.tutorialspoint.com/python/os_pipe.htm

zungyiu
1分钟前
0
0
gRPC学习笔记

gRPC编程流程 1. proto文件定义 proto文件用于定义需要通过gRPC生成的接口,可以理解为接口定义文档 2. 通过构建工具生成服务基类代码-Maven或Gradle 3. 服务端开发 服务端实现类须实现通过构...

OSC_fly
21分钟前
0
0
Docker Mac (三) Dockerfile 及命令

Dockerfile 最近学习docker的时候,遇到一件怪事,关于docker镜像可能会被破坏,还不知道它会有此措施 所以需要了解构建Dockerfile的正确方法 Dockerfile是由一系列命令和参数构成的脚本,这些命...

___大侠
47分钟前
0
0
Android Studio+NDK+Cmake 移植FFmpeg-4.0.2命令行工具

一、编译 参考大神的帖子,亲测一次编译成功:https://blog.csdn.net/bobcat_kay/article/details/80889398 鉴于以前查文档的经验,这里附上编写例子的时间:2018年7月22日 我用的是ubantu,...

她叫我小渝
48分钟前
0
0
mysql创建数据库

登录MYSQL mysql -u root -p 脚本创建数据库WeChat,并制定默认的字符集是utf8mb4。 CREATE DATABASE Wechat DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_general_ci; 授权 grant all......

niithub
今天
0
0
svn: Unable to connect to a repository URL 的解决方案

错误图示: 解决办法:清除本地保存的授权信息; 1:右键点击本地文件夹,选择设置; TortoiseSVN -> Settings 2:在弹出的对话框中选择 Saved Data, 右侧选择:授权地方清理所有。 然后点确...

宁哥实战课堂
今天
1
0
sleep与wait的区别

Thread.sleep(XXX)方法消耗CPU吗? 这个知识点是我之前认识一直有错误的一个知识点,在我以前的认识里面,我一直认为Thread.sleep(1000)的这一秒钟的时间内,线程的休眠是一直占用着CPU的时间...

码代码的小司机
今天
1
0
20位活跃在Github上的国内技术大牛 leij 何小鹏 亚信

本文列举了20位在Github上非常活跃的国内大牛,看看其中是不是很多熟悉的面孔? 1. lifesinger(玉伯) Github主页: https://github.com/lifesinger 微博:@ 玉伯也叫射雕 玉伯(王保平),...

海博1600
今天
1
0
Mybatis收集配置

一、Mybatis取Clob数据 1、Mapper.xml配置 <resultMap type="com.test.User" id="user"> <result column="id" property="id"/> <result column="json_data" property="jsonData" ......

星痕2018
今天
1
0
centos7设置以多用户模式启动

1、旧版本linux系统修改inittab文件,在新版本执行vi /etc/inittab 会有以下提示 # inittab is no longer used when using systemd. # # ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON......

haha360
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部