自己动手提高ubuntu系统的性能

在每一个基本的系统中,都包含有各种各样的基本进程,用于检查系统服务,和操作系统通信等等。进程和系统的性能表现有着很大的关系,因此,一个系统管理者应该清楚了解当前系统中正在运行什么东西,有什么资源可用等等,只有这样,你才能够调整配置,例如,禁止不需要的进程,打开必须的监护程序以及将你的内核调整到最优化,最后得到一个最适合自己使用的最好的系统。Ubuntu是一个为大众设计的系统,这也就决定了其系统设置的大众化,换句话说,臃肿化。为了适应兼容性而支持的很多东西,我们其实不一定需要。在这里,笔者试图讲解一些通过调整内核参数,shell参数以及特定应用的设置来优化系统的方法,供大家参考。需要注意的是,不同的ubuntu系统有着不同的启动脚本,并有着不同的运行进程,这里我只能以7.04系统为基础来讲解。其实自己学会对进程进行追踪查看是非常重要的,只有这样你才能在不同的系统中都游刃有余。另外,如果要更加深入调整系统,那么自己编译一个属于自己的系统是最合适的,本文没有牵涉这么深入的东西。如果你对自己编译linux系统感兴趣,可以参考这篇文章和这篇文章。

本文假设你有一点点基本使用linux的基础,所以很多东西只是讲一个概念性的大纲,想深入了解的话,网络上有很多文章。如果你是系统高手,基本就可以不用看本文了,你会觉得很简单,如果你是连ps,who -r都不知道的新手,建议你还是先放google搜索一些入门文章,并亲自使用linux一周以上,再回过头来看这篇文章。本文很大程度上参考了Ubuntu Performance Guides,篇幅较长,故分两页发出。

基础知识理解进程进程简介

刚才就几次提到进程,那么,我们应该怎么理解这个词语?广泛得说,所有在系统中运行的,用于执行各种各样任务的,都是一个进程,只不过根据具体执行任务的不同可以有所区分,例如,用于管理和维持操作系统运行的属于系统进程,而用于处理用户需求的就是用户进程。

进程并不是一个独立的概念,它是相互交互的,很多进程都为其他进程提供服务,或者携手共同完成某一个功能。这些服务中,有一些对于系统的运作是非常关键的,例如X-Windows服务。绝大多数的系统进程都是服务性质的进程,而绝大多数用户进程则是应用程序类进程。应用程序,比如你现在在使用的 FireFox(或者其它,估计FF最多吧)通常是由一个或多个满足用户需求的进程组成。总的来说,服务的开启和关闭是基于系统需求的,而应用程序的开启和关闭,则是基于用户的需求的。

我们上面说的这些进程阿,服务阿啥的,其实之间的区分并不是很明显,举个例子,Gnome的桌面系统就是由各种程序和进程组成,而他们不仅提供其它程序需要的服务,还可以支持用户的需求。GDE完全可以被称为是程序,进程,应用和服务的集合体,这不会产生任何冲突。

当然,我们还是要稍微做一下区分,后面才方便继续讲解。现在就统一一下,进程表示任何可以产生运行中的进程标志符的东西,程序则表示能产生进程的可执行文件。用户能够直接使用应用程序,而操作系统才使用服务。

进程基本操作

在你的机器上,唯一能够消耗你资源的就是正在运行的进程。如果当你发现自己的系统突然很慢,运行不正常时,通常只有两个可能,一种是某些进程运行异常,另一种就是某些进程所消耗的资源已经大于你所拥有的资源。

当然,想看看什么东西正在你机器上运行其实很简单,使用ps -aux或者top命令即可,这些东西资料很多,我就不多说了,实在不行man top或者man ps吧。当然,对于初学者来说最方便的还是利用图形化界面的系统监视器,如图:


(点击缩放)

所有信息都尽显眼前。注意,在系统监视器中,你不仅能看到进程运行情况,还能看到磁盘使用,CPU使用等很多有价值的信息,这些信息是接下来的部分可能用到的。

