性能优化之20个 Linux 服务器性能调优技巧

news2024/10/7 19:17:21

Linux是一种开源操作系统,它支持各种硬件平台,Linux服务器全球知名,它和Windows之间最主要的差异在于,Linux服务器默认情况下一般不提供GUI(图形用户界面),而是命令行界面,它的主要目的是高效处理非交互式进程,响应时间并不是那么重要,相反,能够长时间处理高负载才是最关键的。

Linux高可用服务器集群解决方案让IT系统管理员可以从容应对许多常见的硬件和软件故障,允许多台计算机一起工作,为关键服务正常运行提供保障,系统管理员可以不中断服务执行维护和升级。

Linux服务器有各种用途,如Web服务器或分支机构内部服务器,CMS或CRS服务器,文件服务器(为Windows和/或Linux用户服务),VoIP电话服务器,邮件或域名服务器,数据库服务器,云计算配置中的基础设施节点等。

Linux功能丰富、强大、灵活,你可以用它完成各种任务,在这篇文章中,我们将讨论一些提高Linux服务器性能的技巧。

1.为磁盘I/O调整Linux内核电梯算法

在选择文件系统后,有一些内核和挂载选项可能会影响到它的性能表现,其中一个内核设置是电梯算法,通过调整电梯算法,系统可以平衡低延迟需求,收集足够的数据,以有效地组织对磁盘的读和写请求。

2.禁用不必要的守护进程

每台服务器上都运行着许多守护进程或服务,而具有讽刺意味的是,有很多通常不是必需的,这些服务没有发挥作用,但却消耗了宝贵的内存和CPU时间。此外,它们可能将服务器置于危险境地,多运行一个服务就等于多向黑客打开一扇长驱直入的门,因此,你应该将它们从服务器移除,禁用它们最大的好处是可以加快启动时间,释放内存。另外,你可以减少CPU需要处理的进程数,禁用它们的另一个好处是增强服务器的安全性,因为越少的守护进程意味着可被攻击和利用的漏洞越少。

下面是一些应该被禁用的Linux守护进程,默认情况下,它们都是自动运行的:

序号    守护进程    描述

1    Apmd    高级电源管理守护进程

2    Nfslock    用于NFS文件锁定

3    Isdn    ISDN Moderm支持

4    Autofs    在后台自动挂载文件系统(如自动挂载CD-ROM)

5    Sendmail    邮件传输代理

6    Xfs    X Window的字体服务器

3.关掉GUI

一般说来,Linux服务器是不需要GUI的,所有管理任务都可以在命令行下完成,因此最好关掉GUI,重定向X显示或通过一个Web浏览器界面显示。为了禁用GUI,“init level(启动级别)”应该被设置为3(命令行登录),而不是5(图形登录),如果需要GUI,可以随时运行startx进入图形用户界面。

4.清理不需要的模块或功能

在服务器软件包中有太多被启动的功能或模块实际上是不需要的(如Apache中的许多功能模块),仔细查看Apache配置文件,确定FrontPage支持或其它额外的模块是否真的要用到,如果不需要,应该毫不犹豫地从服务器禁用掉,这样有助于提高系统内存可用量,腾出更多资源给那些真正需要的软件,让它们运行得更快。

5.禁用控制面板

在Linux中,有许多流行的控制面板,如Cpanel,Plesk,Webmin和phpMyAdmin等,相信每个Linux初级用户都很喜欢这些控制面板,但是,禁用掉这些软件包可以释放出大约120MB内存,因此,我强烈建议禁用掉这些控制面板,除非它们真的需要用到,它们可以通过PHP脚本(尽管有些不安全),或命令行命令启用,这样做后,内存使用量大约可以下降30-40%。

6.改善Linux Exim服务器性能

有许多种方法改善服务器的Exim性能,其中一个办法是使用DNS缓存守护进程,它可以降低解析DNS记录需要的带宽和CPU时间,DNS缓存通过消除每次都从根节点开始查找DNS记录的需求,从而改善网络性能,Djbdns是一个非常强大的DNS服务器,它具有DNS缓存功能,Djbdns比BIND DNS服务器更安全,性能更好,可以直接通过http://cr.yp.to/下载,或通过Red Hat提供的软件包获得。

7.使用AES256增强gpg文件加密安全

为了提高备份文件或敏感信息的安全,许多Linux系统管理员都会使用gpg进行加密,在使用gpg时,最好指定gpg使用AES256加密算法,AES256使用256位密钥,它是一个开放的加密算法,美国国家安全局(NSA)都使用它保护绝密信息,没有什么比它更安全的了。

8.远程备份服务安全

安全是选择远程备份服务最重要的因素,大多数系统管理员都害怕两件事:(黑客)可以删除备份文件,不能从备份恢复系统。

