园林景观设计案例网站,软件开发成本估算表,点击进入官方网站,微网站建设哪里便宜Linux操作系统是一个开源产品#xff0c;也是一个开源软件的实践和应用平台#xff0c;在这个平台下有无数的开源软件支撑#xff0c;我们常见的apache、tomcat、mysql等。
开源软件的最大理念是自由、开放#xff0c;那么Linux作为一个开源平台#xff0c;最终要实现的是… Linux操作系统是一个开源产品也是一个开源软件的实践和应用平台在这个平台下有无数的开源软件支撑我们常见的apache、tomcat、mysql等。
开源软件的最大理念是自由、开放那么Linux作为一个开源平台最终要实现的是通过这些开源软件的支持以最低廉的成本达到应用最优的性能。因此谈到性能问题主要实现的是Linux操作系统和应用程序的最佳结合。
01、性能问题综述
系统的性能是指操作系统完成任务的有效性、稳定性和响应速度。
Linux系统管理员可能经常会遇到系统不稳定、响应速度慢等问题例如在Linux上搭建了一个web服务经常出现网页无法打开、打开速度慢等现象而遇到这些问题就有人会抱怨Linux系统不好其实这些都是表面现象。
操作系统完成一个任务时与系统自身设置、网络拓朴结构、路由设备、路由策略、接入设备、物理线路等多个方面都密切相关任何一个环节出现问题都会影响整个系统的性能。
因此当Linux应用出现问题时应当从应用程序、操作系统、服务器硬件、网络环境等方面综合排查定位问题出现在哪个部分然后集中解决。
在应用程序、操作系统、服务器硬件、网络环境等方面影响性能最大的是应用程序和操作系统两个方面因为这两个方面出现的问题不易察觉隐蔽性很强。而硬件、网络方面只要出现问题一般都能马上定位。
下面主要讲解操作系统方面的性能调优思路应用程序方面需要具体问题具体对待。
以下从影响Linux性能的因素、分析性能涉及的人员、系统性能优化工具、系统性能评价标准四个方面介绍优化Linux的一般思路和方法。
02、影响 Linux 性能的因素
2.1 系统硬件资源1CPUCPU是操作系统稳定运行的根本CPU的速度与性能在很大程度上决定了系统整体的性能因此CPU数量越多、主频越高服务器性能也就相对越好。但事实并非完全如此。
目前大部分CPU在同一时间内只能运行一个线程超线程的处理器可以在同一时间运行多个线程因此可以利用处理器的超线程特性提高系统性能。在Linux系统下只有运行SMP内核才能支持超线程但是安装的CPU数量越多从超线程获得的性能方面的提高就越少。
另外Linux内核会把多核的处理器当作多个单独的CPU来识别例如两个4核的CPU在Lnux系统下会被当作8个单核CPU。但是从性能角度来讲两个4核的CPU和8个单核的CPU并不完全等价根据权威部门得出的测试结论前者的整体性能要比后者低25~30。
可能出现CPU瓶颈的应用有db服务器、动态Web服务器等对于这类应用要把CPU的配置和性能放在主要位置。
2内存内存的大小也是影响Linux性能的一个重要的因素内存太小系统进程将被阻塞应用也将变得缓慢甚至失去响应内存太大导致资源浪费。
Linux系统采用了物理内存和虚拟内存两种方式虚拟内存虽然可以缓解物理内存的不足但是占用过多的虚拟内存应用程序的性能将明显下降要保证应用程序的高性能运行物理内存一定要足够大但是过大的物理内存会造成内存资源浪费例如在一个32位处理器的Linux操作系统上超过8GB的物理内存都将被浪费。
因此要使用更大的内存建议安装64位的操作系统同时开启Linux的大内存内核支持。
由于处理器寻址范围的限制在32位Linux操作系统上应用程序单个进程最大只能使用4GB的内存这样以来即使系统有更大的内存应用程序也无法“享”用解决的办法就是使用64位处理器安装64位操作系统。在64位操作系统下可以满足所有应用程序对内存的使用需求 几乎没有限制。
可能出现内存性能瓶颈的应用有NOSQL服务器、数据库服务器、缓存服务器等对于这类应用要把内存大小放在主要位置。
3磁盘I/O性能
磁盘的I/O性能直接影响应用程序的性能在一个有频繁读写的应用中如果磁盘I/O性能得不到满足就会导致应用停滞。好在现今的磁盘都采用了很多方法来提高I/O性能比如常见的磁盘RAID技术。
通过RAID技术组成的磁盘组就相当于一个大硬盘用户可以对它进行分区格式化、建立文件系统等操作跟单个物理硬盘一模一样唯一不同的是RAID磁盘组的I/O性能比单个硬盘要高很多同时在数据的安全性也有很大提升。
根据磁盘组合方式的不同RAID可以分为RAID0RAID1、RAID2、RAID3、RAID4、RAID5、RAID6、RAID7、RAID01、RAID10等级别常用的RAID级别有RAID0、RAID1、RAID5、RAID01这里进行简单介绍。
RAID 0通过把多块硬盘粘合成一个容量更大的硬盘组提高了磁盘的性能和吞吐量。这种方式成本低要求至少两个磁盘但是没有容错和数据修复功能因而只能用在对数据安全性要求不高的环境中。
RAID 1也就是磁盘镜像通过把一个磁盘的数据镜像到另一个磁盘上最大限度地保证磁盘数据的可靠性和可修复性具有很高的数据冗余能力但磁盘利用率只有50%因而成本最高多用在保存重要数据的场合。
RAID5采用了磁盘分段加奇偶校验技术从而提高了系统可靠性RAID5读出效率很高写入效率一般至少需要3块盘。允许一块磁盘故障而不影响数据的可用性。
RAID01把RAID0和RAID1技术结合起来就成了RAID01至少需要4个硬盘。此种方式的数据除分布在多个盘上外每个盘都有其镜像盘提供全冗余能力同时允许一个磁盘故障而不影响数据可用性并具有快速读/写能力。
通过了解各个RAID级别的性能可以根据应用的不同特性选择适合自身的RAID级别从而保证应用程序在磁盘方面达到最优性能。
4网络宽带
Linux下的各种应用一般都是基于网络的因此网络带宽也是影响性能的一个重要因素低速的、不稳定的网络将导致网络应用程序的访问阻塞而稳定、高速的网络带宽可以保证应用程序在网络上畅通无阻地运行。幸运的是现在的网络一般都是千兆带宽或光纤网络带宽问题对应用程序性能造成的影响也在逐步降低。
2.2 操作系统相关资源基于操作系统的性能优化也是多方面的可以从系统安装、系统内核参数、网络参数、文件系统等几个方面进行衡量下面依次进行简单介绍。
1系统安装优化系统优化可以从安装操作系统开始当安装Linux系统时磁盘的划分SWAP内存的分配都直接影响以后系统的运行性能。
例如磁盘分配可以遵循应用的需求
对于对写操作频繁而对数据安全性要求不高的应用可以把磁盘做成RAID 0而对于对数据安全性较高对读写没有特别要求的应用可以把磁盘做成RAID 1对于对读操作要求较高而对写操作无特殊要求并要保证数据安全性的应用可以选择RAID 5对于对读写要求都很高并且对数据安全性要求也很高的应用可以选择RAID10/01。
这样通过不同的应用需求设置不同的RAID级别在磁盘底层对系统进行优化操作。
随着内存价格的降低和内存容量的日益增大对虚拟内存SWAP的设定现在已经没有了所谓虚拟内存是物理内存两倍的要求但是SWAP的设定还是不能忽略根据经验如果内存较小物理内存小于4GB一般设置SWAP交换分区大小为内存的2倍
如果物理内存大于8GB小于16GB可以设置SWAP大小等于或略小于物理内存即可如果内存大小在16GB以上原则上可以设置SWAP为0但并不建议这么做因为设置一定大小的SWAP还是有一定作用的。
2内核参数优化系统安装完成后优化工作并没有结束接下来还可以对系统内核参数进行优化不过内核参数的优化要和系统中部署的应用结合起来整体考虑。
例如如果系统部署的是Oracle数据库应用那么就需要对系统共享内存段、系统信号量、文件句柄等参数进行优化设置如果部署的是Web应用那么就需要根据Web应用特性进行网络参数的优化例如修改net.ipv4.ip_local_port_range、net.ipv4.tcp_tw_reuse、net.core.somaxconn等网络内核参数。
3文件系统优化
文件系统的优化也是系统资源优化的一个重点在Linux下可选的文件系统有ext2、ext3、ReiserFS、ext4、xfs根据不同的应用选择不同的文件系统。
Linux标准文件系统是从VFS开始的然后是ext接着就是ext2应该说ext2是Linux上标准的文件系统ext3是在ext2基础上增加日志形成的从VFS到ext4其设计思想没有太大变化都是早期UNIX家族基于超级块和inode的设计理念。
XFS文件系统是一个高级日志文件系统XFS通过分布处理磁盘请求、定位数据、保持Cache 的一致性来提供对文件系统数据的低延迟、高带宽的访问因此XFS极具伸缩性非常健壮具有优秀的日志记录功能、可扩展性强、快速写入性能等优点。
目前服务器端ext4和xfs是主流文件系统如何选择合适的文件系统需要根据文件系统的特点加上业务的需求综合来定。
2.3 应用程序软件资源
应用程序的优化其实是整个优化工程的核心如果一个应用程序存在BUG那么即使所有其他方面都达到了最优状态整个应用系统还是性能低下所以对应用程序的优化是性能优化过程的重中之重这就对程序架构设计人员和程序开发人员提出了更高的要求。
03、分析系统性能涉及的人员
3.1 Linux运维人员在做性能优化过程中Linux运维人员承担着很重要的任务。
首先Linux运维人员要了解和掌握操作系统的当前运行状态例如系统负载、内存状态、进程状态、CPU负荷等信息这些信息是检测和判断系统性能的基础和依据
其次Linux运维人员还有掌握系统的硬件信息例如磁盘I/O、CPU型号、内存大小、网卡带宽等参数信息然后根据这些信息综合评估系统资源的使用情况。
第三作为一名Linux运维人员还要掌握应用程序对系统资源的使用情况更深入的一点就是要了解应用程序的运行效率例如是否有程序BUG、内存溢出等问题通过对系统资源的监控就能发现应用程序是否存在异常如果确实是应用程序存在问题需要把问题立刻反映给程序开发人员进而改进或升级程序。
性能优化本身就是一个复杂和繁琐的过程Linux运维人员只有了解了系统硬件信息、网络信息、操作系统配置信息和应用程序信息才能有针对性地的展开对服务器性能优化这就要求Linux运维人员有充足的理论知识、丰富的实战经验以及缜密分析问题的头脑。
3.2 系统架构设计人员系统性能优化涉及的第二类人员就是应用程序的架构设计人员。如果Linux运维人员在经过综合判断后发现影响性能的是应用程序的执行效率那么程序架构设计人员就要及时介入深入了解程序运行状态。
首先系统架构设计人员要跟踪了解程序的执行效率如果执行效率存在问题要找出哪里出现了问题其次如果真的是架构设计出现了问题那么就要马上优化或改进系统架构设计更好的应用系统架构。
3.3 软件开发人员系统性能优化最后一个环节涉及的是程序开发人员在Linux运维人员或架构设计人员找到程序或结构瓶颈后程序开发人员要马上介入进行相应的程序修改。修改程序要以程序的执行效率为基准改进程序的逻辑有针对性地进行代码优化。
例如Linux运维人员在系统中发现有条SQL语句耗费大量的系统资源抓取这条执行的SQL语句发现此SQL语句的执行效率太差是开发人员编写的代码执行效率低造成的这就需要把这个信息反馈给开发人员开发人员在收到这个问题后可以有针对性的进行SQL优化进而实现程序代码的优化。
从上面这个过程可以看出系统性能优化一般遵循的流程是
首先Linux运维人员查看系统的整体状况主要从系统硬件、网络设备、操作系统配置、应用程序架构和程序代码五个方面进行综合判断
如果发现是系统硬件、网络设备或者操作系统配置问题Linux运维人员可以根据情况自主解决
如果发现是程序结构问题就需要提交给程序架构设计人员
如果发现是程序代码执行问题就交给开发人员进行代码优化。这样就完成了一个系统性能优化的过程。
04、调优总结
系统性能优化是个涉及面广、繁琐、长久的工作寻找出现性能问题的根源往往是最难的部分一旦找到出现问题的原因性能问题也就迎刃而解。因此解决问题的思路变得非常重要。
例如Linux系统下的一个网站系统用户反映网站访问速度很慢有时无法访问。
第一步要做的是检测网络可以通过ping命令检查网站的域名解析是否正常同时ping服务器地址的延时是否过大等等通过这种方式首先排除网络可能出现的问题
如果网络没有问题接着进入第二步对Linux系统的内存使用状况进行检查因为网站响应速度慢一般跟内存关联比较大通过free、vmstat等命令判断内存资源是否紧缺
如果内存资源不存在问题进入第三步检查系统CPU的负载状况可以通过sar、vmstat、top等命令的输出综合判断CPU是否存在过载问题如果CPU没有问题
继续进入第四步检查系统的磁盘I/O是否存在瓶颈可以通过iostat、vmstat等命令检查磁盘的读写性能如果磁盘读写也没有问题Linux系统自身的性能问题基本排除最后要做的是检查程序本身是否存在问题。
通过这样的思路层层检测步步排查性能问题就“无处藏身”查找出现性能问题的环节也就变得非常简单。
最后感谢每一个认真阅读我文章的人礼尚往来总是要有的虽然不是什么很值钱的东西如果你用得到的话可以直接拿走 这些资料对于【软件测试】的朋友来说应该是最全面最完整的备战仓库这个仓库也陪伴上万个测试工程师们走过最艰难的路程希望也能帮助到你