应用办公生活信息教育商业
投稿投诉
商业财经
汽车智能
教育国际
房产环球
信息数码
热点科技
生活手机
晨报新闻
办公软件
科学动态
应用生物
体育时事

干货Linux系统调优介绍

  Linux系统调优介绍前言:
  Linux服务器运行了很多应用,在高负载下,服务器可能会出现性能瓶颈,例如CPU利用率过高、内存不足、磁盘IO瓶颈等,从而导致系统卡顿,服务无法正常运行等问题。所以针对以上问题,可以通过调整内核参数和系统的相关组件,优化应用程序来提高服务器的性能和稳定性,避免系统崩溃和服务中断。Linux系统优化考虑的两个方面:硬件层面:例如加内存、换用企业级SSD、提高带宽等操作。软件层面:系统内核参数、硬盘IO以及资源分配方面的配置。在软件层面如何进行系统优化:
  主要从系统内核参数、CPU、IO、网络、内存这几个方面来进行优化。内存调优:优化系统的内存使用效率,减少内存泄漏和内存碎片等问题。磁盘调优:提高磁盘的读写速度和可靠性,减少数据丢失和损坏的风险。CPU调优:优化CPU的利用率,提高系统的性能和稳定性。网络调优:提高网络的性能和稳定性,减少数据传输的延迟和丢失。进程和线程调优:优化系统的进程调度算法、减少进程和线程的竞争等,提高系统的并发性能和稳定性。系统优化的步骤:
  1、使用系统监控工具、性能测试工具等,收集系统的性能数据和指标,了解系统当前的运行状态,从而识别系统的瓶颈和优化空间。
  2、使用追踪工具进行追踪,定位到具体的应用程序和进程。
  3、根据定位到的应用程序和进程进行分析,分析导致出问题的原因,从而对内存、磁盘、CPU等方面进行优化。系统性能的相关概念:
  IOPS:InputOutputPerSecond。是指每秒钟可以进行的输入输出操作次数,是衡量存储设备性能的重要指标之一
  吞吐量:Throughput。系统在单位时间内能够处理的事务数量。
  响应时间:ResponseTime。系统从接收请求到返回结果所需的时间。
  带宽:Bandwidth。数据传输的速度,通常以每秒传输的比特数(bps)或字节(Bps)来衡量。
  延时:Latency。指从请求发出到收到响应所需的时间。
  瓶颈:Bottleneck。操作系统中限制系统性能的关键因素或资源。当系统中某个组件的处理能力达到极限,无法满足其他组件的需求时,就会出现瓶颈。
  工作负载:Workload。是指计算机系统中正在运行的应用程序或任务的集合。
  缓存:cache。缓存的作用就是用来提高系统性能的一种技术。
  CPU缓存::CPU缓存是一种硬件设备,通常是集成在CPU芯片中。CPU缓存分为三个级别,包括L1、L2和L3缓存,这些级别按照缓存大小和访问速度逐渐递减。用于存储CPU需要频繁访问的数据和指令,以便更快地执行计算任务。CPU缓存速度非常快,通常比内存缓存快几个数量级,因此能够大大提高计算机的运行速度。
  内存缓存:内存缓存通常是通过在系统内存中划分出一部分空间来实现的,这部分空间被称为缓存区。缓存区是由操作系统内核管理的,它在系统启动时就被分配出来,并在系统运行期间一直存在。
  当应用程序需要访问内存中的数据时,内存缓存会首先检查缓存区中是否已经缓存了该数据。如果已经缓存,则可以直接从缓存区中读取数据,从而避免了从内存中读取数据的时间和能耗。如果缓存区中没有该数据,则需要从内存中读取,并将数据存储到缓存区中以供下一次访问使用。
  缓冲:Buffer。缓冲通常是在内存中分配一块空间来实现的,这些空间被称为缓冲区。缓冲区是用于临时存储数据的区域,数据在这里被暂时保存并等待被进一步处理。
  如将数据从一个设备传输到另一个设备时,缓冲可以暂存数据,以防止数据在传输过程中丢失或损坏。因为如果发送方速度太快,接受方不能及时接收就会导致数据丢失。输入缓冲区(InputBuffer):用于存储输入设备(例如键盘、鼠标等)发送过来的数据,等待系统进一步处理。
  输出缓冲区(OutputBuffer):用于存储输出设备(例如打印机、屏幕等)接受数据,等待设备进行处理。
  文件缓冲区(FileBuffer):用于存储文件数据的内存区域,通过将文件数据缓存到内存中,可以减少访问磁盘的次数,提高文件读写的效率。
  磁盘缓存(DiskCache):用于存储磁盘上的数据,通过将常用的数据缓存到内存中,可以加速磁盘访问,提高系统的性能。Linux资源信息的监控
  通过对系统性能参数的监控和收集,了解当前系统的负载、CPU使用情况,内存使用、IO等信息。
  一:查看系统整体的信息:1、vmstat工具
  vmstat是系统自带的一个工具,vmstat主要查看的是内存和进程的使用情况,其它例如进程、系统IO、上下文切换这些信息也可以查看。
  例如:
  procs:显示进程的活动情况。
  r:正在运行的以及处于排队状态的线程数,这个值和进程有关系,如果值长期大于cpu的核数(lscpu查看cpu个数),说明cpu不够,任务运行的进程太多。
  b:进程阻塞的数量,阻塞状态就是一只处于排队状态。这个值长期大于0就表明cpu资源严重不够了。一直轮不到给你分配cpu
  memory:显示系统的内存使用情况。
  swap:交换分区使用了多少。0表示还没有任何使用,如果已经开始使用交换分区了,说明内存已经不够用了
  buff:缓冲区还剩多少单位为k,一般是往硬盘里面写的时候会占用这个值。
  cache:缓存还剩多少单位也是k
  swap:显示系统的交换空间使用情况。
  说明:si和so只要大于0,说明内存有问题了。例如内存泄露、内存不够等情况。
  si:swapinput:硬盘到交换分区的一个大小。
  so:swapoutput:从交换分区到硬盘的一个大小。
  io:显示系统的磁盘IO活动情况。
  bi:往硬盘里面写的一个值
  bo:往硬盘里面读的一个值。单位是k
  说明:如果系统的bi和bo值很大,说明io有问题。
  system:显示系统的CPU使用情况。
  in:中断的数目,
  cs:上下文切换的数目
  说明:如果系统中存在大量的上下文切换和终端,说明系统可能存在某些问题
  cpu:显示系统的CPU使用率。
  us:用户进程所消耗的时间
  sy:系统进程消耗的一个时间
  id:系统的空闲时间
  wa:硬盘io出现了阻塞,数据太多入口被堵死了。但是写不进去,所以就开始等待。如果wa这个值比较大说明cpu的资源够,但是io有问题导致浪费了cpu。
  st:在虚拟化的时候会用到。2、mpstat工具
  mpstat工具和vmstat不同点在于mpstat主要监视CPU使用情况,包括每个CPU的使用率、上下文切换、中断和软中断等信息。
  例如:
  CPU:显示每个CPU的编号,all表示所有的cpu
  usr:显示用户空间进程使用CPU的百分比。
  说明:如果usr较高,表示用户空间进程占用了大量CPU资源,可能是某个进程出现了问题或者某个进程需要更多的CPU资源。
  nice:显示优先级较低的用户空间进程使用CPU的百分比。
  sys:显示内核空间进程使用CPU的百分比。
  说明:如果sys较高,表示内核空间进程占用了大量CPU资源,可能是某个内核模块出现了问题或者某个进程在等待内核资源。
  iowait:显示CPU等待IO完成的百分比。
  说明:如果iowait较高,表示CPU正在等待IO操作完成,可能是磁盘、网络或其他IO设备出现了瓶颈。
  irq:显示CPU处理硬件中断的百分比。
  说明:如果irq较高,表示CPU正在处理大量硬件中断,可能是某个硬件设备出现了问题。
  soft:显示CPU处理软件中断的百分比。
  说明:如果soft较高,表示CPU正在处理大量软件中断,可能是某个进程出现了问题或者某个内核模块在处理大量请求。
  steal:显示被虚拟机偷走的CPU时间的百分比。
  guest:显示虚拟机使用CPU的百分比。
  idle:显示CPU空闲的百分比。
  说明:如果idle较低,表示CPU正在忙碌,可能是系统负载过高或者某个进程占用了大量CPU资源。3、iostat工具
  iostat主要监视磁盘IO使用情况,包括每个磁盘的读写速度、IO等待时间、IO请求队列长度等,主要使用iostat工具来了解系统磁盘IO使用情况,识别磁盘IO瓶颈和瓶颈进程。
  Device:sda1rs:458。09表示每秒从设备中读取的次数。rkBs:56330。40每秒读取的数据量,单位为KB。rrqms:0。63每秒从磁盘发出的读取请求队列的长度,单位为请求。rrqm:0。14表示从磁盘发出的读取请求占总读取请求的百分比。rawait:4。17表示读操作的平均等待时间,单位为毫秒。rareqsz:122。97平均每个读取请求的数据量,单位为扇区ws:67。28表示每秒向设备中写入的次数。wkBs:788。53每秒钟写的数量,单位是kbwrqms:54。32每秒从磁盘发出的写入请求队列的长度,单位为请求wrqm:44。67表示从磁盘发出的写入请求占总写入请求的百分比。wawait:6。75表示写操作的平均等待时间,单位为毫秒。wareqsz:11。72平均每个写入请求的数据量,单位为扇区ds:0。00dkBs:0。00drqms:0。00drqm:0。00dawait:0。00dareqsz:0。00aqusz:2。37请求队列的平均长度。util:96。96表示磁盘花费在处理请求的时间百分比经常超过80或90,则说明磁盘正在高负载下运行
  总结:
  当rs和ws、rkBs和wkBs、rawait和wawait等指标的值都很大,并且util的值也很高时,可以初步判断磁盘可能存在性能问题。4、sar工具:
  相比于vmstat和pmstat,star工具提供了更全面的系统性能监控和历史数据分析功能。可以将输出的信息重定向到一个文件里面,便于后续的分析。(1)查看CPU的使用情况:
  user:用户空间进程所占用CPU时间的百分比。nice:被nice值提高的用户空间进程所占用CPU时间的百分比。system:内核空间进程所占用CPU时间的百分比。iowait:CPU等待IO操作完成所占用CPU时间的百分比。steal:被虚拟化程序(如VMware)偷走的CPU时间的百分比。idle:CPU空闲时间的百分比。如果user和system占用率较高,可能表示系统负载较高,需要进一步检查进程、IO等情况。如果iowait占用率较高,可能表示IO瓶颈如果idle占用率较高,可能表示系统资源未充分利用(2)监视内存使用情况:
  kbmemfree:可用内存大小(单位:KB)kbmemused:已用内存大小(单位:KB)memused:已用内存占总内存的百分比kbbuffers:缓存的内存大小(单位:KB)kbcached:缓存的文件系统缓存大小(单位:KB)kbcommit:提交内存大小(单位:KB)commit:提交内存占总内存的百分比kbactive:活跃内存大小(单位:KB)kbinact:非活跃内存大小(单位:KB)kbdirty:脏页的内存大小(单位:KB)如果可用内存(kbmemfree)较少,已用内存(kbmemused)和已用内存占总内存的百分比(memused)较高,可能表示内存不足如果缓存的内存(kbbuffers)和缓存的文件系统缓存(kbcached)较高,可能表示系统的文件系统缓存良好如果提交内存(kbcommit)较高,可能表示应用程序提交的内存较多如果活跃内存(kbactive)和非活跃内存(kbinact)较高,可能表示系统当前运行的应用程序较多(3)监视磁盘IO使用情况:
  tps:每秒传输的IO请求数(包括读写请求)rtps:每秒读请求传输的IO请求数wtps:每秒写请求传输的IO请求数breads:每秒读取的数据块数量(单位:512字节)bwrtns:每秒写入的数据块数量(单位:512字节)如果tps较高,可能表示磁盘IO瓶颈如果rtps或wtps较高,可以进一步确认是读操作或写操作的问题如果breads或bwrtns较高,可能表示磁盘IO吞吐量不足(4)查看网络的基本信息:DEV
  主要查看的是接收和发送数据包的速率、接收和发送数据量的速率
  IFACE:网络接口名称。rxpcks:每秒接收的数据包数量。txpcks:每秒发送的数据包数量。rxkBs:每秒接收的数据量(KB)。txkBs:每秒发送的数据量(KB)。rxcmps:每秒接收的压缩数据包数量。txcmps:每秒发送的压缩数据包数量。rxmcsts:每秒接收的多播数据包数量。如果rxkBs和txkBs非常高,但ifutil非常低,则可能存在网络拥塞的问题如果rxcmps和txcmps非常高,可能存在数据压缩的问题。如果rxmcsts非常高,可能存在多播网络流量的问题。数据压缩:为了减少数据的传输量,可以对数据进行压缩。压缩的过程是将原始数据使用某种压缩算法进行编码,使其占用更少的带宽。(5)查看网络的错误信息EDEV
  可以查看网络设备的错误和丢包数。
  rxerrs:每秒接收的错误数。txerrs:每秒发送的错误数colls:每秒发生的冲突数。rxdrops:每秒接收的丢包数txdrops:每秒发送的丢包数。txcarrs:每秒发生的载波错误数。rxframs:每秒接收的帧错误数。rxfifos:每秒钟由于接收FIFO队列溢出而丢失的数据包数。txfifos:每秒钟由于发送FIFO队列溢出而丢失的数据包数。rxerrs或rxdrops的值很高,可能存在网络中的接收问题,例如硬件故障或网络拥塞等。txerrs或txdrops的值很高,可能存在网络中的发送问题,例如硬件故障或网络拥塞等colls的值很高,可能存在网络中的冲突问题,例如网络中存在多个设备尝试同时发送数据包使用场景总结:需要实时监控系统资源,可以使用vmstat和iostat需要对系统历史性能进行分析,可以使用sar分布式系统中进行性能分析和监控,则可以选择pmstat,因为分布式系统的性能监控比较复杂,pmstat的实时监控功能更灵活。如果只是想看看系统的状态,以上工具都可以。二:查看某个进程的资源占用信息:1、top
  用来实时显示实时地显示系统中所有进程的资源占用情况。
  在没有htop工具的情况下查看系统资源的信息。按下c快捷键将会显示进程的完整命令行参数。
  在top命令中按下快捷键盘’c‘之后。
  2、ps
  主要用来列出系统中所有进程的信息。
  例如:运行了某个脚本,查看脚本是否启动运行一个测试脚本ehighubuntu:bashtest。sh〔1〕21738查看这个脚本是否正常启动ehighubuntu:psefgreptest。shehigh2173814974011:04pts1900:00:00bashtest。sh3、htop
  ttop命令的一个增强版,可以实时地显示系统中所有进程的资源占用情况。
  4、pidstat
  实时地显示某个进程的CPU使用率、内存占用等。5、strace
  追踪某个进程的系统调用信息,可以捕获和打印出应用程序和内核之间发生的所有系统调用和信号,包括传递的参数和返回值,以及发生的错误。
  例如:查看执行某个命令的系统调用信息stracelsltmp查看某个进程的系统调用:查看pid为1435这个进程的系统调用sudostracep1435
  一般可以使用strace工具来查看某个进程读取了哪些文件,进程运行慢,时间都花费在了哪些地方以及系统的调用函数等。使用场景总结:如果想要查看系统进程和资源的占用情况,就使用top或htop。如果想要追踪某个进程的系统调用,调用耗时等信息就是用strace工具如果只是查看某个进程特定的详细信息,就使用ps工具,想要进行深入分析就是用pidstat工具。系统调优方法
  操作系统:操作系统是一个系统软件,操作系统的作用是管理和控制计算机硬件
  内核:内核是操作系统的核心部分,是操作系统管理计算机硬件和软件资源的核心代码。操作系统则由内核和其他系统工具程序共同组成的。例如文件管理器、用户界面、设备驱动程序等。
  程序:指的是一组计算机指令和数据,可以被计算机执行。程序是静态的,通常存储在硬盘或其他存储设备中,需要通过操作系统加载到内存中才能运行。
  进程:是计算机中正在运行的程序的实例。进程是操作系统中进行资源分配的基本单位。
  线程:是进程中的一个执行单元,是操作系统调度的最小单位。
  内核空间:内核空间是操作系统的核心部分,是操作系统内核运行的地址空间。内核空间是操作系统独占的,只有内核才能访问这个地址空间。
  用户空间:是程序运行的地址空间。用户空间是操作系统分配给应用程序的地址空间,应用程序可以在这个空间中运行和使用系统资源。
  进程和程序的关系:首先程序被加载到内存中,没有开始运行的时候,只是一组静态的代码和数据。当程序被操作系统调用并开始执行时,就成为了一个进程。一个进程里面包含了程序代码、数据、寄存器等系统资源,所以每个进程都是一个程序的实体,进程是操作系统中进行资源分配和调度的基本单位。
  两个虚拟文件系统:
  在Linux中,sys和proc是两个不同的虚拟文件系统,里面的信息都是动态生成的,因为这两个目录中的数据信息随着系统状态的变化而变化。这两个文件提供了操作内核数据的接口。
  proc文件系统:主要用于展示进程相关的信息,例如可以查询内核状态和进程信息,例如CPU、内存、网络、硬件等系统信息。
  sys文件系统:则用于展示设备和内核参数的信息。sys中不包含进程的信息,只有系统的状态和设备信息。
  说明:修改了procsys中的参数后可以通过sysctl工具来实现持久化配置。修改了sys中的信息不能使用sysctl工具来持久化配置,需要写入到etcrc。locl这个文件中实现持久化配置。
  例如:echodeadlinesysblocksdaqueuescheduler就需要放到etcrc。locl中。一:限制和控制进程的资源使用1、ulimit工具
  进程资源限制和控制的内容:进程的最大CPU时间进程可以使用的最大虚拟内存进程可以使用的最大物理内存进程可以打开的最大文件数进程可以创建的最大子进程数等等
  使用ulimit工具进行资源限制的时候有两种方式:
  方式一:通过在etcsecuritylimits。conf中修改资源限制,这样设置重启也会生效,可以针对系统中的所有用户或特定用户进行设置。
  例如:显示当前用户进程的所有限制信息ehighubuntu:ulimitacorefilesize(blocks,c)0datasegsize(kbytes,d)unlimitedunlimited表示不限制schedulingpriority(e)0filesize(blocks,f)unlimited文件的最大大小,一个block4kbpendingsignals(i)47424maxlockedmemory(kbytes,l)65536maxmemorysize(kbytes,m)unlimitedopenfiles(n)65535一个进程可以同时打开的最大文件数pipesize(512bytes,p)8POSIXmessagequeues(bytes,q)819200realtimepriority(r)0stacksize(kbytes,s)8192cputime(seconds,t)unlimitedmaxuserprocesses(u)4096一个用户可以创建的最大进程数。virtualmemory(kbytes,v)unlimited虚拟内存的最大大小filelocks(x)unlimited如果要查看指定进程的限制信息需要使用p参数指定进程的pid例如:ehighubuntu:ulimitap1表示查看进程为1的进程及其子进程的限制信息
  例如:调整当前shell中某个进程的资源限制信息限制当前shell进程及其子进程的资源信息c:设置进程的核心转储文件大小限制,单位为字节。核心转储文件(coredumpfile)是指在程序崩溃或异常终止时,系统保存的程序内存映像文件,通常用于分析和调试程序崩溃的原因。例如,要将当前进程的核心转储文件大小限制设置为10MB,可以使用命令:ulimitc10000000m:设置进程的最大内存限制,单位为KB。例如,要将当前进程的最大内存限制设置为1GB,可以使用命令:ulimitm1048576n:设置进程可以打开的最大文件数。例如,要将当前进程可以打开的最大文件数设置为2000,可以使用命令:ulimitn2000u:设置进程可以创建的最大用户进程数。例如,要将当前进程可以创建的最大用户进程数设置为100,可以使用命令:ulimitu100限制指定的进程需要使用p参数例如:将进程ID为12345的进程的最大打开文件数限制设置为1000,命令为:ulimitn1000p12345
  说明:使用ulimita命令查看资源限制信息时,显示的是当前用户(也就是执行该命令的用户)的资源限制信息,
  例如:如果使用root用户登录Linux系统,并在一个shell终端下执行ulimita命令,则显示的是root用户的资源限制信息。
  假设在这个shell终端下限制只能开启10个进程,超过了10个就会受到限制。
  但是如果root用户在另外一个shell终端下执行相同的命令,不会受到在另一个终端中设置的资源限制信息影响。
  如果在。bashrc或etcprofile中进行设置了,另外终端在该用户登录的时候会加载里面的配置,配置就会生效。
  方式二:直接在命令行进行修改资源限制,只能针对当前shell会话的用户生效。当会话结束时,修改会自动恢复到默认值。持久化生效需要在在环境变量中进行添加。(例如。bashrc或etcprofile)中设置,每次用户登录时都会加载这些环境文件并应用资源限制。格式各列之间用空格或Tab键分隔。domaintypeitemvalue说明domain:需要对哪些用户或者组进行限制tom:表示对tom这个用户生效tom:表示对tom这个用户组都生效type:指定资源限制的类型,一般使用两种,soft和hardsoft:软限制,超过限制值就警告hard:硬限制,效果限制值就拒绝unlimited,表示无限制。item:指定要限制那种资源nofile:最多可以打开多少个文件nproc:可以创建的最大进程数fsize:单个文件的最大大小限制(单位:KB)value:指定限制的值unlimited,表示无限制例如:tomhardnproc300将用户tom的进程数量硬性限制为300个,也就是说,一旦用户tom创建的进程数超过了300个,系统就会拒绝创建新的进程并返回错误信息。2、PAM
  PAM模块是一种Linux系统的身份验证框架。它允许管理员在登录过程中通过使用各种模块来实现不同的身份验证方式。PAM还可用于对访问系统的用户进行授权,以及在用户登录或注销时执行各种操作。
  PAM的使用场景:限制用户访问、控制远程访问、限制资源使用、实现单点登录等。3、cgroup
  是一种Linux内核特性,用于限制、隔离和管理进程组的资源使用。以使用cgroup来限制进程的CPU、内存、IO等资源使用,以及隔离进程组并防止它们对系统的其他部分造成干扰。
  使用场景:限制某个用户或进程的资源使用、限制Docker容器的资源使用、限制服务器上运行的某个应用程序的资源使用等。
  使用场景说明:
  PAM、cgroup和ulimit不会相互排斥,可以结合使用。如果需要对用户进行身份验证,限制用户对系统资源的访问,或者实现单点登录等功能,可以使用PAM。如果需要限制某个用户的进程可以打开的文件数量、可以使用的CPU时间等,可以使用ulimit。如果需要限制某个进程或容器的CPU使用率、内存使用量、网络带宽等,可以使用cgroups。二:CPU的优化方法1、设置CPU的亲和性
  使用场景:系统中的CPU资源较为紧张,或者应用程序的负载不均衡,可以考虑使用CPU亲和性设置来优化CPU资源的利用
  通过taskset命令进行设置CPU的亲和性,该命令可以将进程或线程绑定到指定的CPU核心上,以提高程序的性能和可靠性。
  例如,以下命令将进程ID为1234的进程绑定到CPU核心0和1上:tasksetc0,1p12342、调整CPU的调度策略
  默认的CFS策略已经能够满足日常需求,如果在某些特定的情况下可以改变调度策略来进行优化,例如高负载、需要实时响应等场景。
  实现方法:需要编译内核加上对应的驱动程序,风险极大。3、调整时间片大小
  场景:如果应用程序需要更快的响应时间,可以考虑减小时间片大小。
  实现方法:需要编译内核启用对cpu时间片大小修改的支持,风险极大。
  缺点:会增加系统的开销,可能会降低系统的整体性能,因为需要增加系统上下文的切换次数。4、调整CPU的迁移开销
  场景:通过CPU迁移开销的调整,可以提高系统的负载均衡和响应速度
  实现方法:也是需要编译内核加上对应的驱动程序才可以,通过修改对应的值来调整CPU的迁移开销。修改内核风险极大。
  缺点:减小CPU迁移开销可能会导致更频繁的CPU迁移,从而增加系统的开销和延迟,导致进程的局部性和缓存效率下降,从而降低系统的整体性能。二:内存的优化方法:1、优化对swap分区的使用
  swap分区是一块硬盘空间,用于存放内存中不常用的数据。在Linux系统中,合理设置swap分区的大小可以有效地提高系统的稳定性和性能。因为swap分区的速度太慢,一般都是直接关闭swap分区的使用。
  关闭swap分区的方法:swapoffa临时关闭2、调整虚拟内存参数
  如果一定要使用swap分区,可以通过调整procsysvmswappiness的值为0来确保尽量使用物理内存。1。修改内核参数ehighubuntu:sudovimetcsysctl。confvm。swappiness602。生效ehghubuntu:sysctlp3、调整脏页的最大内存量
  脏页是指已被修改但尚未写入磁盘的内存页。内核使用dirtybytes值来确定何时开始刷新脏页到磁盘。
  调整页面缓存的大小(procsysvmdirtybytes),提高系统的性能。
  优化建议:系统有足够的内存和IO资源,可以增加dirtybytes的值,以减少频繁写回磁盘的次数,从而提高性能统资源不足,可以降低dirtybytes的值,以避免过多的脏页面积累,从而避免系统性能下降或内存耗尽。
  优点:增大脏页数据的值可以减少磁盘IO和提高提高内存利用率,因为当系统中存在大量可用内存时,增加dirtybytes值可以让内核将更多的脏页存储在内存中,提高内存利用率。
  缺点:如果内存不足会导致系统性能下降,可能会造成磁盘IO洪水,如果断电未写入磁盘的脏页数据可能会丢失。
  例如:将页面缓存得大小改为1G1。修改内核参数ehighubuntu:sudovimetcsysctl。confvm。dirtybytes1073741824将脏页的内存量调整为1G2。生效ehighubuntu:sysctlp4、使用内存缓存
  tmpfs:tmpfs是一种基于内存的文件系统,tmpfs中的数据不需要将数据写入硬盘,因此可以获得更快的文件读写速度。
  例如:1。创建挂载点mkdirmntcache2。挂载tmpfs文件系统mountttmpfsosize2Gtmpfsmntcache3。将需要进行缓存的文件或目录复制到挂载点目录下cprpathtofilesmntcache4。应用程序或脚本中的文件路径修改为挂载点目录下的路径5。当文件读取或写入完成后,可以通过rsync等工具将缓存中的文件同步到硬盘上,从而避免数据的丢失。rsyncamntcachepathtofiles
  内存缓存适用的场景:
  (1)Web服务器:在Web服务器中,通常会缓存静态文件(如CSS、JavaScript、图片等),以提高网站的性能和响应速度。使用tmpfs作为内存缓存,可以将这些静态文件缓存到内存中,提高数据读取速度,减轻磁盘负载。
  (2)数据库服务器:在数据库服务器中,经常需要将一些数据放在内存中进行缓存,以提高查询性能。使用tmpfs作为内存缓存,可以将这些数据缓存到内存中,避免频繁的磁盘IO操作,提高查询性能。
  (3)虚拟机:在虚拟机环境中,可以使用tmpfs作为内存缓存,以提高虚拟机的磁盘IO性能。例如,可以将虚拟机的磁盘镜像文件(如vmdk、qcow2等)缓存到tmpfs中,避免频繁的磁盘IO操作。5、配置大页
  大页是一种特殊的内存页,它的大小通常是默认页大小的几倍,比如2MB或者1GB。
  在内存充足的情况下,可以提高Linux系统的性能。使用大页可以减少内存页表的大小,从而提高内存访问的效率。对于一些需要频繁访问内存的应用程序(比如数据库),启用大页可以显著提高性能。
  例如:运行虚拟机的时候配置大页能显著提升性能。
  如果内存小配置大页会降低系统的性能。
  配置实现流程:1。查看是否开启大页功默认情况下,已经开启了透明大页功能:rootubuntu:catsyskernelmmtransparenthugepageenabledalways〔madvise〕never2。查看大页的数目默认为0rootubuntu:catprocsysvmnrhugepages0也可以通过下面的方法查看rootubuntu:catprocmeminfogrepiHugepAnonHugePages:0kBShmemHugePages:0kBFileHugePages:0kBHugePagesTotal:0大页的总数为0HugePagesFree:0前可用的大页数HugePagesRsvd:0HugePagesSurp:0Hugepagesize:2048kB3。设置大页的数量表示使用2000个2M大小的大页echo2000procsysvmnrhugepages挂载大页mountthugetlbfsnodevPATH查看是否正常挂载catprocmountsgrephugetlbfs6、脏数据的回收
  脏数据就是对内存中已被修改但尚未写入磁盘的数据进行回收。
  脏数据自动回收:
  通过修改vm。dirtyexpirecentisecs和vm。dirtywritebackcentisecs的值来调整脏数据回收的时间间隔。脏数据在内存中存留的时间,单位为1100秒ehighmaster1:catprocsysvmdirtyexpirecentisecs3000脏数据的写入间隔时间,单位为1100秒ehighmaster1:catprocsysvmdirtywritebackcentisecs500
  脏数据手动回收:
  使用sync命令将内存中的所有脏数据写回磁盘,以减少数据丢失或损坏的风险。
  sync命令会强制将文件系统中所有修改过的数据缓存写回磁盘,包括脏数据和元数据。
  如何调整脏数据回收的时间:如果追求系统的性能,可以把vm。dirtyexpirecentisecs和vm。dirtywritebackcentisecs的值改大,减少磁盘IO的操做。如果追求数据的安全性,可以把vm。dirtyexpirecentisecs和vm。dirtywritebackcentisecs的值改小,防止数据丢失。7、清理缓存
  只有在应用程序出现崩溃或无响应的情况,系统出现内存不足或无法为应用程序分配足够的内存中各种情况可以考虑清理缓存,以确保系统的正常运行。
  注意:清空缓存可能会导致系统性能下降,因为需要重新从磁盘读取数据。因此,在清空缓存之前,需要仔细考虑清空缓存的必要性,并确保系统有足够的内存来重新缓存数据。
  例如:free非常小,而available比较大,说明系统正在使用大量的缓存来提高性能,并且这些缓存可以被重新分配给新的进程或应用程序,这种情况清理缓存会影响性能。
  清空文件系统缓存:ehighubuntu:sudosyncecho3procsysvmdropcaches
  清空内存缓存:ehighubuntu:sudoecho1procsysvmdropcaches三:磁盘的优化方法:1、挂载参数优化
  在挂载硬盘时,使用noatime选项可以避免在每次读取文件时更新文件的访问时间,减少磁盘IO操作,提高硬盘性能。在etcfstab文件中添加noatime选项即可。2、选择合适的文件系统
  对于大量小文件的读写,使用ext4文件系统可能比使用XFS文件系统更适合。3、根据不同的场景选择磁盘调度算法
  在Linux系统中,磁盘的三种调度算法分别为CFQ、Deadline和NOOP
  CFQ调度算法
  Linux系统默认的磁盘调度算法,会根据每个进程的优先级和历史IO请求时间来计算每个队列的权重,然后按照权重顺序调度IO请求。
  使用场景:适合多任务环境下的桌面系统和服务器系统。例如Web服务器、数据库服务器
  Deadline调度算法
  将IO请求分为两类:实时IO请求和普通IO请求。实时IO请求是指需要立即响应的请求,例如鼠标、键盘输入等。普通IO请求是指需要等待一定时间才能得到响应的请求,例如文件读写操作等。
  将实时IO请求插入到队列头部,优先处理;对于普通IO请求,则会设置一个截止时间(deadline),在此之前尽可能地处理请求。
  使用场景:适合需要响应速度较快的应用程序,例如实时音视频应用、游戏等。
  NOOP调度算法
  一种简单的调度算法,它不会对IO请求进行排序或调度,而是按照请求的先后顺序依次处理。在高负载的情况下,NOOP调度算法可以减少CPU的消耗,但是在磁盘较忙的情况下可能会导致响应时间较长。
  使用场景:适合低负载的系统,例如桌面系统或者轻负载的服务器系统。或者SSD磁盘
  修改磁盘调度算法:sysblockqueuescheduler文件
  例如:1。编辑内核参数的配置文件sudovimetcdefaultgrub2。找到GRUBCMDLINELINUXDEFAULT行,并在双引号中添加要修改的内核参数,elevatorcfq表示调度算法设置为cfqGRUBCMDLINELINUXDEFAULTquietsplashelevatorcfq3。更新GRUB配置sudoupdategrub4。重启系统sudoreboot注意:内核参数是区分大小写,写调度算法名称的时候需要全部小写例如:elevatordeadlineelevatorcfqelevatornoop查看当前磁盘使用的调度算法rootecs17460001:sysblockcatsysblockvdaqueuescheduler〔mqdeadline〕none方括号中的算法名称表示当前生效的调度算法。4、设置预读取数据的大小
  默认情况下,Linux内核会自动根据设备类型和性能来选择合适的预读取大小。
  通过设置块设备的预读取数据大小sysblockvdaqueuereadaheadkb,以加快读取速度。磁盘缓存的默认大小是128kbrootecs17460001:catsysblockvdaqueuereadaheadkb128
  预读取大小的设置规则:
  一般预读取大小在64KB到256KB之间是比较合适,如果太小浪费磁盘IO,太大浪费内存资源。高速SSD设备,预读取的大小页不要超过1MB。5、优化磁盘碎片
  磁盘碎片是指硬盘上存储的文件在写入和删除过程中被分割成不连续的片段,使得文件在硬盘上的物理位置不再是连续的。所以导致磁盘的读写速度变慢。
  查看和清理磁盘碎片:
  ext4文件系统:查看是否存在磁盘碎片ehighubuntu:sudodumpe2fsdevsda1清理磁盘碎片清理sda1的磁盘碎片ehighubuntu:sudoe4defragdevsda1
  xfs文件系统:查看是否存在磁盘碎片ehighubuntu:sudoxfsdbcfragdevsda1清理磁盘碎片ehighubuntu:sudoxfsfsrdevsda1四:对网络进行优化:1、调整TCPIP参数来优化网络
  Linux系统默认的TCPIP参数适用于多数情况,但是对于高负载或者高流量的应用需要调整TCP窗口大小、最大并发连接数、最大传输单元(MTU)等参数。
  例如:如果需要处理10000个并发连接,可以将这两个参数设置为10000:echo10000procsysnetipv4tcpmaxsynbacklogTCP最大连接数,默认是1024echo10000procsysnetcoresomaxconn最大同步连接数,默认是10242、开启TCP的快速连接机制
  在Linux内核版本3。7及以上,TCP快速打开已经默认启用。CP快速打开可以减少TCP三次握手的时间,从而提高连接速度和性能。
  例如:rootecs17460001:echo2procsysnetipv4tcpfastopen0:禁用TCPFastOpen功能。1:启用TCPFastOpen客户端功能,但不启用服务器端功能。这是默认值。2:启用TCPFastOpen客户端和服务器端功能。3、启用TCP拥塞控制算法
  例如,Cubic、Reno、BIC等。选择适合自己应用的拥塞控制算法可以提高网络性能和稳定性。
  Cubic算法:更为适用于高延迟、高带宽的网络环境
  Reno算法:适合传输速度相对较快,延迟较低,丢包率也较低的网络环境当前系统中可用的TCP拥塞控制算法rootecs17460001:catprocsysnetipv4tcpavailablecongestioncontrolrenocubic设置TCP拥塞控制算法rootecs17460001:echocubicprocsysnetipv4tcpcongestioncontrol持久化设置rootecs17460001:vimetcsysctl。confnet。ipv4。tcpcongestioncontrolcubic4、调整网络缓冲区大小
  Linux系统默认的网络缓冲区大小适用于大多数情况,但是对于高负载或者高流量的应用,需要调整增大套接字缓冲区大小、读写缓冲区大小等。
  例如:如果需要处理大量的网络流量,可以将这些参数设置为较大的值echo16777216procsysnetcorewmemmaxecho16777216procsysnetcorermemmaxecho16777216procsysnetcoreoptmemmax5、禁用IPv6
  如果没有使用IPv6,禁用IPv6协议,从而减少网络连接的负载。
  禁用IPV6:rootecs17460001:vimetcsysctl。confnet。ipv6。conf。all。disableipv61net。ipv6。conf。default。disableipv61rootecs17460001:sysctlp6、TCP窗口大小
  通过修改窗口的大小,提升网络的传输速度和网络性能。
  例如:sudovimetcsysctl。confnet。ipv4。tcpwindowscaling1启用TCP窗口扩展功能net。ipv4。tcprmem40961310726291456最小值、默认值和最大值net。ipv4。tcpwmem40961638441943047、调整连接队列和最大连接数
  如果TCP的连接队列太小,就会导致客户端连接请求被拒绝,如果连接队列太大,就会占用过多的内存资源
  如果TCP的最大连接数设置得太低,会导致系统无法支持足够的并发连接,从而导致系统响应变慢或者连接超时。
  调整TCP的连接队列和最大连接数:查看当前系统的最大连接数:查看当前的TCP最大连接数是否接近系统的最大连接数,如果接近就修改为一个更大的值。ssngreptcpgrepESTABLISHEDwcl查看TCP的最大连接数默认TCP的最大连接数是256ehighubuntu:catprocsysnetcoresomaxconn256设置TCP的最大连接数ehighubuntu:sudosysctlwnet。core。somaxconn2048设置TCP的连接队列一般设置为最大连接数的两倍sysctlwnet。core。somaxconn1024