为了保证备份文件100%的安全,备份服务公司提供远程备份服务器,使用scp脚本或RSYNC通过SSH传输数据,这样,没有人可以直接进入和访问远程系统,因此,也没有人可以从备份服务删除数据。在选择远程备份服务提供商时,最好从多个方面了解其服务强壮性,如果可以,可以亲自测试一下。

9.更新默认内核参数设置

为了顺利和成功运行企业应用程序,如数据库服务器,可能需要更新一些默认的内核参数设置,例如,2.4.x系列内核消息队列参数msgmni有一个默认值(例如,共享内存,或shmmax在Red Hat系统上默认只有33554432字节),它只允许有限的数据库并发连接,下面为数据库服务器更好地运行提供了一些建议值(来自IBM DB2支持网站):

kernel.shmmax=268435456 (32位) kernel.shmmax=1073741824 (64位) kernel.msgmni=1024 fs.file-max=8192 kernel.sem=”250 32000 32 1024″

10.优化TCP

优化TCP协议有助于提高网络吞吐量,跨广域网的通信使用的带宽越大,延迟时间越长时,建议使用越大的TCP Linux大小,以提高数据传输速率,TCP Linux大小决定了发送主机在没有收到数据传输确认时,可以向接收主机发送多少数据。

11.选择正确的文件系统

使用ext4文件系统取代ext3

Ext4是ext3文件系统的增强版,扩展了存储限制

它具有日志功能,保证高水平的数据完整性(在非正常关闭事件中)

在非正常关闭和重启时,它不需要检查磁盘(这是一个非常耗时的动作)

更快的写入速度,ext4日志优化了硬盘磁头动作

12.使用noatime文件系统挂载选项

在文件系统启动配置文件fstab中使用noatime选项,如果使用了外部存储,这个挂载选项可以有效改善性能。

13.调整Linux文件描述符限制

Linux限制了任何进程可以打开的文件描述符数量,默认限制是每进程1024,这些限制可能会阻碍基准测试客户端(如httperf和apachebench)和Web服务器本身获得最佳性能,Apache每个连接使用一个进程,因此不会受到影响,但单进程Web服务器,如Zeus是每连接使用一个文件描述符,因此很容易受默认限制的影响。

打开文件限制是一个可以用ulimit命令调整的限制,ulimit -aS命令显示当前的限制,ulimit -aH命令显示硬限制(在未调整/proc中的内核参数前,你不能增加限制)。

Linux第三方应用程序性能技巧

对于运行在Linux上的第三方应用程序,一样有许多性能优化技巧,这些技巧可以帮助你提高Linux服务器的性能,降低运行成本。

14.正确配置MySQL

为了给MySQL分配更多的内存,可设置MySQL缓存大小,要是MySQL服务器实例使用了更多内存,就减少缓存大小,如果MySQL在请求增多时停滞不动,就增加MySQL缓存。

15.正确配置Apache

检查Apache使用了多少内存,再调整StartServers和MinSpareServers参数,以释放更多的内存,将有助于你节省30-40%的内存。

下面是一些提高Linux服务器监控和故障排除的技巧:

16.分析Linux服务器性能

提高系统效率最好的办法是找出导致整体速度下降的瓶颈并解决掉,下面是找出系统关键瓶颈的一些基本技巧:

● 当大型应用程序,如OpenOffice和Firefox同时运行时,计算机可能会开始变慢,内存不足的出现几率更高。

● 如果启动时真的很慢,可能是应用程序初次启动需要较长的加载时间,一旦启动好后运行就正常了,否则很可能是硬盘太慢了。

●CPU负载持续很高,内存也够用,但CPU利用率很低,可以使用CPU负载分析工具监控负载时间。

17.学习5个Linux性能命令

使用几个命令就可以管理Linux系统的性能了,下面列出了5个最常用的Linux性能命令,包括top、vmstat、iostat、free和sar,它们有助于系统管理员快速解决性能问题。

①  top

Top命令不仅显示了当前内核服务的任务,还显示了许多关于主机状态的统计数据,默认情况下,它每隔5秒自动更新一次显示的数据(这个时间间隔是可以配置的),通过top命令,我们可以得知几个结果,如:当前正常运行时间,系统负载,进程数量和内存使用率,此外,这个命令也显示了那些使用最多CPU时间的进程(包括每个进程的各种信息,如运行用户,执行的命令等)。

②  vmstat

Vmstat命令提供当前CPU、IO、进程和内存使用率的快照,它和top命令类似,自动更新数据,如:

$ vmstat 10

③  iostat

