Linux性能调优,从优化思路说起( 三 )


目前服务器端ext4和xfs是主流文件系统,如何选择合适的文件系统,需要根据文件系统的特点加上业务的需求综合来定 。
2.3 、应用程序软件资源
应用程序的优化其实是整个优化工程的核心,如果一个应用程序存在BUG,那么即使所有其他方面都达到了最优状态,整个应用系统还是性能低下,所以,对应用程序的优化是性能优化过程的重中之重,这就对程序架构设计人员和程序开发人员提出了更高的要求 。
三、 分析系统性能涉及的人员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优化,进而实现程序代码的优化 。
从上面这个过程可以看出,系统性能优化一般遵循的流程是:
  1. 首先Linux运维人员查看系统的整体状况,主要从系统硬件、网络设备、操作系统配置、应用程序架构和程序代码五个方面进行综合判断,如果发现是系统硬件、网络设备或者操作系统配置问题,Linux运维人员可以根据情况自主解决;
  2. 如果发现是程序结构问题,就需要提交给程序架构设计人员;
  3. 如果发现是程序代码执行问题,就交给开发人员进行代码优化 。
  4. 这样就完成了一个系统性能优化的过程 。
四、调优总结系统性能优化是个涉及面广、繁琐、长久的工作,寻找出现性能问题的根源往往是最难的部分,一旦找到出现问题的原因,性能问题也就迎刃而解 。因此,解决问题的思路变得非常重要 。
例如,linux系统下的一个网站系统,用户反映,网站访问速度很慢,有时无法访问 。
针对这个问题:
  1. 第一步要做的是检测网络,可以通过ping命令检查网站的域名解析是否正常,同时,ping服务器地址的延时是否过大等等,通过这种方式,首先排除网络可能出现的问题;如果网络没有问题
  2. 接着进入第二步,对linux系统的内存使用状况进行检查,因为网站响应速度慢,一般跟内存关联比较大,通过free、vmstat等命令判断内存资源是否紧缺,如果内存资源不存在问题
  3. 进入第三步,检查系统CPU的负载状况,可以通过sar、vmstat、top等命令的输出综合判断CPU是否存在过载问题,如果CPU没有问题
  4. 继续进入第四步,检查系统的磁盘I/O是否存在瓶颈,可以通过IOStat、vmstat等命令检查磁盘的读写性能,如果磁盘读写也没有问题,linux系统自身的性能问题基本排除,最后要做的是检查程序本身是否存在问题 。通过这样的思路,层层检测,步步排查,性能问题就“无处藏身”,查找出现性能问题的环节也就变得非常简单


    推荐阅读