中国股市历史或将再次重演,再次一地鸡毛谁来为散户买单?中国股市:历史或将再次重演,再次一地鸡毛谁来为散户买单呢?在过去的30年里,中国股市一直以中小散户投资者为主,由于投资者投资观念不成熟、参与者交易行为不规范等原因;……刀背岭到底有多难,自己试试才知道昨天天气特别不好,没有爬山计划,只想去遛遛弯探探路,看看好奇了两年多的刀背岭到底是什么样子,不难就上,难就返回。搜了一个驴友的线路轨迹,按轨迹找到了起点,才发现不是路,而是一堵……众多国际友人支持,为何我国不申办04年奥运会?只能说我们更务我是棠棣,一枚历史爱好者。欢迎大家【关注】我,一起谈古论今,纵论天下大势。君子一世,为学、交友而已!1993年北京首次申奥的失利,引起了许多国际奥委会委员的不满,他们纷纷……欧文库里缺阵,杜兰特53分单核带队赢下纽约德比凯文杜兰特大发神威,砍下个人赛季新高的53分,带领篮网主场110107击败尼克斯,赢得纽约德比。欧文因为疫苗限令无法出赛,但来到现场观战,塞斯库里也因为脚踝伤势缺阵,杜兰……王曼昱孙颖莎女双3比0强势横扫,成功跻身八强,何卓佳女单过关北京时间3月14日消息,世界职业乒乓球大联盟(WTT)新加坡大满贯进入到正赛第四日争夺。女双18决赛,世乒赛冠军王曼昱孙颖莎发挥出色,以3比0击败中国台北组合郑先知刘馨尹,晋级……库里伤退,凯尔特人大胜勇士塔图姆布朗52197北京时间3月17日,勇士主场迎战凯尔特人,目前勇士排名西部第3,凯尔特人排名东部第4。本场比赛对勇士最大的伤害,不是勇士输球了,而是库里在第二节抢球中被斯玛特压伤脚踝,然后就没……从早晨到黄昏假日出行十月二日,国庆假期第二天,天刚蒙蒙亮,儿子就起床了,喊着问今天去那玩。儿子今年十六岁,国庆学校放假,心早已经飞向了远方。这两天我也没有出去拉活。去哪呢,最后……老人那些假疼娃的表现,不但家长要分清,还得让孩子心里有数都说隔辈亲,老人对孙辈的疼爱,比起父母来,有过之而无不及。但是,也有例外的存在。有些老人会摆在明面儿上,自己是不疼孙辈的,这种,父母反倒好处理。但是还有一类老……李嘉诚又跑了?就在不久前有媒体爆出李嘉诚已经开始降价抛售他旗下的英国电力公司,就连接手公司的人都有人选了,他又要从英国跑路了。想了解李首富的种种资本手段,首先得理解商人的本质,李嘉诚的……中准网宇宙民科为什么和相对论过不去,因时空扭曲虫洞太妄想一、各种公式的正确性基本毋庸置疑,要质疑某个公式的正确性都是极其困难以及没有必要的,除非能确切的测量或观察到与该公式相悖的证据,采用反证法来推翻公式,否则,有点庸人自扰。……高价倒卖正版冰墩墩?不行本文作者:塔娜北京在明律师事务所(此处已添加小程序,请到今日头条客户端查看)近期,随着北京冬奥会赛事的顺利进行,我国健儿们顽强拼搏的精神感染了广大中国人民,群众的热情空前……哪有什么高血压?不过是血行郁滞罢了,中医一扩一疏,防治高血压人一旦上了年纪身体就会出现各种各样的毛病,全身器官也逐渐老化,随之而来的就是高血压、冠心病、高血脂等老年疾病。高血压是现代医学上的称呼,中医则将其归属于头痛眩晕的范畴,归根结底……
关注自动驾驶照进现实,Cruise在美国邀请乘客体验机器人出文:懂车帝原创邢秋鸿〔懂车帝原创行业〕近日,据国外媒体报道,通用汽车旗下自动驾驶汽车子公司Cruise正在邀请凤凰城和奥斯汀的潜在乘客加入等候名单,成为首批Cruise机……石村人都有石村人的记性石村人都有石村人的记性,石村人都有石村人的习惯。石村人只有睡觉的时间没有吃饭的时间。石村人抬头看天低头看地想怎么度过余生,石村人想到自己的亲人自己的幻想就想大哭一场……有很多病,都是我们自己吃出来的药物真正的作用在于控制疾病而不是调理和恢复健康。其实,这一点也正是现代医学的最大贡献,在手术、急救、疾病控制方面只能通过药物来完成。不是说药不好,生了病也还是要看医……大叔穷游记第34篇不走寻常路第34篇:不走寻常路今天是3月26日,穷游第37天。昨天在高处俯瞰了梯田,今天我突发奇想,想走进梯田里瞧瞧。于是,我就跟客栈老板打听、跟当地村民打听,愣是打探出一条……留给造车新势力的时间不多了出品虎嗅汽车组作者王笑渔编辑周到头图《大空头》知乎上有一个浏览量超150万的提问BBA在电动时代会跌落神坛吗?这其中,就有一条高赞的回答给出的判断……39岁离开快本的吴昕,她终于做回了自己,成了香饽饽《快乐大本营》停播了,当粉丝们知道这一信息后,发出很多感慨。有网友说:快本本来就是娱乐,看的人觉得快乐这就是娱乐的意义,茶余饭后笑一笑放松放松。喜欢看的就看看,不喜欢看的……科学家隐瞒了轮回?我们所有人都有分身,死亡其实是新生?一直以来,对于人死了以后,还会有轮回的说法,争议很大。有的人认为这是迷信的说法。因为人死灯灭,不仅没有了思维意识,肉体也会消失。但是有的人认为,人死了以后,有可能是一个新的开始……库峪的春游库峪的春游半月前刚从远处小游回来,断续的春雨过后,周围树木的绿又多了几层,在这勃发的季节,又想起春季里的逍遥,便和妻子商量,远处地方的桃花油菜花大概巅峰已过,花看半开时,……战锤40K行商浪人新预告预计年内A测今日(11月11日),OwlcatGames公布CRPG新作《战锤40K:行商浪人》最新预告好,该作尚未公布发售日期,预计于年内进行A测,感兴趣的玩家可以进入官方页面。宣……全国有3个滕王阁,许多人只知其一,不知其二豫章故郡,洪都新府。星分翼轸,地接衡庐。襟三江而带五湖,控蛮荆而引瓯越。物华天宝,龙光射牛斗之墟;人杰地灵,徐孺下陈蕃之榻。这是千古名篇《滕王阁序》中的……伪装者明楼的一句话,揭露了明镜终身不嫁的苦与痛明台大学还没毕业,明镜就帮他筹办终身大事。看着明台和程锦云交换结婚戒指的那一刻,明镜是全场最开心的那个人,以至于她控制不住自己,流下幸福的眼泪。解决了明台的婚事,明……你的鞋柜一定缺少这款丹宁LVSquad路易威登全新女士鞋履系列,谱写斑斓序章。路易威登LVSquad系列运动鞋是由大名鼎鼎的女装艺术总监NicolasGhesquire打造的,本款LVSquad运动鞋以Monogr……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网