centos服务器怎么内存优化

centos服务器怎么内存优化,第1张

作为一名Linux系统管理员,最主要的工作是优化系统配置,使应用在系统上以最优的状态运行,但硬件问题、软件问题、网络环境等的复杂性和多变性,导致了对系统的优化变得异常复杂,如何定位性能问题出在哪个方面,是性能优化的一大难题。 本文从系统入手,重点讲述由于系统软、硬件配置不当造成的性能问题,并且给出了检测系统故障和优化性能的一般方法和流程。
一、 系统性能分析的目的
11 找到系统性能的瓶颈
系统的性能是指 *** 作系统完成任务的有效性、稳定性和响应速度。Linux系统管理员可能经常会遇到系统不稳定、响应速度慢等问题,例如在Linux上搭建了一个Web服务,经常出现网页无法打开、打开速度慢等现象。遇到这些问题,就有人会抱怨Linux系统不好,其实这些都是表面现象。 *** 作系统完成一个任务是与系统自身设置、网络拓朴结构、路由设备、路由策略、接入设备、物理线路等多个方面都密切相关的,任何一个环节出现问题,都会影响整个系统的性能。因此,当Linux应用出现问题时,应当从应用程序、 *** 作系统、服务器硬件、网络环境等方面综合排查,定位问题出现在哪个部分,然后集中解决。
12 提供性能优化方案
查找系统性能瓶颈是个复杂而耗时的过程,需要在应用程序、 *** 作系统、服务器硬件、网络环境等方面进行查找和定位,影响性能最大的是应用程序和 *** 作系统两个方面,因为这两个方面出现的问题不易察觉,隐蔽性很强。而硬件、网络方面出现的问题,一般都能马上定位。一旦找到了系统性能问题,解决起来就非常迅速和容易,例如发现系统硬件存在问题,如果是物理故障,那么更换硬件就可以了,如果是硬件性能不能满足需求,升级硬件就可以了;如果发现是网络问题,比如带宽不够、网络不稳定,只需优化和升级网络即可;如果发现是应用程序问题,修改或优化软件系统即可;而如果是 *** 作系统配置问题,修改系统参数、修改系统配置即可。
可见,只要找到了性能瓶颈,就可以提供性能优化方案,有标准、有目的地进行系统优化。
13 使系统硬件和软件资源的使用达到平衡
Linux *** 作系统是一个开源产品,也是一个开源软件的实践和应用平台,在这个平台下由无数的开源软件支撑,常见的有Apache、Tomcat、MySQL、PHP等。开源软件的最大理念是自由、开放,那么Linux作为一个开源平台,最终要实现的是通过这些开源软件的支持,以最低廉的成本,达到应用性能的最优化。但是,系统的性能问题并非是孤立的,解决了一个性能瓶颈,可能会出现另一个性能瓶颈,所以说性能优化的最终目的是:在一定范围内使系统的各项资源使用趋于合理并保持一定的平衡,即系统运行良好的时候恰恰就是系统资源达到了一个平衡状态的时候。而在 *** 作系统中,任何一项资源的过度使用都会破坏这种平衡状态,从而导致系统响应缓慢或者负载过高。例如,CPU资源的过度使用会造成系统中出现大量的等待进程,导致应用程序响应缓慢,而进程的大量增加又会导致系统内存资源的增加,当物理内存耗尽时,系统就会使用虚拟内存,而虚拟内存的使用又会造成磁盘I/O的增加并加大CPU的开销。因此,系统性能的优化就是在硬件、 *** 作系统、应用软件之间找到一个平衡点。
二、 分析系统性能涉及的人员
21 Linux系统管理人员
在做性能优化过程中,系统管理人员承担着很重要的任务,首先,系统管理人员要了解和掌握 *** 作系统的当前运行状态,例如系统负载、内存状态、进程状态、CPU负荷等信息,这些信息是检测和判断系统性能的基础和依据;其次,系统管理人员还有掌握系统的硬件信息,例如磁盘I/O、CPU型号、内存大小、网卡带宽等参数信息,然后根据这些信息综合评估系统资源的使用情况;第三,作为一名系统管理人员,还要掌握应用程序对系统资源的使用情况,更深入的一点就是要了解应用程序的运行效率,例如是否有程序BUG、内存溢出等问题,通过对系统资源的监控,就能发现应用程序是否存在异常,如果确实是应用程序存在问题,需要把问题立刻反映给程序开发人员,进而改进或升级程序。
性能优化本身就是一个复杂和繁琐的过程,系统管理人员只有了解了系统硬件信息、网络信息、 *** 作系统配置信息和应用程序信息才能有针对性地的展开对服务器性能优化,这就要求系统管理员有充足的理论知识、丰富的实战经验以及缜密分析问题的头脑。
22 系统架构设计人员
系统性能优化涉及的第二类人员就是应用程序的架构设计人员。如果系统管理人员在经过综合判断后,发现影响性能的是应用程序的执行效率,那么程序架构设计人员就要及时介入,深入了解程序运行状态。首先,系统架构设计人员要跟踪了解程序的执行效率,如果执行效率存在问题,要找出哪里出现了问题;其次,如果真的是架构设计出现了问题,那么就要马上优化或改进系统架构,设计更好的应用系统架构。
23 软件开发人员
系统性能优化最后一个环节涉及的是程序开发人员,在系统管理员或架构设计人员找到程序或结构瓶颈后,程序开发人员要马上介入进行相应的程序修改。修改程序要以程序的执行效率为基准,改进程序的逻辑,有针对性地进行代码优化。例如,系统管理人员在系统中发现有条SQL语句耗费大量的系统资源,抓取这条执行的SQL语句,发现此SQL语句的执行效率太差,是开发人员编写的代码执行效率低造成的,这就需要把这个信息反馈给开发人员,开发人员在收到这个问题后,可以有针对性的进行SQL优化,进而实现程序代码的优化。
从上面这个过程可以看出,系统性能优化一般遵循的流程是:首先系统管理人员查看系统的整体状况,主要从系统硬件、网络设备、 *** 作系统配置、应用程序架构和程序代码五个方面进行综合判断,如果发现是系统硬件、网络设备或者 *** 作系统配置问题,系统管理员可以根据情况自主解决;如果发现是程序结构问题,就需要提交给程序架构设计人员;如果发现是程序代码执行问题,就交给开发人员进行代码优化。这样就完成了一个系统性能优化的过程。
三、影响Linux性能的各种因素
31 系统硬件资源
1.CPU
CPU是 *** 作系统稳定运行的根本,CPU的速度与性能在很大程度上决定了系统整体的性能,因此,CPU数量越多、主频越高,服务器性能也就相对越好。但事实并非完全如此。
目前大部分CPU在同一时间内只能运行一个线程,超线程的处理器可以在同一时间运行多个线程,因此,可以利用处理器的超线程特性提高系统性能。在Linux系统下,只有运行SMP内核才能支持超线程,但是,安装的CPU数量越多,从超线程获得的性能方面的提高就越少。另外,Linux内核会把多核的处理器当作多个单独的CPU来识别,例如两个4核的CPU,在Lnux系统下会被当作8个单核CPU。但是从性能角度来讲,两个4核的CPU和8个单核的CPU并不完全等价,根据权威部门得出的测试结论,前者的整体性能要比后者低25%~30%。
可能出现CPU瓶颈的应用有邮件服务器、动态Web服务器等,对于这类应用,要把CPU的配置和性能放在主要位置。
2.内存
内存的大小也是影响Linux性能的一个重要的因素,内存太小,系统进程将被阻塞,应用也将变得缓慢,甚至失去响应;内存太大,导致资源浪费。Linux系统采用了物理内存和虚拟内存两种方式,虚拟内存虽然可以缓解物理内存的不足,但是占用过多的虚拟内存,应用程序的性能将明显下降,要保证应用程序的高性能运行,物理内存一定要足够大;但是过大的物理内存,会造成内存资源浪费,例如,在一个32位处理器的Linux *** 作系统上,超过8GB的物理内存都将被浪费。因此,要使用更大的内存,建议安装64位的 *** 作系统,同时开启Linux的大内存内核支持。
由于处理器寻址范围的限制,在32位Linux *** 作系统上,应用程序单个进程最大只能使用2GB的内存,这样以来,即使系统有更大的内存,应用程序也无法“享”用,解决的办法就是使用64位处理器,安装64位 *** 作系统。在64位 *** 作系统下,可以满足所有应用程序对内存的使用需求 ,几乎没有限制。
可能出现内存性能瓶颈的应用有打印服务器、数据库服务器、静态Web服务器等,对于这类应用要把内存大小放在主要位置。
3.磁盘I/O性能
磁盘的I/O性能直接影响应用程序的性能,在一个有频繁读写的应用中,如果磁盘I/O性能得不到满足,就会导致应用停滞。好在现今的磁盘都采用了很多方法来提高I/O性能,比如常见的磁盘RAID技术。
RAID的英文全称为:Redundant Array of Independent Disk,即独立磁盘冗余阵列,简称磁盘阵列。RAID通过将多块独立的磁盘(物理硬盘)按不同方式组合起来形成一个磁盘组(逻辑硬盘),从而提供比单个硬盘更高的I/O性能和数据冗余。
通过RAID技术组成的磁盘组,就相当于一个大硬盘,用户可以对它进行分区格式化、建立文件系统等 *** 作,跟单个物理硬盘一模一样,唯一不同的是RAID磁盘组的I/O性能比单个硬盘要高很多,同时在数据的安全性也有很大提升。
根据磁盘组合方式的不同,RAID可以分为RAID0,RAID1、RAID2、RAID3、RAID4、RAID5、RAID6、RAID7、RAID0+1、RAID10等级别,常用的RAID级别有RAID0、RAID1、RAID5、RAID0+1,这里进行简单介绍。
RAID 0:通过把多块硬盘粘合成一个容量更大的硬盘组,提高了磁盘的性能和吞吐量。这种方式成本低,要求至少两个磁盘,但是没有容错和数据修复功能,因而只能用在对数据安全性要求不高的环境中。
RAID 1:也就是磁盘镜像,通过把一个磁盘的数据镜像到另一个磁盘上,最大限度地保证磁盘数据的可靠性和可修复性,具有很高的数据冗余能力,但磁盘利用率只有50%,因而,成本最高,多用在保存重要数据的场合。