Iostat命令(在Ubuntu,Red Hat/Fedora上包含在sysstat软件包中)提供三个报告:CPU利用率、设备利用率和网络文件系统利用率,不加任何参数运行时,iostat将显示这三个报告,使用-c,-d和-h参数可以分别独立显示这三个报告。

④   free

Free命令显示主内存和交换空间的内存统计数据,指定-t参数可以显示总内存数量,指定-b参数可以按字节为单位进行显示,使用-m则以兆为单位显示,默认情况下是以千字节为单位的。

Free命令也可以使用-s参数加一个延迟时间(单位:秒)连续运行,如:

$ free -s 5

⑤  sar

Sar命令收集,查看和记录性能数据,这个命令比前面几个命令历史更悠久,它可以收集和显示较长周期的数据。

其它

下面是一些归类为其它的性能技巧:

18.将日志文件转移到内存中

当一台机器处于运行中时,最好是将系统日志放在内存中,当系统关闭时再将其复制到硬盘,当你运行一台开启了syslog功能的笔记本电脑或移动设备时,ramlog可以帮助你提高系统电池或移动设备闪存驱动器的寿命,使用ramlog的一个好处是,不用再担心某个守护进程每隔30秒向syslog发送一条消息,放在以前,硬盘必须随时保持运转,这样对硬盘和电池都不好。

19.先打包,后写入

在内存中划分出固定大小的空间保存日志文件,这意味着笔记本电脑硬盘不用一直保持运转,只有当某个守护进程需要写入日志时才运转,注意ramlog使用的内存空间大小是固定的,否则系统内存会很快被用光,如果笔记本使用固态硬盘,可以分配50-80MB内存给ramlog使用,ramlog可以减少许多写入周期,极大地提高固态硬盘的使用寿命。

20.一般调优技巧

尽可能使用静态内容替代动态内容,如果你在生成天气预告,或其它每隔1小时就必须更新的数据,最好是写一个程序,每隔1小时生成一个静态的文件,而不是让用户运行一个CGI动态地生成报告。

为动态应用程序选择最快最合适的API,CGI可能最容易编程,但它会为每个请求产生一个进程,通常,这是一个成本很高,且不必要的过程,FastCGI是更好的选择,和Apache的mod_perl一样,都可以极大地提高应用程序的性能。

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

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

相关文章

【22】核心易中期刊推荐——人工智能与识别图像处理与应用

🚀🚀🚀NEW!!!核心易中期刊推荐栏目来啦 ~ 📚🍀 核心期刊在国内的应用范围非常广,核心期刊发表论文是国内很多作者晋升的硬性要求,并且在国内属于顶尖论文发表,具有很高的学术价值。在中文核心目录体系中,权威代表有CSSCI、CSCD和北大核心。其中,中文期刊的数…

网络编程代码实例:多进程版

文章目录 前言代码仓库内容代码(有详细注释)server.cclient.cMakefile 结果总结参考资料作者的话 前言 网络编程代码实例:多进程版。 代码仓库 yezhening/Environment-and-network-programming-examples: 环境和网络编程实例 (github.com)E…

商品如果要在美国商超出售,那么如何申请美国条形码呢?

美国条码注册是指向美国条码协会提出条码申请,通过条码协会的审核批准后,条码可以印在产品上使用。条码是进入各大商场,超市的身份证,企业有条形码,一是可以提高企业产品的知名度;二是增加产品的防伪力度&a…

TypeScript与JavaScript

