百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

linux 常用性能优化参数及理解

ahcoder 2025-03-10 11:56 3 浏览

1. 优化内核相关参数

配置文件/etc/sysctl.conf

配置方法直接将参数添加进文件每条一行.

  • sysctl -a可以查看默认配置
  • sysctl -p 执行并检测是否有错误
  • 例如设置错了参数:
[root@ossec makeit]# sysctl -p
net.ipv4.ip_forward = 1
sysctl: cannot stat /proc/sys/net/core/somaxconn1: 没有那个文件或目录

网络相关

  • 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
  • 是否允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0 关闭
  • net.ipv4.tcp_tw_recycle=1
  • 是否开启TCP连接中TIME-WAIT sockets的快速回收,默认为0 关闭

关于网络参数调优模板,模板配置为8和16g内存[按需调整]

参数

默认配置

调整配置

说明

fs.file-max

1048576

9999999

所有进程打开的文件描述符数

fs.nr_open

1635590

1635590

单个进程可分配的最大文件数

net.core.rmem_default

124928

262144

默认的TCP读取缓冲区

net.core.wmem_default

124928

262144

默认的TCP发送缓冲区

net.core.rmem_max

124928

8388608

默认的TCP最大读取缓冲区

net.core.wmem_max

124928

8388608

默认的TCP最大发送缓冲区

net.ipv4.tcp_wmem

4096 16384 4194304

4096 16384 8388608

TCP发送缓冲区

net.ipv4.tcp_rmem

4096 87380 4194304

4096 87380 8388608

TCP读取缓冲区

net.ipv4.tcp_mem

384657 512877 769314

384657 512877 3057792

TCP内存大小

net.core.netdev_max_backlog

1000

5000

在每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目

net.core.optmem_max

20480

81920

每个套接字所允许的最大缓冲区的大小

net.core.somaxconn

128

2048

每一个端口最大的监听队列的长度,这是个全局的参数

net.ipv4.tcp_fin_timeout

60

30

对于本端断开的socket连接,TCP保持在FIN-WAIT-2状态的时间(秒)。对方可能会断开连接或一直不结束连接或不可预料的进程死亡

net.core.netdev_max_backlog

1000

10000

在每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目

net.ipv4.tcp_max_syn_backlog

1024

2048

对于还未获得对方确认的连接请求,可保存在队列中的最大数目。如果服务器经常出现过载,可以尝试增加这个数字

net.ipv4.tcp_max_tw_buckets

5000

5000

系统在同时所处理的最大timewait sockets数目

net.ipv4.tcp_tw_reuse

0

1

是否允许将TIME-WAIT sockets重新用于新的TCP连接

net.ipv4.tcp_keepalive_time

7200

900

表示TCP链接在多少秒之后没有数据报文传输时启动探测报文(发送空的报文)

net.ipv4.tcp_keepalive_intvl

75

30

表示前一个探测报文和后一个探测报文之间的时间间隔

net.ipv4.tcp_keepalive_probes

9

3

表示探测的次数

注意:

  • 参数值并不是设置的越大越好,有的需要考虑服务器的硬件配置,参数对服务器上其它服务的影响等。

本地端口号

有时候我们修改了文件句柄限制数后,错误日志又会提示 "Can’t assignrequested address"。这是因为TCP 建立连接,在创建 Socket 句柄时,需要占用一个本地端口号(与 TCP 协议端口号不一样),相当于一个进程,便于与其它进程进行交互。而Linux内核的TCP/IP 协议实现模块对本地端口号的范围进行了限制。当端口号用尽,就会出现这种错误了。

我们可以修改本地端口号的范围。

# 查看IP协议本地端口号限制
cat /proc/sys/net/ipv4/ip_local_port_range

#一般系统默认为以下值
32768    61000

#修改本地端口号
vim /etc/sysctl.conf

#修改参数
net.ipv4.ip_local_port_range = 1024 65000

#保存修改后,需要执行sysctl命令让修改生效
sysctl -p

注意: 1、
net.ipv4.ip_local_port_range的最小值为1024,1024以下的端口已经规划为TCP协议占用,如果想将 TCP 协议端口设置为8080等大端口号,可以将这里的最小值调大。

2、如果存在应用服务端口号大于1024的,应该将
net.ipv4.ip_local_port_range 的起始值修改为大于应用服务端口号,否则服务会报错。

kernel.shmmax=4294967295 该参数定义了共享内存段的最大尺寸(以字节为单位)。

=sag_max_size初始化参数的大小,否则SAG由多个内存段构成,效率降低,
还要不小于物理内存的一半,默认情况下在32位x86系统中,Oracle SGA最大不能超过1.7GB.

kernel.shmmni=4096 这个内核参数用于设置系统范围内共享内存段的最大数量。该参数的默认值是 4096.

kernel.shmall = 2097152 该参数表示系统任意时刻可以分配的所有共享内存段的总和的最大值(以页为单位).

其值应不小于shmmax/page_size.缺省值就是2097152,如果服务器上运行的所有实例的
SGA总和不超过8GB(通常系统可分配的共享内存的和最大值为8GB),通常不需要修改.

vm.swappiness=0

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

风险:

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

2.提高资源限制上限

配置文件位于 /etc/security/limit.conf

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

3.磁盘调度策略

参数路径
:/sys/block/devname/queue/scheduler