许多站长在IDC服务商那里租借香港服务器或是托管香港服务器之后的一段时刻,会发现网站服务器的反响有所变慢。这是为什么呢?其实原因很简单,就好比咱们用电脑,用过一段时刻之后都不整理垃圾和一些浏览器缓存文件,导致电脑体系盘垃圾文件越来越多,体系拜访体系的时刻加长,运转速度自然越来越慢。咱们租借的香港服务器也是相同的道理,服务器贮存的数据越来越多,影响了香港服务器的反响速度。因而,咱们若想要进步香港服务器的功能,要对服务器的配件进行合理的优化晋级。首要,咱们能够经过添加内存容量进行配件的晋级。网站服务器的拜访速度上不去,根本原因是租借香港服务器的内存不能支撑现在数据的运转,因而添加服务器的内存也是更有必要的,这样会使处理器子体系愈加高效的运转,内存容量的进步和价格的下降是现在行业的主要特征,那么添加内存容量也是势在必行。其次,咱们能够经过替换硬盘,来达到配件晋级的效果。这一点关于往往入门级的服务器特别重要。一般来说,入门级服务器出于控制价格的考虑,在硬盘上的装备等往往会大打折扣。因而,若你现在运用的服务器在装备方面刚好有这样的问题,那么将他们替换成至少具有8MB的硬盘。在预算允许的条件下,购买10000转的硬盘也会对功能大有帮忙,仅仅需要在散热体系的规划上多费些脑筋。再者,咱们运用磁盘阵列(RAID),RAID不只能够大幅进步香港服务器租借的功能,还能添加体系的安全性。不过,施行这一方案时,请专业人员来帮忙完结,由于不同装备选择将对体系的终究功能体现发生相当大的影响。最终,除了以上几种方法,咱们还能够经过晋级处理器来晋级配件,关于运用至强处理器的服务器而言,这一条并不适用,一方面相关处理器很难购得,另一方面这类服务器结构杂乱,晋级进程杂乱。关于运用入门级处理器,这一手法就相对容易得多了,不只可选择的处理器类型很多,而且安装便利,也根本不必考虑对散热体系的改造。