目录 一、什么是javascript 二、TypeScript:静态类型检查器 1、类型化的 JavaScript 超集 1.1、句法 1.2、类型 1.3、运行时行为 1.4、擦除类型 2、学习 JavaScript 还是 TypeScript 一、什么是javascript JavaScript(也称为 ECMAScript&#xf…

为何电商这么难做…...你是否忽略了这个问题?

物流时效是影响买家体验的重要环节,物流服务优劣也是买家网上购物时的重要参考依据。但电商企业对于快递公司的时效承诺、服务质量基本处于被动接受的状况,直到买家投诉才知道快递公司服务缺失,若买家不投诉也没法主动知道大量的订单是否按约…

Notes/Domino 11.0.1FP7以及在NAS上安装Domino等

大家好,才是真的好。 目前HCL在还是支持更新的Notes/Domino主要是三个版本,V10、11和12,这不,上周HCL Notes/Domino 11.0.1居然推出了FP7补丁包程序。 从V10.0.1开始,Domino的FP补丁包程序主要是用来修复对应主要版本中的一些问…

TCP FACK 与 RACK

3 个 dupacks 触发 fast retransmit 是一个经典启发算法,但在引入 SACK 之后仍然计数 SACKed 数量 > 3 触发 fast retransmit 似乎就没理由了。即使把 reordering 算进去,一个距离 una 很远的 seg 被 SACKed,也足以判定丢包了,…

2022公考经验分享

一、写在前面 2017南京邮电毕业后,5年来一直就职事业单位。单位解决北京户口,也赶上了一两年的忙碌期,存款加上公积金大概40万。期间经历过几段感情,2020年通过相亲认识现在的老婆。2020年12月瑞泽家园签位排名7000多,…

本地spingboot配置Promethus+granfana监控

记录如何配置与启动 1.在搭建好的应用加上依赖 <!-- 实现对 Actuator 的自动化配置 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><!-- Micr…

超火爆的ChatGPT课,送ChatGPT账号啦~~

HOT! HOT! HOT! &#x1f525; &#x1f525; &#x1f525; 上周&#xff0c;ChatGPT全栈开发课程一经推出&#xff0c;就在程序员圈子中引起了广泛关注。这两天 都被挤爆了&#xff0c;纷纷表示对课程内容很是期待呢。 明天就要开班直播啦&#xff0c;还未报名的同学&…

npm 打包发布一个公用的组件包

1&#xff0c;首先创建一个需要发包发布的组件 2.3使用Vue插件模式 这一步是封装组件中的重点&#xff0c;用到了Vue提供的一个公开方法&#xff1a;install。这个方法会在你使用Vue.use(plugin)时被调用&#xff0c;这样使得我们的插件注册到了全局&#xff0c;在子组件的任何…

AI在网络安全中的应用:机器学习如何帮助我们更好地保护网络

章节一&#xff1a;引言 随着信息技术的飞速发展&#xff0c;网络攻击的手段也在不断地演变。传统的网络安全技术已经难以应对日益复杂的网络安全威胁。AI技术&#xff0c;特别是机器学习技术&#xff0c;为网络安全提供了一种新的解决方案。本文将介绍AI在网络安全中的应用&am…

打造高性能的视频和弹幕系统(一): 对象存储服务

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…

一文综述:自然语言处理技术NLP

自然语言处理技术综述1-到2020年 写在最前面摘要NLP简介Preprocessing预处理Tokenization令牌化、标记化Stop Words 停用词Stemming and Lemmatization词干提取和词形还原&#xff08;英文单词&#xff09;Parts-of-Speech Tagging词性标记Bag of Words and N-Grams词袋模型、N…

Redis数据库的安装(Windows10)

Redis数据库的安装 前言安装启动命令简单的几条语句 前言 本节开始学习Redis数据库。 Redis数据库的优势如下&#xff1a; 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ord…

ubuntu22.04安装显卡驱动+cuda+cudnn

ubuntu22.04安装显卡驱动cudacudnn 1. 下载驱动和卸载、禁用自带驱动程序1.1 查看系统显卡型号1.2 从NVIDIA官网下载相应驱动1.3 卸载Ubuntu自带的驱动程序1.4 禁用自带的nouveau nvidia驱动1.5 更新1.6 重启电脑1.7 查看是否将自带的驱动屏蔽 2. 安装显卡驱动2.1 停止lightdm桌…

ChatGPT 如何促进智能客服行业发展

章节一&#xff1a;智能客服的背景及发展趋势 随着人工智能技术的快速发展&#xff0c;智能客服正逐渐成为企业服务中不可或缺的一环。相比于传统客服方式&#xff0c;智能客服能够快速地为客户提供满意的解决方案&#xff0c;大幅降低企业的客服成本&#xff0c;提高客户的满意…

24、LLVM编译流程

一、LLVM 1.1 LLVM概述 LLVM是构架编译器(compiler)的框架系统,以C编写而成,用于优化以任意程序语言编写的程序的编译时间(compile-time)、链接时间(link-time)、运行时间(run-time)以及空闲时间(idle-time),对开发者保持开放,并兼容已有脚本.LLVM计划启动于2000年,最初由美国…

MybatisPlus入门和分页和条件查询里面的条件和null值的处理方式和查询投影和查询条件设置和id生成相关

MybatisPlus 简化了mybatis之前的在springboot整合MyBatis时需要自己写sql语句在接口中&#xff0c;现在只需要让接口继承BaseMapper<实体类>&#xff0c;然后在测试类中接口.增删改查方法&#xff08;&#xff09;即可 不用像springboot整合mybatis一样勾选spring web…

【JavaScript 逆向】抖店滑块逆向分析

声明 本文章中所有内容仅供学习交流&#xff0c;相关链接做了脱敏处理&#xff0c;若有侵权&#xff0c;请联系我立即删除&#xff01; 案例目标 接口&#xff1a; aHR0cHM6Ly93d3cuZG91eWluLmNvbS9hd2VtZS92MS93ZWIvdXNlci9wcm9maWxlL290aGVyLw 以上均做了脱敏处理&#…