ok,现在我们知道,如果系统异常,如何去确定是什么进程异常了。但是接下来该怎么处理呢?无论是命令行还是图形界面显示,你都可以看到每一个进程都有属于自己的ID,也就是PID。它们都是进程的句柄,而不是表示真实的进程。这有什么区别?对于一个拥有多线程的进程来讲,可以让所有的线程都拥有同一个句柄,也可以让每一个线程都拥有一个句柄。太专业了?恩,通俗来讲,这就相当于……进程的身份证,我们通过它来标志进程。这个东西在ubuntu中默认可以有32768个不同的PID,每有一个新的进程,就分配一个当前未用的PID给它。

好了,让我们找到那个让我们系统变慢的该死的罪魁祸首,看看它的PID,然后用kill PID命令来关闭它。等等,你确定就是这个进程影响了你的系统?你确信没有错杀好人?好吧,其实可以先用kill -stop PID命令来暂停一个进程,看看没有了它,我们的系统是否正常。如果发现了冤假错案,没关系,kill -cont PID能让进程继续工作。

除了直接使用kill PID之外,我们还有更进一步的kill进程的办法。kill PID仅仅是发出一个TERM信号,然后进程能捕捉这个信号,开始释放资源,关闭程序,这不是一下子就完成的,因此在关闭程序之前,你可以结束打开的文件和完成正在做的任务。但是这导致一个问题,假如进程正在进行作业而且不能中断,那么进程可以忽略这个SIGTERM信号,而且如果进程失去响应了怎么办?别急,我们还可以试一试kill -1 PID命令,这个命令发送的是hang up信号,含义是“中止信号”,它告诉进程,终端已经被kill了。但这个信号同样只被运行良好的进程所拦截。假设这两种方式都无法结束进程,那么只能使用kill -9 PID了。这个命令发送的是真正的kill信号,对于这个信号,进程是不能忽略的。这是一个“我不管您在做什么,立刻停止”的信号,也就是说进程立刻被终止,不实施清理操作。

信号是用来与守护程序和进程通信的。任何活动任务都是一个进程,而守护程序是等待对某些事件做出反应或者按照日程安排执行任务的后台服务。一个程序必须有建在其中的信号处理程序用于捕获和应答信号。在LINUX中的signal参考指南解释了各种不同信号和这些信号的用途。常用的信号除了上面介绍的以外,还有INT,CHLD等。

时间: 2024-10-04 18:55:53

自己动手提高ubuntu系统的性能的相关文章

及时监控Windows Server 2008系统运行性能

为了满足自己的尝新愿望,不少朋友在时机不成熟的条件下,强行将自己的服务器系统升级为Windows Server 2008;尽管Windows Server 2008系统相比旧版本的服务器系统来说,运行 稳定性以及安全性 都有了显著地提升,可是我们仍然应该将自己的目光多投向该服务器系统的运行性能方面,毕竟及时了解服务器运行性能的变化可以帮助http://www.aliyun.com/zixun/aggregation/14045.html">网络管理员更好地安装.运行工作任务,从而保证服务器

在Ubuntu系统上使用apt-fast来加快apt-get下载的教程

  如果你在Debian或Ubuntu系统上经常感觉到apt-get 或 aptitude包安装速度过慢,那么这里就有几种改善这一情况的方法.你有没有考虑过改变正被使用的默认镜像站点?你有没有排除因特网连接的上游带宽成为瓶颈的可能? 如果不是这些原因,你可以尝试第三个选择:使用apt-fast工具.apt-fast实际上是一个围绕apt-get和aptitude所写的shell脚本容器,它能加速包的下载速度.apt-fast本质上采用aria2下载工具,这款工具能够以"块"的方式从多个

提高XP系统运行效率的一些方案

我们都知道,不管是台式机还是笔记本,随着使用时间的增长,windows xp系统的性能往往也随之降低,运行速度变得越来越慢,遇到这种情况,很多用户会选择去电脑店找专业的师傅或者是自己重装系统,可是找师傅需要付出一定金额的修理费,选择重装系统的话,应用软件也要重新安装,十分麻烦,其实我们也可以自己动手提高电脑的性能,而且并不是很难,那么我们怎么设置才能提高电脑的性能呢?现在小编就以中关村xp纯净版系统为例,带大家了解下xp系统下让电脑运行速度更快的几项配置技巧! 配置技巧如下: 1.配置Windo