什么是网站优化?

网站优化可以从狭义或者广义两个方面来说明,网站优化是对网站进行程序、域名注册查询、内容、版块、布局等多方面的优化调整,也是网站设计时适合搜索引擎检索,满足搜索引擎排名的指标,从而在搜索引擎检索中获得流量排名靠前,增强搜索引擎营销的效果使网站的产品相关的关键词能有好的排位。指出网站优化使网站更容易被搜索引擎收录,提高用户体验(UE)和转化率进而创造价值。其实通俗的来讲,网站优化分为两个部分,是站内优化,二是站外优化。

网站优化的主要作用有哪些

网站优化,可以是SEO搜索引擎优化,在百度等搜索引擎中获取更好的排名以及流量;也可以是网站程序优化,让用户在访问网站时页面加载更流畅;还可以是网站页面风格和画面感的优化,让页面给人的感觉更舒适;还可以是文字的优化,在心理学的角度,让人们更有兴趣继续在网站停留的更久,当然这意味着,网站的某种营销目的的转化率会随之提高。

网站优化的主要作用有哪些

网站优化的作用主要有以下几点:

1、页面更精美;

2、提升企业在互联网的品牌形象;

3、用户停留时间更长;

4、网页打开速度更流畅;

5、获取从百度等搜索引擎的自然流量;

