Linux系统调优实践案例分享 (linux系统调优案例)

Linux系统是开源的、免费的操作系统,因此受到了广泛的应用和推崇。不过,Linux系统默认的配置不一定适合所有的使用场景,因此需要进行系统调优。下面,我们将分享一些Linux系统调优实践案例,帮助大家更好地理解Linux系统调优。

案例一:优化CPU负载

在某些场景下,Linux系统可能会出现CPU负载高,导致系统运行缓慢的情况。我们可以使用top或htop等工具查看进程负载情况,然后找到占用CPU资源较多的进程,并停止或修改这些进程,从而优化CPU负载。

在某些情况下,无法停止这些占用CPU资源较多的进程,这时可以将它们迁移到其他CPU核心上执行,从而优化系统性能。我们可以使用taskset命令将进程绑定到指定的CPU核心上,如下:

taskset -c 1,3,5,7 ./process

这个命令将进程绑定到CPU的1、3、5、7核心上执行。

案例二:优化内存使用

Linux系统默认的内存使用方式是将空闲内存分配给内核缓存。当应用程序需要内存时,内核缓存会被清空,从而释放出空间。但是,在某些情况下,内核缓存占用了太多内存,导致应用程序无法获取足够内存,从而影响系统性能。我们可以通过以下方式优化内存使用:

– 调整内核缓存占用的内存大小,可以使用sysctl命令修改vm.dirty_background_ratio、vm.dirty_ratio参数,限制内核缓存使用的内存大小。

– 减少进程内存使用,可以通过修改进程配置文件限制它们的内存使用。

– 进行内存操作时,可以使用大页内存,从而优化内存使用性能。

案例三:优化磁盘IO性能

Linux系统默认使用一些磁盘IO调度算法来管理IO请求,如CFQ、NOOP、DEADLINE等。在某些情况下,这些算法无法适应高IO负载的运行环境,需要进行调优。以下是几种优化磁盘IO性能的方法:

– 调整IO调度算法,可以使用echo [算法] > /sys/block/[device]/queue/scheduler命令将IO调度算法设置为自己需要的算法,如deadline、noop等。

– 调整IO请求队列长度,可以通过修改/sys/block/[device]/queue/nr_requests参数设置IO请求队列的长度。

– 使用RD或LVM等技术,可以将多个硬盘组成逻辑卷,从而提高磁盘IO性能。

本文分享了几个优化Linux系统的实践案例,包括CPU负载优化、内存使用优化、磁盘IO性能优化。这些案例只是Linux系统调优的冰山一角,更多的优化方法需要根据具体情况进行实践。希望本文对大家了解Linux系统优化有所帮助。

相关问题拓展阅读:

  • linux apache 性能调优 8G 8核 的服务器
  • linux的架构是怎样优化的
  • 固态硬盘在linux下怎么优化

linux apache 性能调优 8G 8核 的服务器

我用的是小鸟云的服务器,感觉还不错。

为了得到完整的调试结果,建议你采用 ApacheBench 或者 httperf之类的软件。如果你对非 LAMP 架构的服务器测试有兴趣的话,建议你采用微软的免费软件: Web Application Stress Tool(需要 NT 或者 2023)。 (其它服务器测试工具)

检测 Apache ,采用 top d 1 显示所有进程的 CPU 和内存情况。另外,还采用 apachectl status 命令

1、升级硬件的一般规则:对于 PHP 脚本而言,主要的瓶颈是 CPU ,对于静态页面而言,瓶颈是内存和网络。一台 400 Mhz 的普通奔腾机器所下载的静态页面就能让 T3 专线(45Mbps)饱和。

2、采用 hdparm 来优化磁盘,一般能提升 IDE 磁盘读写性能 200%,但是对 SCSI 硬盘也有效果。(不同类型的硬盘对比)

3、Apache 处理 PHP 脚本的速度要比静态页面慢 2-10 倍,因此尽量采用多的静态页面,少的脚本。

