0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

linux常用性能优化方法

马哥Linux运维 来源:博客园lvusyy 2024-10-23 13:51 次阅读

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/* 管理缓存和缓冲

链接:https://www.cnblogs.com/lovesKey/p/11509683.html

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 内核
    +关注

    关注

    3

    文章

    1382

    浏览量

    40393
  • Linux
    +关注

    关注

    87

    文章

    11342

    浏览量

    210246
  • 内存
    +关注

    关注

    8

    文章

    3052

    浏览量

    74258
  • 参数
    +关注

    关注

    11

    文章

    1859

    浏览量

    32399

原文标题:linux 常用性能优化

文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    HBase性能优化方法总结

    对于写密集型提高性能需尽量减少刷写、合并和拆分的次数,以减少IO压力,提高系统性能。除了以上方法可以提高HBase性能之外,还可以采用以下方法
    发表于 04-20 17:16

    Linux系统的性能优化策略

    近年来,世界上许多大软件公司纷纷推出各种Linux服务器系统及Linux下的应用软件。目前,Linux 已可以与各种传统的商业操作系统分庭抗礼,在服务器市场,占据了相当大的份额。本文分别从磁盘调优,文件系统,内存管理以及编译
    发表于 07-16 06:23

    linux网络发包性能优化方法

    对于网络的行为,可以简单划分为 3 条路径:1) 发送路径,2) 转发路径,3) 接收路径,而网络性能优化则可基于这 3 条路径来考虑。
    发表于 07-16 06:05

    Linux和Android系统故障和优化性能方法和流程探讨

    作为一名Linux 或 Android 平台的系统工程师,在开发系统新功能外,主要工作就是优化系统性能,使系统上以最优的状态运行,但是由于硬件问题、软件问题、网络环境等的复杂性和多变性,导致对系统
    发表于 07-22 06:48

    web常用性能优化

    web常用性能优化
    发表于 06-13 10:57

    基于Linux的Socket网络编程的性能优化

    基于Linux的Socket网络编程的性能优化 随着Intenet的日益发展和普及,网络在嵌入式系统中应用非常广泛,越来越多的嵌入式设备采用Linux操作系统。
    发表于 10-22 20:48 1096次阅读
    基于<b class='flag-5'>Linux</b>的Socket网络编程的<b class='flag-5'>性能</b><b class='flag-5'>优化</b>

    你知道linux常用查看硬件设备信息命令的方法是什么?

    你知道linux常用查看硬件设备信息命令的方法是什么?
    发表于 05-13 11:04 3177次阅读

    Linux CPU的性能应该如何优化

    Linux系统中,由于成本的限制,往往会存在资源上的不足,例如 CPU、内存、网络、IO 性能。本文,就对 Linux 进程和 CPU 的原理进行分析,总结出 CPU 性能
    的头像 发表于 01-18 08:52 3418次阅读

    影响Linux性能的因素与优化方法

    ,那么linux作为一个开源平台,最终要实现的是通过这些开源软件的支持,以最低廉的成本,达到应用最优的性能。因此,谈到性能问题,主要实现的是linux操作系统和应用程序的最佳结合。
    的头像 发表于 04-12 09:18 869次阅读

    优化Linux的设计思路和方法介绍

    系统性能优化最后一个环节涉及的是程序开发人员,在Linux运维人员或架构设计人员找到程序或结构瓶颈后,程序开发人员要马上介入进行相应的程序修改。
    发表于 04-17 11:03 296次阅读

    Linux常用的6种SSH身份验证方法

    。由于远程访问可能涉及到安全问题,因此 Linux 提供了多种身份验证方法来保护 SSH 连接的安全性。本文将介绍 Linux常用的 6 种 SSH 身份验证
    的头像 发表于 05-12 14:42 3158次阅读

    Linux内核slab性能优化的核心思想

    今天分享一篇内存性能优化的文章,文章用了大量精美的图深入浅出地分析了Linux内核slab性能优化的核心思想,slab是
    的头像 发表于 11-13 11:45 676次阅读
    <b class='flag-5'>Linux</b>内核slab<b class='flag-5'>性能</b><b class='flag-5'>优化</b>的核心思想

    MySQL性能优化方法

    MySQL 性能优化是一项关键的任务,可以提高数据库的运行速度和效率。以下是一些优化方法,包括具体代码和详细优化方案。
    的头像 发表于 11-22 09:59 651次阅读

    Linux服务器性能查看方法

    Linux服务器性能查看是系统管理员和开发人员在日常工作中经常需要进行的任务,以确保系统稳定运行并优化资源使用。以下将详细介绍多种Linux服务器
    的头像 发表于 09-02 11:15 1224次阅读

    如何优化Linux服务器的性能

    优化Linux服务器的性能是一个综合性的任务,涉及硬件、软件、配置、监控等多个方面。以下是一个详细的指南,旨在帮助系统管理员和运维人员提升Linux服务器的
    的头像 发表于 09-29 16:50 382次阅读