Linux系统优化要义

        这里不敢说 linux优化奥义,主要是本文比较浅显,适合普通开发相关人员去读

linux作为服务器系统的王者,以稳定性著称,但对于不同的“应用场景”,相关配置还需调整,才能保证业务稳定性。以下是相关总结

  • IO优化

        IO优化通常在需要进行大量文件读写,或进行大量网络请求的情况,如数据库服务器,中间件服务,文件存储服务器,或承担高并发的基础服务的服务器等。根据实际业务情况进行调整

        1.文件读写频率的调整,需要的实时性越高,以下3项需要设置得越小,CPU消耗越多。需要的性能越高,以下3项需要设置越大(根据机器配置),CPU消耗越多。

#调整文件 触发刷写脏页的百分比
echo 1 > /proc/sys/vm/dirty_background_ratio
#多久检查一次脏页 秒
echo 1 > /proc/sys/vm/dirty_ratio
#多久后算脏页 此处100ms
echo 100 > /proc/sys/vm/dirty_expire_centisecs

        taps:很多数据库采用mmap等有自己的优化配置,这些参数配置就没用了

        2. 单进程的文件打开数(如不够用会报xxx openfiles)

#查看现有配置
less /etc/security/limits.conf
#调整配置  这里还可以优化其他参数 如打开进程数等,与命令ulimit -a 中内容相呼应
vim /etc/security/limits.conf
# 将如下内容贴到底部
# 限制文件打开数据
*               hard     nofile          65535
*               soft     nofile          65535

 sysctl -p 刷一下,重新登录ssh,用命令 ulimit -n 查看是否生效(相关程序也需要重启)

  • 内存优化

        内存优化。一般情况不建议内存优化,特别是OOM机制,是系统级别的兜底机制,否则真卡住,只能去机房了,如果机房在贵州山里面就很麻烦了哈哈哈

        1. 虚拟内存。如果应用实时要求性很高,建议关闭虚拟内存,毕竟拿磁盘当内存,硬件就差了。他作用在于处理一些内存不够的情况,提高程序的极值,如“离线计算类”应用,可以将虚拟内存开大

#查看交换空间
swapon -s 
#调整大小
[root@localhost ~]# free -mhtotal        used        free      shared  buff/cache   available
Mem:           3.7G        3.0G        253M        8.4M        433M        459M
Swap:          3.9G        264K        3.9G
#创建一个1M*1024的文件夹 ,根据实际情况调整
[root@localhost ~]# dd if=/dev/zero of=/tmp/big_swap bs=1M count=1024
记录了1024+0 的读入
记录了1024+0 的写出
1073741824字节(1.1 GB)已复制,0.337149 秒,3.2 GB/秒
#统计大小
[root@localhost ~]# du -sh /tmp/big_swap
1.0G    /tmp/big_swap
[root@localhost ~]# mkswap /tmp/big_swap
正在设置交换空间版本 1,大小 = 1048572 KiB
无标签,UUID=80241833-60b5-4613-83e7-e5715355d35b
#标记为交换区
[root@localhost ~]#  swapon /tmp/big_swap
swapon: /tmp/big_swap:不安全的权限 0644,建议使用 0600。
#查看大小,增加了1G
[root@localhost ~]#  free -mhtotal        used        free      shared  buff/cache   available
Mem:           3.7G        3.0G        146M        8.4M        552M        470M
Swap:          4.9G        264K        4.9G

        2.cgroup。 严格来说叫内存管控,也是docker的底层原理。设置一个cgroup文件。cgroup其实是个完整的资源管理体系,cd /sys/fs/cgroup 发现里面有很多文件,这里说内存:如下图创建了一个文件,内容是 byte数

系统程序时采用 cgexec -g memory:memory_limit/xxx_limit 开始,加入当前组就行

至于内存分配页等来说,不建议随便优化,以免适得其反。

  • 网络优化

        首先确认大部分应用基于TCP,不是UDP,此处忽略UDP的优化。此处TCP原理就不说了

        打开文件 vim /etc/sysctl.conf

#很需要调整的 队列不够长的时候,并发一上来,就开始拒绝连接 默认1024
net.ipv4.tcp_max_syn_backlog=10240
#很需要调整的 已连接的队列,当握手完成后,会放到这个队列 也是并发过多时会出现的问题,比如断了网,客户端端会自动重试,可能1k个客户端每个重试3次,就是3k个请求直接打过来,此处太小就直接拒绝了连接 默认是128
net.core.somaxconn=10240# 客户端无响应的超时时间。默认60 不建议改,但要知道,方便查问题
net.ipv4.tcp_fin_timeout=60
#tcp快速打开功能,改功能适合频繁断开连接的情况,而且需客户端配合,虽是银剑,但场景偏少 0禁用 1启用 2启用并解释数据
net.ipv4.tcp_fastopen=0#一般不用改 在连接建立过程中,发送 SYN(同步)包后等待对方响应的最大重试次数,网络环境很差就可以设置多些
net.ipv4.tcp_syn_retries=6
#一般不用改 是否重用time_wait的连接 默认不重用,当业务代码很健壮的时候可以开,性能提高不少
net.ipv4.tcp_tw_reuse=0