6、提高网站如购买商品等转化率。

网站优化的作用在选择的互联网时代中的作用是很大的,不仅仅可以帮我们提高企业的形象,还可以为我们从互联网上获取定量的客户,增加我们的知名度,用心做好网站的优化是对企业百里无害的。

针对性的做网站性能优化,以上内容引用网站企顾营销《怎么做网站优化?》

1、应该分配和释放多个对象
你应该尽量避免过量分配内存,因为内存分配可能是代价高昂的。释放内存块可能更昂贵,因为大多数分配算符总是企图连接临近的已释放的内存块成为更大的块。直到Windows NT 40 service pack 40,在多线程处理中,系统堆通常都运行得很糟。堆被一个全局锁保护,并且在多处理器系统上是不可扩展的。
2不应该考虑使用处理器高速缓存
大多数人都知道由虚拟内存子系统导致的hard 页错误代价很高,最好避免。但是许多人认为其他内存访问方法没有什么区别。自从80486以后,这一观点就不对了。现代的CPUs比RAM要快得多,RAM至少需要两级内存缓存 ,高速L1 缓存能保存8KB数据和8KB指令,而较慢的L2 缓存能保存几百KB的数据和代码,这些数据和代码混合在一起。L1 缓存中内存区域的一个引用需要一个时钟周期,L2 缓存的引用需要4到7个时钟周期,而主内存的引用需要许多个处理器时钟周期。后一数字不久将会超过100个时钟周期。在许多方面,缓存像一个小型的,高速的,虚拟内存系统。
至于和缓存有关的基本内存单元不是字节而是缓存列。Pentium 缓存列有32个字节宽。Alpha 缓存列有64个字节宽。这意味着在L1 缓存中只有512个slot给代码和数据。如果多个数据一起使用(时间位置)而并不存储在一起(空间位置),性能会很差。数组的空间位置很好,而相互连接的列表和其他基于指针的数据结构的位置往往很差。
把数据打包到同一个缓存列中通常会有利于提高性能,但是它也会破坏多处理器系统的性能。内存子系统很难协调处理器间的缓存。如果一个被所有处理器使用的只读数据,和一个由一个处理器使用并频繁更新的数据共享一个缓存 列,那么缓存将会花费很长时间更新这个缓存列的拷贝。这个Ping-Pong高速游戏通常被称为"缓存 sloshing"。如果只读数据在一个不同的缓存 列中,就可以避免sloshing。
对代码进行空间优化比进行速度优化效率更高。代码越少,代码所占的页也越少,这样需要的运行设置和产生的页错误也会更少,同时占据的缓存 列也会更少。然而,某些核心函数应该进行速度优化。可以利用profiler去识别这些函数。
3决不要缓存频繁使用的数据。
软件缓存可以被各种应用程序使用。当一个计算代价很高时,你会保存结果的一个拷贝。这是一个典型的时空折中方法:牺牲一些存储空间以节省时间。如果做得好,这种方法可能非常有效。
你必须正确地进行缓存。如果缓存了错误数据,就会浪费存储空间。如果缓存得太多,其他 *** 作可以使用的内存将会很少。如果缓存得太少,效率又会很低,因为你必须重新计算被缓存 遗漏的数据。如果将时间敏感数据缓存得时间过长,这些数据将会过时。一般,服务器更关心的是速度而不是空间,所以他们要比桌面系统进行更多的缓存。一定要定期去除不用的缓存,否则将会有运行设置问题。
4应该创建多个线程,越多越好。
调整服务器中起作用的线程数目是很重要的。如果线程是I/O-bound的,将会花费很多时间用来等待I/O的完成-一个被阻塞的线程就是一个不做任何有用工作的线程。加入额外的线程可以增加通量,但是加入过多的线程将会降低服务器的性能,因为上下文交换将会成为一个重大的overhead。上下文交换速度应该低的原因有三个:上下文交换是单纯的overhead,对应用程序的工作没有任何益处;上下文交换用尽了宝贵的时钟周期;最糟的是,上下文交换将处理器的缓存填满了没用的数据,替换这些数据是代价高昂的。
有很多事情是依靠你的线程化结构的。每个客户端一个线程是绝对不合适的。因为对于大量用户端,它的扩展性不好。上下文交换变得难以忍受,Windows NT用尽了资源。线程池模型会工作得更好,在这种方法中一个工人线程池将处理一条请求列,因为Windows 2000提供了相应的APIs,如QueueUserWorkItem。
5应该对数据结构使用全局锁
使数据线程安全的最简单方法是把它套上一把大锁。为简单起见,所有的东西都用同一把锁。这种方法会有一个问题:序列化。为了得到锁,每一个要处理数据的线程都必须排队等候。如果线程被一把锁阻塞,它没有在做任何有用的事。当服务器的负载较轻时,这个问题并不常见,因为一次可能只有一个线程需要锁。在负载很重的情况下,对锁的激烈争夺可能就会成为一个大问题。
设想在多车道高速公路上发生了一个意外事故,这条高速公路上的所有车辆都被转向一条狭窄的道路。如果车辆很少,这一转换对交通流的速率的影响可以忽略。如果车辆很多,当车辆慢慢并入那条单通道时,交通阻塞会延伸几英里。
有几种技术能够减少锁竞争。
· 不要过分保护,也就是说,不是非常必要不要锁住数据。只有需要时才去持有锁,而且时间不要过长。不要在大段代码周围或频繁执行的代码中没必要地使用锁,这一点很重要。
· 对数据进行分割,使它能够用一套独立的锁保护。例如,一个符号表可以按标识符的第一个字母分割,这样在修改名字以Q开头的符号的值时,就不会去读名字以H开头的符号的值。
· 使用APIs的Interlocked 系列(InterlockedIncrement,InterlockedCompareExchangePointer等)自动修改数据而不需要锁。
· 当数据不是经常被修改时可以使用多读者/单作者(multi-reader/single-writer)锁。你将获得更好的并发性,尽管锁 *** 作的代价将更高并且你可能会冒饿死作者的危险。
· 在关键部分使用循环计数器。参见Windows NT 40 service pack 3中的SetCriticalSectionSpinCount API。
· 如果你不能得到锁,使用TryEnterCriticalSection并做一些其他的有用的工作。
高竞争导致serialization,serialization导致降低CPU的利用率,这促使用户加入更多的线程,结果事情变得更糟。
6不必注意多处理器机器
你的代码在多处理器系统上比在单处理器系统上运行得还要糟,这可能是件令人恶心的事。一个很自然的想法是,在一个N维系统上运行N次会更好。性能很差的原因是竞争:锁竞争,总线竞争,和/或缓存列竞争。处理器都在是争夺共享资源的所有权,而不是做更多的工作。
如果你一定要编写多线程应用程序的话,你应该在多处理器盒上对你的应用程序进行强度测试和性能测试。单处理器系统通过时间分片地执行线程而提供一个并发性的假象。多处理器盒具有真正的并发性,竞争环境和竞争更容易发生。
7应该始终使用模块化调用;他们很有趣。
利用同步模块化调用来执行I/O *** 作对大多数桌面应用程序来说是合适的。但是,他们不是使用服务器上的CPU(s)的好方法。I/O *** 作要花费上百万个时钟周期来完成,这些时钟周期本来可以被更好地利用。利用异步I/O你能得到显著提高的用户请求率和I/O通量,不过增加了额外的复杂性。
如果你有需要花费很长时间的模块化调用或I/O *** 作,你应该考调拨多少资源给他们。你想使用所有的线程还是有个限制?一般地,使用有限的几个线程要好些。构建一个小的线程池和队列,利用队列来安排线程的工作完成模块化调用。这样,其他线程就可以拾取和处理你的非模块化的请求。
8不要进行测量
当你能够测量你所谈论的事情并用数字表达它时,这就表示你对他有了一定的了解;但是如果你不能用数字表达时,你的知识是贫瘠的不能令人满意的;这可能是知识的开始,但这时你简直不可能将你的思想提高到科学的水平。
- Lord Kelvin (William Thomson)
如果不测量你就不能了解应用程序的特性。你在黑暗中摸索,一半是靠猜测。如果不识别性能问题,你就不能做任何改进或做出工作量计划。
测量包括黑匣子测量和profiling。黑匣子测量的意思是收集由性能计数器(内存使用,上下文交换,CPU利用等)和外部检测工具(通量,反映时间等)所显示的数据。为了profile你的代码,你编译代码的一个工具版,然后在各种条件下运行它,并收集关于执行时间和过程调用频率的统计数据。
测量如果不用于分析的话就一点用都没有。测量将不仅告诉你有问题,而且甚至能帮助你找到问题发生在哪,但它不能告诉你为什么会有问题。对问题进行分析以便你能正确地改正他们。要从根本上解决问题而不是停留在表面现象。
当你进行改动后,要重新测量。你要知道你的改动是否有效。改动也可能会暴露其他性能问题,测量-分析-改正-再测量的循环就会重新开始。你也必须要有规律地进行测量,以便发现性能衰退问题。
9应该使用单一用户,单一请求的测试方法。
书写ASP和ISAPI应用程序的一个通病是只用一个浏览器去测试应用程序。当他们在Internet上应用他们的程序时,他们才发现他们的应用程序不能处理高负载,并且通量和反应时间另人可怜。
用一个浏览器测试是必要的但是不够的。如果浏览器反应得不够快,你就知道你有麻烦了。但即使它在使用一个浏览器时很快,你也不知道它处理负载的能力如何。如果十几个用户同时请求会发生什么事?一百个呢?你的应用程序能容忍什么样的通量?它能提供什么样的反应时间?在轻载时这些数字会怎样?中等负载呢?重载呢?在多处理器机器上你的应用程序会如何?对你的应用程序进行强度测试,这对于找出bugs发现性能问题来说是基本的。
类似的负载测试考虑适用于所有的服务器应用程序。
10不应使用实际环境。
人们往往只在几个特定的,人工的环境(如下benchmarks)下调整应用程序。选择和实际情况相对应的各种情况,并为针对各种 *** 作进行优化,这一点很重要。如果你不这样做,你的用户和评论家一定会这样做,并且他们将依此来评判你的应用程序的好坏。

服务器的性能对于每个企业来讲都是十分重要的一环,一款性能强大性价比高的服务器能够为企业的竞争力增加更多筹码那么当服务器性能不足时,如何才能让其达到最强状态呢先定一个小目标 双核

一、提高服务器并发处理能力
我们总是希望一台服务器在单位时间内能处理的请求越多越好,这也成了web服务器的能力高低的关键所在。服务器之所以可以同时处理多个请求,在于 *** 作系统通过多执行流体系设计,使得多个任务可以轮流使用系统资源,这些资源包括CPU、内存以及I/O等。这就需要选择一个合适的并发策略来合理利用这些资源,从而提高服务器的并发处理能力。这些并发策略更多的应用在apache、nginx、lig>

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/13120262.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-06-04
下一篇 2023-06-04

发表评论

登录后才能评论

评论列表(0条)

保存