总结一些和性能相关的常见参数

内核相关参数

位于/etc/sysctl.conf文件,向文件中添加

sysctl -a可以查看默认配置

修改后可以通过sysctl -p执行并看看有没有错误

例如设置错了参数:

net.core.somaxconn=65535

一个端口最大的监听TCP连接的队列长度

net.core.netdev_max_backlog=65535

数据包速率比内核处理块时 允许送到队列的数据包的最大数目

net.ipv4.tcp_max_syn_backlog=65535

TCP syn队列的最大长度 第一次握手的连接 参数过大可能也会遭受syn flood攻击

net.ipv4.tcp_fin_timeout=10

fin超时时间 表示如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间

net.ipv4.tcp_tw_reuse=1

开启重用

net.ipv4.tcp_tw_recycle=1

快速回收

net.core.wmem_default=87380
net.core.wmem_max=16777216
net.core.rmem_default=87380
net.core.rmem_max=16777216

缓冲区的默认值和最大值

net.ipv4.tcp_keepalive_time=120

keepalive的检测时间间隔 单位为秒

net.ipv4.tcp_keepalive_intvl=30

检测无效时 重发消息间隔

net.ipv4.tcp_keepalive_probes=3

检测无效时 最多重复确认次数

kernel.shmmax=4294967295

linux内核参数中最重要的参数之一

用于定义单个共享内存段的最大值

64位linux 可取最大值为物理内存值-1byte 建议值为物理内存一半

vm.swappiness=0

free -m Swap中的内容

风险:

  • 降低操作系统性能
  • 在系统资源不足下,容易被OOM kill掉

设置为0是告诉系统除非虚拟内存完全满了 否则不要使用交换区

增加资源限制

位于 /etc/security/limit.conf

* soft nofile 65535
* hard nofile 65535
  • * 对所有用户有效
  • soft 当前系统生效的设置
  • hard 系统所能设定的最大值
  • nofile 打开文件的最大数目
  • 65535 限制的数量
  • 需要重启系统生效

设置前:

之后open files的值会提高为65535

磁盘调度策略

/sys/block/devname/queue/scheduler

查看可通过cat /sys/block/sda/queue/scheduler



现在使用的cfq 可选的是noop和deadline



用echo写入可以立即生效

简介:

  • noop电梯式调度策略

    实现了一个FIFO队列 倾向饿死读而利于写 对闪存设备 RAM和嵌入式系统是最好的选择

  • deadline 截止时间调度策略

    确保了在一个截止时间内服务请求 这个截止时间是可调整的 而默认读期限短于写期限

    对于数据库类应用是最好的选择

  • anticipatory 预料IO调度策略

    本质上和deadline一样 但在最后一次读操作后 要等待6ms 才能继续进行对其他IO请求进行调度 将一些小写入流合并成一个大写入流 用写入延迟换取最大的写入吞吐量 适合写入较多的环境 比如文件服务器 对数据库环境表现很差

  • cfq 绝对公平算法

参考资料:

TCP/IP及内核参数优化调优

Linux IO Scheduler(Linux IO 调度器)