4、PHP 脚本如果不做缓冲,每次调用都需要编译,因此,安装一个 PHP 缓冲产品能提升% 的性能。

5、如果你采用了 Linux 系统,建议升级内核到 2.4,因为静态页面由内核服务。

6、另外一项缓冲技术是把不常修改的 PHP 页面采用 HTML 缓冲输出。

7、不要在 Web 服务器上运行 X-Windows ,关掉没有必要运行的进程。

8、如果能够用文本槐旁就不要用图像差升,尽量减小图片的尺寸。

9、分散负载,把数据库服务器放到另外的机器上去。采用另外低端的机器服务图片和 HTML 页面,如果所有的静态页面在另外一台服务器上处理,可以设置 httpd.conf 中的 KeepAlives 为 off ,来减少断开连接的时间。

10、以上所有的方法都是针对单机而言的,如果你觉得系统还是不够快,可以采用集群,负载均衡,缓冲技术。采用 Squid 作为缓冲,配置 Squid 的方法。

11、把基于文件的会话切换到基于共享内存的会话。编译 PHP 时采用 –with-mm 选项,在 php.ini 中设置铅庆橡 set session.save_handler=mm 。这个简单的修改能让会话管理时间缩短一半。

12、采用最新版本的 Apache ,并把 PHP 编译其中,或者采用 DSO 模式,不要采用 CGI 方式。

13、编译 PHP 时,建议采用如下的参数:

–enable-inline-optimization –disable-debug

14、修改 httpd.conf : 

# 关闭 DNS lookups,PHP 脚本只拿 IP 地址

HostnameLookups off

15、如果网络拥挤,CPU 资源不够用,采用 PHP 的 HTML 压缩功能:

output_handler = ob_gzhandler

PHP 4.0.4 的用户请不要使用,因为存在内存泄漏问题。

16、修改 httpd.conf 中的 SendBufferSize 为你更大的页面文件的大小。加大内核的 TCP/IP 写缓冲大小。

17、采用数据库的持久连接时,不要把 MaxRequestsPerChild 设置得太大。

18、如果喜欢从修改 Apache 源码入手,可以安装 lingerd。在页面产生和发送后,每个 Apache 进程都会浪费一段时光在客户连接上,Lingerd 能接管这项工作,让 Apache 迅速服务下一个客户请求。

19、如果你足够勇敢的话,还可以采用 Silicon Graphics 的 Accelerated Apache 补丁。这个工程能使 Apache 1.3 快 10 倍,使 Apache 2.0 快 4 倍。

安装一个 PHP 缓冲产品能提升% 的性能。

1.清理服务器磁盘碎片:

不论Linux文件系统采用什么文件格式(ext3、JFS、XFS、ReiserFS )、何种类型的硬盘(IDE 、SCSI),随着时间的推移文件系统都会趋向于碎片化。ext3、JFS等高级文件系统可以减少文件系统的碎片化,但是并没有消除。在繁忙的数据库服务器中,随着时间的过去,文件碎片化将降低硬盘性能,硬盘性能从硬盘读出或写入数据时才能注意到。时间长了会发现每个磁盘上确实积累了非常多的垃圾文件,释放磁盘空间可以帮助系统更好地工作。Linux更好的整理磁盘碎片的方法是做一个完全的备份,重新格式化分区,然后从备份恢复文件。但是对于7×24小时工作关键任务服务器来说是比较困难的。Kleandisk是一个高效的磁盘清理工具,它能把磁盘上的文件分成不同的”组”,比如把所有的”core”文件归成一组(Group),这样要删除所有core文件时只要删除这个组就行了。core文件是当软件运行出错时产生的文件,它对于软件开发人员比较有用,对于其他用户(比如电子邮件服务器)却没有任何意义。因此,如果没有软件开发的需要,见到core文件就可以将其删除。

2、开启硬盘DMA

