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

内核相关参数

位于/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. 表table

    (一)创建表 create table if not exists mydb.employees( name string comment "employee name", sal ...

  2. 如何实现Activiti的分支条件的自定义配置(转)

    如何实现Activiti的分支条件的自定义配置 博客分类: Activiti Java SaaS   一.Activiti的流程分支条件的局限 Activiti的流程分支条件目前是采用脚本判断方式,并 ...

  3. HCNA之网络通信基础

    一.通信与网络 通信的概念我们并不陌生,在人类社会的起源和发展过程中,通信就直伴随着我们.般认为, 20世纪七.八十年代,人类社会已进入到信息时代,对于生活在信息时代的我们,通信的必要性和重要性更是不 ...

  4. linux nfs远程挂载和卸载

    一.nfs远程挂载 1.首先确定服务端(实体挂载节点)的IP 2.通过cat  /etc/hosts 查看服务端的server name 3.mount -t nfs servername:/挂载文件 ...

  5. ADO SQL手写分页

    //实现层 ---------------------------------------------------------分割线---------------------------------- ...

  6. linux 解压 压缩 常见命令

    压缩命令: .tar tar -cvf 文件名称.tar 文件或者文件夹 .tar.gz tar -zcvf 文件名称.tar.gz 文件或者文件夹 .tar.xz tar -Jcf 文件名称.tar ...

  7. python之路(七)-递归算法

    递归 特点 递归算法是一种直接或者间接地调用自身算法的过程.在计算机编写程序中,递归算法对解决一大类问题是十分有效的,它往往使算法的描述简洁而且易于理解. 递归算法解决问题的特点: (1) 递归就是在 ...

  8. 快乐python 零基础也能P图 —— PIL库

    Python PIL PIL (Python Image Library) 库是Python 语言的一个第三方库,PIL库支持图像存储.显示和处理,能够处理几乎所有格式的图片. 一.PIL库简介 1. ...

  9. 数独计算(C#)

    计算零到多个可能的数独结果,并打印到Console中. 调用方法 MainController mc = new MainController(); mc.Do(); 输入 数独数据 类型为int[, ...

  10. 携带cookie的跨域访问

    携带cookie的跨域解决方案 有的时候访问后台的请求需要携带cookie以供后台分析,比如jQuery的ajax请求: $.ajax({ url: a_cross_domain_url, xhrFi ...