简介:

  • noop电梯式调度策略
  • 实现了一个FIFO队列 倾向饿死读而利于写 对闪存设备 RAM和嵌入式系统是最好的选择
  • deadline 截止时间调度策略
  • 确保了在一个截止时间内服务请求 这个截止时间是可调整的 而默认读期限短于写期限
  • 对于数据库类应用是最好的选择
  • anticipatory 预料IO调度策略
  • 本质上和deadline一样 但在最后一次读操作后 要等待6ms 才能继续进行对其他IO请求进行调度 将一些小写入流合并成一个大写入流 用写入延迟换取最大的写入吞吐量 适合写入较多的环境 比如文件服务器 对数据库环境表现很差
  • cfq 绝对公平算法

内核参数存储路径

文件/目录

作用

/proc/sys/abi/*

用于提供对外部二进制的支持,比如在类UNIX系统,SCO UnixWare 7、SCO OpenServer和SUN Solaris 2上编译的软件。默认情况下是安装的,也可以在安装过程中移除。

/proc/sys/fs/*

设置系统允许的打开文件数和配额等。

/proc/sys/kernel/*

可以启用热插拔、操作共享内存、设置最大的PID文件数和syslog中的debug级别。

/proc/sys/net/*

优化网络,IPV4和IPV6

/proc/sys/vm/*

管理缓存和缓冲

相关推荐

Linux ntp时钟同步问题(linux ntp同步命令)

有时候,操作系统会报linux的ntp时钟错误。从时钟源同步时间超时。我查看了一下ntp的时钟源,发现执行ntpq-p显示超时。执行nslookup时钟服务器域名,发现可以正常解析。执行了n...

linux服务器同步利器Rsync全介绍(付脚本)

1、认识Rsync(remotesynchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。Rsync使用所谓的“Rsync算法”来使本地和远程两个主机之间的文件...

如何使用Rsync同步两个网站服务器的内容

本头条号每天坚持更新原创干货技术文章,欢迎关注本头条号"Linux学习教程",公众号名称“Linux入门学习教程"。如需学习视频,请复制以下信息到手机浏览器或电脑浏览器上:zc...

Linux TB级小文件同步备份解决方案

在某些电子档案存储的业务系统下,按照业务场景要求,需要将产生的所有电子影像资料永久存储,并支持备份;因为“钞能力”等原因,一般备份存储只有一个节点(即:一个备份存储服务器);这样就要求研发工程师,不...

CentOS7下使用Lsyncd实现文件实时同步

Lsyncd简单介绍Lsyncd使用文件系统事件接口(inotify或fsevents)来监视本地文件和目录的更改。Lsyncd在几秒钟内将这些文件事件整理核对后,然后生成一个或多个进程以将更...

如何手动同步Linux系统时间并与互联网时间保持同步?

在Linux系统中,正确的时间同步对于许多任务都是至关重要的。一些关键应用程序可能需要准确的时间戳才能正常工作,而一些安全功能也需要确保所有服务器的时间都是准确的。NTP服务可以自动同步系统时间和互...

Linux服务器Rsync定时同步一键化配置指南

1、主从服务器同时安装rsyncopenssh-clientaptupdate&&aptinstall-yrsyncopenssh-client2、主服务器安装好后输入以下命令生成密钥...

Linux系统如何使用NTPDATE命令设置时间同步

简介:咱们在使用Linux系统的时候,常常能发现用了一阵子之后,Linux系统的时间就对不上了。已经知道的情况是,安装Linux的时候选的时区是Asia/Shanghai,可这系统运行了一...

开源的Linux文件同步工具有哪些?(linux 文件夹 同步)

Linux系统之间经常需要文件同步,一个好的文件同步工具省时省力,这里介绍几款开源的Linux文件同步工具1.rsync:rsync是Linux上一个功能强大的命令行工具,可以在不同的服务器之间同...

Linux 系统使用 rsync + inotify 实现文件实时同步

Linux系统使用rsync+inotify实现文件实时同步简介inotify监控文件的变化后通知rsync进行文件的同步#配置免密登录ssh-keygen-trsaca...

Linux 远程数据同步工具详解(linux远程同步命令)

一、简介1认识Rsync(remotesynchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。Rsync使用所谓的“Rsync算法”来使本地和远程两个主机之...

构建基于 Linux 的 NTP 时间同步集群与时间安全防护实战指南

一、为什么时间同步对系统如此重要?在分布式系统、数据库复制、消息队列、审计日志、安全认证(如Kerberos)、容器编排等场景中,系统时间一致性是保障正确性与安全性的基础。一旦服务器间时间漂移,可能...

每日Linux学习:同步备份工具 rsync

rsync是一个用于高效同步文件和目录的工具。它通过仅传输变化的部分(增量传输)来节省时间和带宽,支持本地同步、远程同步(通过SSH),还能保留文件原有权限、时间戳等属性。本文通过几个常用的实例来...

Chromixium OS 1.0发布 基于Ubuntu发行版

Chromixium项目宣布chromixiumOS1发布,一款基于Ubuntu的Linux分支,chromixiumOS试图重新打造一款外观和感觉与ChromeOS相似的完...

iOS8.0.X~iOS8.1完美越狱!盘古团队出品

【巴士速递·移动情报站】最新消息,iOS8.1越狱了!!此次越狱依旧是iOS7时代我国的大神盘古团队带来的,而该次越狱支持最新的iPhone6、iPhone6Plus、iPadAir2和iPad...