现在使用的IDE硬盘基本支持DMA66/100/133(直接内存读取)但是Linux发行版本安装后一般没有打开,可以 /etc/rc.d/rc.local 最後面加上一行: /in/hdparm -d1 –x66 -c3 -m16 /dev/hda 这样以后每次开机,硬盘的 DMA 就会开启,不必每次手动设定。添加前后你可以使用命令:hdparm -Tt /dev/hda 来测试对比一下。

3、调整缓冲区刷新参数

Linux内核中,包含了一些对于系统运行态的可设置参数。缓冲刷新的参数可以通过调整 /proc/sys/vm/bdflush文件来完成,这个文件的格式是这样的:

每一栏是一个参数,其中最重要的是前面几个参数。之一个数字是在”dirty”缓冲区达到多少的时候强制唤醒bdflush进程刷新硬盘,第二个数字是每次让bdflush进程刷新多少个dirty块。所谓dirty块是必须写到磁盘中的缓存块。接下来的参数是每次允许bd flush将多少个内存块排入空闲的缓冲块列表。 以上值为RHEL 4.0中的缺省值。可以使用两种方法修改:

(1)使用命令

# echo ” 0 0″>/proc/sys/vm/bdflush

并将这条命令加到/etc/rc.d/rc.local文件中去。

(2)在/etc/sysctl.conf 文件中加入如下行:

以上的设置加大了缓冲区大小,降低了bdflush被启动的频度,VFS的缓冲刷新机制是Linux文件系统高效的原因之一。

4、优化输入输出

I/O程序对Linux系统性能也是相当重要的,网络硬件I/O对服务器尤其重要。现在大多数Linux服务器使用10/100 Mb以太网。如果有较重的网络负载,则可以考虑千兆以太网卡。如果没有能力购买千兆网卡的话:可以使用多块网卡虚拟成为一块网卡,具有相同的IP地址。这项技术,在Linux中,这种技术称为Bonding。Bonding在Linux2.4以上内核中已经包含了,只需要在编译的时候把网络设备选项中的 Bonding driver support选中见图1。当然利用Bonding技术配置双网卡绑定的前提条件是两块网卡芯片组型号相同,并且都具备独立的BIOS芯片。

然后,重新编译核心,重新起动计算机,执行如下命令:

现在两块网卡已经象一块一样工作了。这样可以提高集群节点间的数据传输.bonding对于服务器来是个比较好的选择,在没有千兆网卡时,用两块100兆网卡作bonding,可大大提高服务器到交换机之间的带宽.但是需要在交换机上设置连接bonding网卡的两个子口映射为同一个虚拟接口。编辑 /etc/modules.conf文件,加入如下内容,以使系统在启动时加载Bonding模块。

“mode”的值表示工作模式,共有0、1、2和3四种模式,这里设定为0。Bonding工作在负载均衡(Load Balancing (round-robin))方式下,即两块网卡同时工作,这时理论上Bonding能提供两倍的带宽。Bonding运行在网卡的混杂(Promisc)模式下,而且它将两块网卡的MAC地址修改为一样的。混杂模式就是网卡不再只接收目的硬件地址是自身MAC地址的数据帧,而是可以接收网络上所有的帧。

5、减少虚拟终端机的数量。

Linux安装后系统默认是6个虚拟终端机,也就是 CTRL+ALT F1~F6 那六个,作为服务器使用可以关掉其中四个,只留下 CTRL+ALT F1~F2,大约省下 4 Mbytes 的内存,但是这样一来,X-Window 会从原来的 CTRL+ALT F7 变成 CTRL+ALT F3 。 修改 /etc/inittab 中,将 mingetty 3 ~6 全部加上 # 字号 。

6. 关闭一些不用的服务

