Linux系统优化要义

news2024/12/25 12:56:54

        这里不敢说 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 -mh
              total        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 -mh
              total        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.coloradmin.cn/o/1415905.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

函数入门.

函数入门 1. 初识函数2. 函数的参数2.1 参数2.2 默认参数2.3 动态参数 3. 函数返回值总结作业 1. 初识函数 函数到底是个什么东西? 函数,可以当做是一大堆功能代码的集合。 def 函数名():函数内编写代码......函数名()例如: # 定义名字叫in…

Linux 驱动开发基础知识—— 具体单板的 LED 驱动程序(五)

个人名片: 🦁作者简介:一名喜欢分享和记录学习的在校大学生 🐯个人主页:妄北y 🐧个人QQ:2061314755 🐻个人邮箱:2061314755qq.com 🦉个人WeChat:V…

THM学习笔记——john

John the Ripper是目前最好的哈希破解工具之一。 John基本语法: john [options] [path to file] john:调用John the Ripper程序。 [path to file]:包含你要尝试破解的哈希的文件,如果它们在同一个目录中,你就不需要命名…

S275 4G网络IO模块:智能酒店的理想选择

行业背景 随着物联网技术的发展,酒店服务也变得更加“智能”——自动灯光效果、室内温湿度控制、各种人性化操作等贴心服务,带给顾客真正的宾至如归之感。 同时,智慧酒店更为管理者提供了高效的管理手段,将酒店物耗、能耗、人员…

CSS探索浏览器兼容性

学习如何探索浏览器的兼容性对于编写跨浏览器兼容的CSS代码非常重要。以下是一些学习CSS兼容性的方法: MDN文档:Mozilla开发者网络(MDN)提供了广泛而详细的CSS文档,其中包含有关CSS属性、选择器和功能的信息。在MDN上…

解决 PDF.js v2.3.200 (build: 4ae3f9fc) 信息:PDFDocument: Stream must have data

文章标题 问题描述:思考分析:解决方案:参考资料 问题描述: 项目中使用PDF.js去预览已上传的附件文件时,加载PDF文件的时候报了以下的错误 错误信息如下 PDF.js v2.3.200 (build: 4ae3f9fc) 信息:PDFDocu…

基于QC-LDPC编码的循环移位网络的FPGA实现

一、桶式移位寄存器(barrel shifter) 八位桶式移位寄存器的VHDL实现如下,由于每一层结构相似,于是采用生成语句for_generate实现,使用该代码实现的RTL级分析和理论的结构一致,仿真结果也符合预期。 entity barrel_shift isGENE…

降低文件增长和失真的零系数JPEG图像可逆信息隐藏

一、研究概述和意义 随着多媒体技术和网络的迅猛发展,数字媒体的应用越来越广泛。在网络上传输的数字 媒体如音频、文本、视频和图像的内容及数据安全问题也随之而来。伴随着计算机技术发展与普及,数字媒体的机密性、完整性经常受到非法活动的威胁&…

OJ_完数和盈数

题干 c实现 #include<stdio.h> #include<vector> using namespace std;int IsWanOrYing(int a) {int sum 1;for (int i 2; i < a; i) {if (a % i 0) {sum i;}}if (sum a) {return 1;}else if (sum > a) {return 2;}return -1; }int main() {vector<…

DjangoURL调度器(二)