linux性能优化参数小节的更多相关文章

  1. Linux 性能优化之 IO 子系统 系列 图

    http://blog.sina.com.cn/s/articlelist_1029388674_11_1.html Linux 性能优化之 IO 子系统(一) 本文介绍了对 Linux IO 子系统 ...

  2. 如何学习Linux性能优化?

    如何学习Linux性能优化? 你是否也曾跟我一样,看了很多书.学了很多 Linux 性能工具,但在面对 Linux 性能问题时,还是束手无策?实际上,性能分析和优化始终是大多数软件工程师的一个痛点.但 ...

  3. Linux 性能优化解析

    前情概述 进程调度 老板 cpu 任劳任怨的打工仔 线程 工作在做什么 可运行队列 拥有的工作清单 上下文切换 和老板沟通以便得到老板的想法并及时调整自己的工作 中断 部分工作做完以后还需要及时向老板 ...

  4. 深挖计算机基础:Linux性能优化学习笔记

    参考极客时间专栏<Linux性能优化实战>学习笔记 一.CPU性能:13讲 Linux性能优化实战学习笔记:第二讲 Linux性能优化实战学习笔记:第三讲 Linux性能优化实战学习笔记: ...

  5. Linux 性能优化排查工具

    下图1为 Linux 性能优化排查工具的总结 图1 诊断 CPU 工具 查看 CPU 核数 总核数 = 物理CPU个数 X 每颗物理CPU的核数 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU ...

  6. Linux性能优化从入门到实战:01 Linux性能优化学习路线

      我通过阅读各种相关书籍,从操作系统原理.到 Linux内核,再到硬件驱动程序等等.   把观察到的性能问题跟系统原理关联起来,特别是把系统从应用程序.库函数.系统调用.再到内核和硬件等不同的层级贯 ...

  7. Linux性能优化-平均负载

    Linux性能优化-平均负载 目录 Linux性能优化-平均负载 平均负载的含义 平均负载为多少时合理 平均负载与 CPU 使用率 平均负载案例分析 场景一:CPU 密集型进程 场景二:I/O 密集型 ...

  8. linux性能优化常用命令

    作为一名linux系统管理员,最主要的工作是优化系统配置,使应用在系统上以最优的状态运行,但是由于硬件问题.软件问题.网络环境等的复杂性 和多变性,导致对系统的优化变得异常复杂,如何定位性能问题出在哪 ...

  9. linux性能优化cpu 磁盘IO MEM

    系统优化是一项复杂.繁琐.长期的工作,优化前需要监测.采集.测试.评估,优化后也需要测试.采集.评估.监测,而且是一个长期和持续的过程,不 是说现在优化了,测试了,以后就可以一劳永逸了,也不是说书本上 ...

随机推荐

  1. js中创建对象

    https://www.cnblogs.com/starof/p/4162354.html

  2. SQL SERVER 如何把1列多行数据 合并成一列显示

    示例 修改前:1列多行数据 修改后:合并成一列 示例语句 1 2 3 4 5 6 7 8 9 10 11 select 类别,     名称 = (         stuff(            ...

  3. UML中的六种关系

    设计模式是一种对于面向对象语言(C#,C++,Java)的高级应用.其思维体现出的是真正的代码设计.每一种模式都堪称巧妙!但基于各种设计模式,这里少不了基本的类图设计,本文简要列出6种关系,及相关的例 ...

  4. 得到一个文件夹中所有文件的名称的几个方法(命令指示符, C++, python)

    因为最近一直需要获得一个文件下的所有图片的名称,自己又总是跨平台使用,所以把自己在不同环境之下使用的方法总结如下 1.cmd 模式下 优点:简单 例如,我想将一个文件夹下的所有".jpg&q ...

  5. clouderamanager安装

    下载地址 http://archive.cloudera.com/cm5/cm/5/ 安装 先安装manager,再安装cdh 待续

  6. JS-MD5加密

    首先,下载MD5文件压缩包 点击下载MD5压缩包 然后,在需要加密的页面引用MD5脚本文件 <script src="js/md5.js" type="text/j ...

  7. Pyinstaller打包django

    偶有特殊要求可能需要将django程序打包成exe可执行文件,方便在电脑直接点击运行.这里用的是打包python代码的常用库Pyinstaller. 虽然用Pyinstaller支持打包Django, ...

  8. XNA、FNA以及在VS2017中编写XNA

    XNA是早期DX SDK支持的C#游戏开发环境,虽然现游戏开发大多是以Unity3D,Unreal 4为主,但是许多独立游戏开发者,特别是2D游戏,依然使用XNA进行开发, 纠其原因,猜测是C#开源且 ...

  9. hbase常用操纵操作——增删改查

    查询某个资金账户的信息 get 'dmp:hbase_tags','资金账号' 创建表 create 'emp', 'personal data', 'professional data' 在HBas ...

  10. git使用之后悔药

    1.工作区的代码想撤销 背景:有时候编写了一大段代码之后,想要撤销更改(执行add操作之前), 命令:git checkout -- <file路径> 使用git checkout -- ...