Linux服务器在启动时需要启动很多系统服务,它们向本地和网络用户提供了Linux的系统功能接口,直接面向应用程序和用户。提供这些服务的程序是由运行在后台的守护进程(daemons)来执行的。守护进程是生存期长的一种进程。它们独立于控制终端并且周期性的执行某种任务或等待处理某些发生的事件。他们常常在系统引导装入时启动,在系统关闭时终止。linux系统有很多守护进程,大多数服务器都是用守护进程实现的。如Web服务http等。同时,守护进程完成许多系统任务,比如,作业规划进程crond、打印进程lqd等。

以前做过,Linux + nginx的并发请求相当于Linux + apache的100倍,以前测试过!

为什么说Linux+apache比windows+apache性能好,因为我们常说的是LAMP(linux+apache+mysql+php),它的整合后性能远大于windows+apache+php+mysql,如果只是处理静态的html,其实性能差不多的~

linux的架构是怎样优化的

(1).系统安装优化

在安装linux系统时,可以在磁盘的划分、SWAP内存的分配等加载项上做优化。

磁盘层面:磁盘分配可以遵循应用的要求:a.对于读写数据频繁但数据安全性要求不高时,可以将磁盘做成RAID0;b.对数据安全性要求高却对数据读写没有要求的可以做成RAID1;c.对读要求高,而对写操作没有要求,但要保证数据安全性,则可以将磁盘做成RAID5;d.对读写要求高,并且要求数据安全性高,则可以将磁盘做成RAID0+1;通过不同的需求将磁盘做成不同的RAID级别,在磁盘层面对系统进行优化。

内存层面:当内存较小(物理内存小于4G),一般设置SWAP交换分区为内存的2倍,如果物理内存大于4G而小于16G,设置SWAP交换分区大小等于或略小于内码段存;如果内存大小大于16G,原则上可以将SWAP分区设置为0,建议设置一个一定大小的SWAP分区起缓冲作用。

(2).内核参数迟悄誉优化

内核参数的优化要和具体应用结合起来整体考虑,根据应用的不同要求进行参数的优化。

(3).文件系统优化

Linux下可选的文件系统有ext2、ext3、ext4、xfs和ReiserFS,根据应用的需求,选择不同的文件系统。

Linux标准文件系统是从VFS开始的,然后是ext,接着是ext2,准确来说。Ext2是linux上标准的文件系统,ext3是在ext2基础上增加日志形成的,,是基于超级块和inode的设计理念设计的。

XFS文件系统是一个高级日志文件,通过分布式处理磁盘运亏请求、定位数据、保持cache的一致性来提供对文件系统数据的低延迟、高带宽的访问。所以XFS伸缩性较好,具有优秀的日志记录功能、可扩展性强、快速写入性能等特点。

ReiserFS是一款高性能的日志文件系统,通过平衡树结构来管理数据,包括文件数据、文件名以及日志支持等。优点是访问性能好和安全性高。具有高效、合理利用磁盘空间,先进的日志管理机制,特有的搜寻方式、海量磁盘存储等特点。

(4).应用的程序的优化

应用程序的优化主要是测试应用程序的可用性以及高效性,目的是调试应用程序是否存在bug。

固态硬盘在linux下怎么优化

1.使用Ext4 without journaling文件系统

传统的SSD+Linux组合一般推荐Ext2文件系统,主要是考虑到Ext3、Ext4需要额外的记录日志,会缩短SSD使用寿命,而且新出现的TRIM技术在Ext2中有两个缺点:

仅支持离线TRIM,换句话说文件系统必须只读挂载;

需要手动执行hdparm命令或wiper.sh脚本。

Ext4则没有这些限制,允许TRIM后台运行,并且日志记橡拿录功能可以手动关闭(没有日志的情况下,文件系统更容易损坏,如突然断电),如果你甘愿冒这样的风险,从而延长SSD使用寿命,值得一试。另外,许多测试中如:Testing EXT4 & Btrfs On A Serial ATA 3.0 SSD,像Btrfs这样为SSD准备的文件系统不如Ext4速度快(用SSD不就为了快么)。

所以,上面安装系统时,选择了Ext4系统,接下来需要关闭日志功能。