修改之后通过sysctl -p刷写。(然后建议重启程序)

还有其他相关参数未列出,但找到入口就好办了

  • 整体参数说明

        如需要进行较深入的优化,通过sysctl -a 查看linux的所有内核参数,根据实际情况进行优化

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/434319.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

野火霸道V2学习笔记

野火霸道V2学习笔记 STM32F103学习笔记说明基础配置配置KeilMDK配置串口下载程序美化Keil界面配置VScode 理论知识STM32命名方式例子 置位与清零GPIOGPIO简介GPIO和引脚的区别引脚的分类 GPIO 框图讲解保护二极管推挽输出开漏输出补充: 高阻态与悬空复用功能输出输入模式GPIO框…

SpringBoot之时间数据前端显示格式化

背景 在实际我们通常需要在前端显示对数据操作的时间或者最近的更新时间,如果我们只是简单的使用 LocalDateTime.now()来传入数据不进行任何处理那么我们就会得到非常难看的数据 解决方式: 1). 方式一 在属性上加上注解,对日期进行格式…

架构师的36项修炼-08系统的安全架构设计

本课时讲解系统的安全架构。 本节课主要讲 Web 的攻击与防护、信息的加解密与反垃圾。其中 Web 攻击方式包括 XSS 跨站点脚本攻击、SQL 注入攻击和 CSRF 跨站点请求伪造攻击;防护手段主要有消毒过滤、SQL 参数绑定、验证码和防火墙;加密手段&#xff0c…

Gitlab默认主分支main修改为master

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…

那些年与指针的爱恨情仇(一)---- 指针本质及其相关性质用法

关注小庄 顿顿解馋 (≧∇≦) 引言: 小伙伴们在学习c语言过程中是否因为指针而困扰,指针简直就像是小说女主,它逃咱追,我们插翅难飞…本篇文章让博主为你打理打理指针这个傲娇鬼吧~ 本节我们将认识到指针本质,何为指针和…

【nginx实战】nginx正向代理、反向代理、由反向代理实现的负载均衡、故障转移详解

文章目录 一. 正向代理与反向代理的概念二. Nginx服务器的正向代理服务1. Nginx服务器正向代理服务的配置的3个指令1.1. resolver指令1.2. resolver_timeout指令1.3. proxy_pass指令 2. Nginx服务器正向代理服务的使用 三. Nginx服务器的反向代理服务1. 反向代理的基本指令1.1.…

大创项目推荐 行人重识别(person reid) - 机器视觉 深度学习 opencv python

文章目录 0 前言1 技术背景2 技术介绍3 重识别技术实现3.1 数据集3.2 Person REID3.2.1 算法原理3.2.2 算法流程图 4 实现效果5 部分代码6 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 深度学习行人重识别(person reid)系统 该项目…

C# Graphics对象学习

Graphics对象用于进行绘制; 从哪个对象获取的Graphics,然后进行绘制,就绘制到该对象上; 从位图获取Graphics,然后进行绘制,绘制到该位图上; 从某个控件获取Graphics,然后绘制&…

echarts 柱状图数据过多时自动滚动

当我们柱状图中X轴数据太多的时候,会自动把柱形的宽度挤的很细,带来的交互非常不好,我们可以用dataZoom属性来解决 简易的版本,横向滚动。 option.dataZoom [{type: "slider",show: true,startValue: 0, //数据窗口范…

​ElasticSearch

目录 简介 基本概念 倒排索引 FST 简介 ES是一个基于lucene构建的,分布式的,RESTful的开源全文搜索引擎。支持对各种类型的数据的索引;搜索速度快,可以提供实时的搜索服务;便于水平扩展,每秒可以处理 …

Apache Shiro <= 1.2.4反序列化漏洞攻击 CVE-2016-4437 已亲自复现

Apache Shiro < 1.2.4反序列化漏洞攻击 CVE-2016-4437 已亲自复现 漏洞名称漏洞描述影响版本 漏洞复现环境搭建漏洞利用 修复建议总结 漏洞名称 漏洞描述 在 1.2.5 之前的 Apache Shiro 中&#xff0c;当未为“记住我”功能配置密钥时&#xff0c;远程攻击者可以通过未指定…

观测器与卡尔曼滤波器的状态估计对比

在实时控制系统和信号处理中&#xff0c;观测器和卡尔曼滤波器是两个常用于状态估计的工具。本文将通过 Matlab 演示这两者在一维运动系统中的应用&#xff0c;并深入探讨它们的概念、核心点、异同以及本质。 观测器与卡尔曼滤波器的概念 观测器 观测器是一种用于估计系统状…