一、默认值与额外参数 1.1、默认值 1.1.1、urls.py from django.urls import pathfrom . import viewsurlpatterns [# http://127.0.0.1:8000/polls/blog/ 等同于 # http://127.0.0.1:8000/polls/blog/1/path(blog/, views.page),# http://127.0.0.1:8000/polls/blo…

【鸿蒙】大模型对话应用(二):对话界面设计与实现

Demo介绍 本demo对接阿里云和百度的大模型API&#xff0c;实现一个简单的对话应用。 DecEco Studio版本&#xff1a;DevEco Studio 3.1.1 Release HarmonyOS SDK版本&#xff1a;API9 关键点&#xff1a;ArkTS、ArkUI、UIAbility、网络http请求、列表布局、层叠布局 对话页…

Java笔记 --- 一、双列集合

一、双列集合 双列集合的特点 Map 创建Map对象时&#xff0c;要规定键和值的泛型 Map是一个接口&#xff0c;不能直接创建&#xff0c;要创建实例化对象 Map的遍历 通过键找值 先获取到键的对象&#xff0c;并放到一个单列集合中&#xff08;map.KeySet()方法&#xff09;…

如何预防服务器IP被劫持,危害有什么?

服务器IP被劫持是一种严重的网络安全问题&#xff0c;攻击者通过篡改服务器的IP地址&#xff0c;将网络流量重定向到恶意服务器或网站&#xff0c;导致用户无法正常访问目标服务器&#xff0c;并可能面临数据泄露、恶意软件感染等安全风险。了解服务器IP被劫持的危害和预防措施…

【数据结构与算法】6.栈

&#x1f4da;博客主页&#xff1a;爱敲代码的小杨. ✨专栏&#xff1a;《Java SE语法》 ❤️感谢大家点赞&#x1f44d;&#x1f3fb;收藏⭐评论✍&#x1f3fb;&#xff0c;您的三连就是我持续更新的动力❤️ &#x1f64f;小杨水平有限&#xff0c;欢迎各位大佬指点&…

python 基础知识点(蓝桥杯python科目个人复习计划25)

今日复习内容&#xff1a;基础算法中的进制转换 1.任意进制转十进制 &#xff08;1&#xff09; 基数&#xff1a;表示奇数数字符号的个数 10进制&#xff1a;0--9&#xff0c;基数为1016进制&#xff1a;0--9&#xff0c;A--F&#xff0c;基数为16 &#xff08;2&#xff…

146基于matlab的齿轮非线性动力学

基于matlab的齿轮非线性动力学&#xff0c;绘出系统状态变量随参数变化分岔图&#xff0c;绘图参数对应的系统各周期及混沌状态的时间历程图、相轨迹图、Poincare映射图&#xff0c;程序已调通&#xff0c;可直接运行。 146 matlab 齿轮非线性动力学 相图 (xiaohongshu.com)

第2章-神经网络的数学基础——python深度学习

第2章 神经网络的数学基础 2.1 初识神经网络 我们来看一个具体的神经网络示例&#xff0c;使用 Python 的 Keras 库 来学习手写数字分类。 我们这里要解决的问题是&#xff0c; 将手写数字的灰度图像&#xff08;28 像素28 像素&#xff09;划分到 10 个类别 中&#xff08;0…

Unity读书系列《Unity3D游戏开发》——拓展编辑器(一)

文章目录 前言一、扩展Project视图1、右键扩展菜单&#xff08;Asset&#xff09;2、监听事件3、拓展布局 二、扩展Hierarchy视图1、拓展菜单&#xff08;GameObject&#xff09;2、拓展布局3、重写菜单 三、扩展Inspector视图1、扩展原生组件2、扩展继承组件 四、扩展Scene视图…

【多线程】ThreadLocal 作为类的私有静态字段实践

ThreadLocal 通常作为类的私有静态字段存在的主要原因是为了确保每个线程都能够拥有自己独立的 ThreadLocal 变量。 以下是一些原因&#xff1a; 线程隔离&#xff1a; ThreadLocal 的设计目的是为了实现线程隔离&#xff0c;即每个线程都可以独立地管理自己的变量&#xff0c…

华为机考入门python3--(3)牛客3-明明的随机数

分类&#xff1a;集合、排序 知识点&#xff1a; 集合添加元素 set.add(element) 集合转列表 list(set) 列表排序 list.sort() 题目来自【牛客】 N int(input().strip()) nums set()for i in range(N):nums.add(int(input().strip()))# 集合转列表 nums_list l…