首先,系统挂载时无法停用日志功能,所以需要进入刚才的U盘系统,利用root权限执行:

tune2fs -O ^has_journal /dev/sda1

即关闭/dev/sda1上的日志功能。

然后,运行操作系统检测:

e2fsck -f /dev/sda1

不这样,文件系统可能会出错。

最后,重启,进入SSD中的系统,检查是否设置成功:

dmesg | grep EXT4

如果出现:

EXT4-fs (sda1): mounted filesystem without journal

说明设置成功。

原来是:mounted filesystem with ordered data mode

如果需要再次开启日志功能,只要运行tune2fs -O has_journal /dev/sda1即可。

2.开启TRIM功能

TRIM是一种操作系统调度SSD块写入的方式。主要是因为同一个SSD的闪存单元频繁操作会磨损,影响使用寿命,区别于传统的机械硬盘处理删除数据。Linux内核自2.6.33开始支持TRIM。

首先,检查内核版本是否支持TRIM:

uname -a

然后,检查友碧SSD硬盘是否支持TRIM:

hdparm -I /dev/sda

如果显示比如(不同硬件可能不同提示):

* Data Set Management TRIM supported

说明支持。

这两个条件都满足,在/etc/fstab中将:

/dev/sda1 / ext4 defaults 改为:

/dev/sda1 / ext4 discard,defaults 分区、挂载点、已经存在的选项不一定一样。

测试新的fstab文件:

mount -oremount /dev/sda1

然后挂载:

mount

如果显示discard字样,说明成功,如:

/dev/sda1 on / type ext4 (rw,discard)

3.swap空间处理

对于大内存来说swap基本上都是空闲的,除非电脑进入休眠状态,系统会将内存内容转到swap中。有了SSD,开关机都在几秒中,对我来说swap没用,所以上面直接不分配swap空间。

如果分配了也行梁告搭,空间要小,而且通过设置/proc/sys/vm/swappiness里面的值,来减少swap换出量:

echo 1 > /proc/sys/vm/swappiness

0到100之间,值越大换出量越大。

4.设置noatime

当访问文件时,系统会更新last-access这个文件/目录元数据,设置noatime后可以减少这种操作。

将2步中的:

/dev/sda1 / ext4 discard,defaults 改为:

/dev/sda1 / ext4 noatime,discard,defaults 测试设置成功方法与上面一样。

5.使用noop磁盘调度

通常操作系统调度机械硬盘时会提供一些数据的物理位置,这样有利于机械硬盘优化寻道,但是对SSD没意义,所以采用noop磁盘调度,即简单发送请求,可以提高效率。

可以通过以下命令查看调度方法:

cat /sys/block/sda/queue/scheduler

比如显示:

deadline cfq

在/etc/rc.local中添加如下语句:

echo noop > /sys/block/sda/queue/scheduler

6.内存分区加速

如果内存够大,可以用ramdisk的方式,将一些经常变化的位置如/tmp放入内存,加快速度,减少对SSD的访问。

依然是加在/etc/fstab中:

tmpfs /tmp tmpfs defaults,noatime,mode=

tmpfs /var/tmp tmpfs defaults,noatime,mode=

tmpfs /var/log tmpfs defaults,noatime,mode=

linux系统调优案例的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于linux系统调优案例,Linux系统调优实践案例分享,linux apache 性能调优 8G 8核 的服务器,linux的架构是怎样优化的,固态硬盘在linux下怎么优化的信息别忘了在本站进行查找喔。

香港服务器首选树叶云,2H2G首月10元开通。
树叶云(www.IDC.Net)提供简单好用,价格厚道的香港/美国云服务器和独立服务器。IDC+ISP+ICP资质。ARIN和APNIC会员。成熟技术团队15年行业经验。

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/157215.html<

(0)
运维的头像运维
上一篇2025-03-16 06:46
下一篇 2025-03-16 06:47

相关推荐

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注