Ubuntu系统部署HHVM网站环境(LEMH)

  HHVM(HipHop Virtual Machine),由大名鼎鼎的FACEBOOK公司开发的用来执行PHP脚本的虚拟机环境,可以大大的提高PHP执行环境性能.相比较我们传统的网站环境来看,同等的硬件配置可以承受更大的流量访问用户压力,只不过我们国内还没有流行起来,提供这类安装环境的教程比较少,也或者我们暂时还没有重视.   之前一段时间有网友提到是否可以提供这些方面的教程,毕竟老左之前也没有安装过和使用过,于是只能现学现用,参考国内.国外的已有较少的教程.这篇文章介绍在Ubuntu 14

系统架构-性能篇章2(系统拆分2-问题)

在文章<系统架构-性能篇章2(系统拆分1)>有提及到过关于系统在什么情况下会拆分,拆分的目之类的问题,本文会阐述一些关于拆分过程中遇到的各种各样的常见问题进行分析,和上一个文章中提及到的一样,讲解的目录如下: 1.负载均衡设备的问题. 2.不同系统之间的通信问题. 3.数据写入和查找的问题. 4.跨数据库事务问题. 5.跨数据库序列问题. 6.不同应用的本地缓存问题. 7.系统之间的直接依赖和间接依赖问题. 8.独立模块面临的单点问题. 9.各类批量分组.切换.扩展的问题. 10.统一监控和恢

如何提高SQL SERVER的性能

server|性能  如何提高SQL SERVER的性能   第一篇:通过维护表的索引来提高数据的访问速度   大多数SQL Server表需要索引来提高数据的访问速度,如果没有索引,SQL Server要进行表格扫描读取表中的每一个记录才能找到索要的数据.索引可以分为簇索引和非簇索引,簇索引通过重排表中的数据来提高数据的访问速度,而非簇索引则通过维护表中的数据指针来提高数据的索引.      索引的体系结构:   为什么要不断的维护表的索引?首先,简单介绍一下索引的体系结构.SQL Serve

如何提高SQL Server数据仓库性能

数据仓库通常是企业内部最大的数据库了.构建和管理系统是项大的任务,这些项目会由于众多用户提供的不兼容的输入而很快变得难以控制.提高系统的查询性能是可以实现的,但是必须要经过周密计划,随后还有具有远见的设计和开发阶段.在这篇文章中,我们将会列出获得并且为性能需求计划的一些技术,然后我们会在SQL Server上提高你的数据仓库性能. 需求 对于需要支持数百个GB到几个TB的数据系统而言,性能永远不会是你需要考虑的最后一件事情.当你收集数据仓库需求的时候,你就会被训练掌握用户性能需求的规则了.基于这

实例jie如何提高Java Web 服务性能优化实践

本文介绍如何提升 Java Web 服务性能,主要介绍了三种方法:一是采用 Web 服务的异步调用,二是引入 Web 服务批处理模式,三是压缩 SOAP 消息.重点介绍在编程过程中如何使用异步 Web 服务以及异步调用和同步调用的差异点.本文还示范了如何在项目中使用以上三种方法,以及各种方法所适合的应用场景. Java Web 服务简介 Web 服务是一种面向服务架构的技术,通过标准的 Web 协议提供服务,目的是保证不同平台的应用服务可以互操作.Web 服务(Web Service)是基于 X

怎么提高Win7系统速度

经常有用户会问:如何才能提升Win7系统运行速度?怎么才能让Win7电脑开机更快?给Win7系统加速的话题以前说过不少,但是比较分散, 这次我们就将这些小技巧都总结起来,方便大家阅读和查询.虽然都是一些非常简单的Win7系统优化项目,但如果都能做到,还是可以为我们的Win7系统提 速不少. 1.减少随机启动项 随机启动项,可以直接在"开始菜单"->"运行"中输入msconfig,在弹出的窗口中切换到"启动"标签,禁用掉那些不需要的启动项目就