如何进行网站性能优化

如何进行网站性能优化,第1张

一、前端优化

网站性能优化是一个很综合的话题,涉及到服务器的配置和网站前后端程序等各个方面,我只是从实际经历出发,分享一下自己所尝试过的网站性能优化方法。之所以在标题上挂一个web20,是因为本文更偏重于中小网站的性能优化,我所使用的系统也是典型web20的LAMP架构。

首先讲讲前端的优化,用户访问网页的等待时间,有80%是发生在浏览器前端,特别是页面和页面中各种元素(、CSS、Javascript、flash)的下载之上。因此在很多情况下,相对于把大量的时间花在艰苦而繁杂的程序改进上,前端的优化往往能起到事半功倍的作用。雅虎最近将内部使用的性能测试工具yslow向第三方公开,并发布了著名的网站性能优化的十三条规则,建议你下载并安装yslow,并作为测评网站优化效果的工具。下面我挑其中特别有价值的具体说明一下优化的方法:

对于第一次访问您网站,尚未在浏览器cache中缓存您网站内容的用户,我们可以做的事情包括:

1)减少一个页面访问所产生的package-infophppackage=APC)、TurckMMCache()、phpaccelebrator(),还有收费的ZendPerformanceSuite

3)将静态内容和动态内容分开处理

apache是一个功能完善但比较庞大的webserver,它的资源占用基本上和同时运行的进程数呈正比,对服务器内存的消耗比较大,处理并行任务的效率也一般。在一些情况下,我们可以用比较轻量级的webserver来host静态的、样式表和javascript文件,这样可以大大提升静态文件的处理速度,还可以减少对内存占用。我使用的webserver是来自俄罗斯的nginx,其他选择方案还包括lig>

4)基于反向代理的前端访问负载均衡

当一台前端服务器不足以应付用户访问时,通过前端机实现web访问的负载均衡是最快速可行的方案。通过apache的mod_proxy可以实现基于反向代理的负载均衡,这里推荐使用nginx做代理服务器,处理速度较apache更快一些。

5)应用缓存技术提高数据库效能,文件缓存和分布式缓存

数据库访问处理并发访问的能力是很多网站应用的关键瓶颈,在想到使用主从结构和多farm的方式构建服务器集群之前,首先应该确保充分使用了数据库查询的缓存。一些数据库类型(如mysql的innoDB)自身内置对缓存的支持,此外,还可以利用程序方法将常用的查询通过文件或内存缓存起来。比如通过php中的ob_start和文件读写函数可以很方便的实现文件形式的缓存,而如果你拥有多台服务器,可以通过memcache技术通过分布式共享内存来对数据库查询进行缓存,不仅效率高而且扩展性好,memcache技术在livejournal和Craigslistorg等知名网站应用中都得到了检验。

6)服务器运行状态的检测,找到影响性能的瓶颈所在

系统优化没有一劳永逸的方法,需要通过检测服务器的运行状态来及时发现影响性能的瓶颈,以及可能存在的潜在问题,因为网站的性能,永远取决于木桶中的短板。可以编写一些脚本来检测web服务的运行,也有一些开源的软件也提供了很好的功能

7)良好的扩展架构是稳定和性能的基础

一些技巧和窍门可以帮你度过眼前的难关,但要想使网站具备应付大规模访问的能力,则需要从系统架构上进行彻底的规划,好在很多前人无私的把他们架构

网站的经验分享给我们,使我们可以少走甚多弯路。我最近读到的两篇有启发的文章:

-从LiveJournal后台发展看大规模网站性能优化方法

-Myspace的六次重构

最后不得不提到程序编码和数据库结构对性能的影响,一系列糟糕的循环语句,一个不合理的查询语句、一张设计不佳的数据表或索引表,都足以会使应用程序运行的速度成倍的降低。培养全局思考的能力,养成良好的编程习惯,并对数据库运行机制有所了解,是提高编程质量的基础。

优化内存的管理,提高内存的使用效率,尽可能地提高运行速度,是我们所关心的问题。下面介绍在Windows *** 作系统中,提高内存的使用效率和优化内存管理的几种方法。
方法一:调整高速缓存区域的大小
可以在“计算机的主要用途”选项卡中设置系统利用高速缓存的比例。如果系统的内存较多,可选择“网络服务器”,这样系统将用较多的内存作为高速缓存。在CD-ROM标签中,可以直接调节系统用多少内存作为CD-ROM光盘读写的高速缓存。
方法二:及时释放内存空间
如果你发现系统的内存不多了,就要注意释放内存。所谓释放内存,就是将驻留在内存中的数据从内存中释放出来。释放内存最简单有效的方法,就是重新启动计算机。另外,就是关闭暂时不用的程序。还有要注意剪贴板中如果存储了图像资料,是要占用大量内存空间的。这时只要剪贴几个字,就可以把内存中剪贴板上原有的冲掉,从而将它所占用的大量的内存释放出来。 
方法三:监视内存
系统的内存不管有多大,总是会用完的。虽然有虚拟内存,但由于硬盘的读写速度无法与内存的速度相比,所以在使用内存时,就要时刻监视内存的使用情况。Windows *** 作系统中提供了一个系统监视器,可以监视内存的使用情况。一般如果只有60%的内存资源可用,这时你就要注意调整内存了,不然就会严重影响电脑的运行速度和系统性能。
方法四:提高系统其他部件的性能
计算机其他部件的性能对内存的使用也有较大的影响,如总线类型、CPU、硬盘和显存等。如果显存太小,而显示的数据量很大,再多的内存也是不可能提高其运行速度和系统效率的。如果硬盘的速度太慢,则会严重影响整个系统的工作。
方法五:优化内存中的数据
在Windows中,驻留内存中的数据越多,就越要占用内存资源。所以,桌面上和任务栏中的快捷图标不要设置得太多。如果内存资源较为紧张,可以考虑尽量少用各种后台驻留的程序。平时在 *** 作电脑时,不要打开太多的文件或窗口。长时间地使用计算机后,如果没有重新启动计算机,内存中的数据排列就有可能因为比较混乱,从而导致系统性能的下降。这时你就要考虑重新启动计算机。

比如你要分配12M,就是12×1024×1024,也就是12582912
以上这句就是10进制,你自己算下,要是就12m的话12582912就可以
还有他说的这个只对服务器有用,你是服务器吗?

Microsoft SQL Server 2000 的内存管理组件消除了对 SQL Server 可用的内存进行手工管理的需要。SQL Server 在启动时根据 *** 作系统和其它应用程序当前正在使用的内存量,动态确定应分配的内存量。当计算机和SQL Server 上的负荷更改时,分配的内存也随之更改。有关更多信息,请参见内存构架。
下列服务器配置选项可用于配置内存使用并影响服务器性能:
min server memory
max server memory
max worker threads
index create memory
min memory per query

min server memory 服务器配置选项可用于确保 SQL Server 至少以最小的分配内存量启动,并且内存低于该值时不会释放内存。可以基于 SQL Server 的大小及活动将该配置选项设置为特定的值。始终将 min server memory 服务器配置选项设置为某个合理的值,以确保 *** 作系统不向 SQL Server 请求太多内存而影响 SQL Server 性能。
max server memory 服务器配置选项可用于:在 SQL Server 启动及运行时,指定 SQL Server 可以分配的最大内存量。如果知道有多个应用程序与 SQL Server 同时运行,而且想保障这些应用程序有足够的内存运行,可以将该配置选项设置为特定的值。如果这些其它应用程序(如 Web 服务器或电子邮件服务器)只根据需要请求内存,则 SQL Server 将根据需要给它们释放内存,因此不要设置 max server memory 服务器配置选项。然而,应用程序通常在启动时不假选择地使用可用内存,而如果需要更多内存也不请求。如果有这种行为方式的应用程序与 SQL Server 同时运行在相同的计算机上,则将 max server memory 服务器配置选项设置为特定的值,以保障应用程序所需的内存不由 SQL Server 分配出。
不要将 min server memory 和 max server memory 服务器配置选项设置为相同的值,这样做会使分配给 SQL Server 的内存量固定。动态内存分配可以随时间提供最佳的总体性能。有关更多信息,请参见服务器内存选项。
max worker threads 服务器配置选项可用于指定为用户连接到 SQL Server 提供支持的线程数。255 这一默认设置对一些配置可能稍微偏高,这要具体取决于并发用户数。由于每个工作线程都已分配,因此即使线程没有正在使用(因为并发连接比分配的工作线程少),可由其它 *** 作(如高速缓冲存储器)更好地利用的内存资源也可能是未使用的。一般情况下,应将该配置值设置为并发连接数,但不能超过 1,024。有关更多信息,请参见max worker threads 选项。
说明当 SQL Server 运行在 Microsoft Windowsreg; 95 或 Microsoft Windows 98 上时,最大工作线程服务器配置选项不起作用。
index create memory 服务器配置选项控制创建索引时排序 *** 作所使用的内存量。在生产系统上创建索引通常是不常执行的任务,通常调度为在非峰值时间执行的作业。因此,不常创建索引且在非峰值时间时,增加该值可提高索引创建的性能。不过,最好将 min memory per query 配置选项保持在一个较低的值,这样即使所有请求的内存都不可用,索引创建作业仍能开始。有关更多信息,请参见 index create memory 选项。
min memory per query 服务器配置选项可用于指定分配给查询执行的最小内存量。当系统内有许多查询并发执行时,增大 min memory per query 的值有助于提高消耗大量内存的查询(如大型排序和哈希 *** 作)的性能。不过,不要将 min memory per query 服务器配置选项设置得太高,尤其是在很忙的系统上,因为查询将不得不等到能确保占有请求的最小内存、或等到超过 query wait 服务器配置选项内所指定的值。如果可用内存比执行查询所需的指定最小内存多,则只要查询能对多出的内存加以有效的利用,就可以使用多出的内存。
附实例一篇:
最近,为了能在数据库服务器中运行其他应用程序,在保持数据库 *** 作系统版本不变的前提下对数据库服务器进行了软、硬件上的升级。在软件上,将 *** 作系统从Windows 2000升级到Windows Server 2003;在硬件上,将服务器中的内存由原来的512MB增加到1GB(1024MB)。
在升级后的开始几个星期之内,服务器在使用中表现良好。但是不久后就发现,在服务器上同时运行的其他应用程序却出现了异常,不时地报出内存分配不足的警告。经过几次跟踪后发现,原来是SQL Server吞去了大部分内存所致。被SQL Server占用的内存由升级前的不到400MB一下子增加到现在的900MB,并且有不断增长的趋势。
通过查找原因才知道这是SQL Server 缓冲池的预期行为。默认情况下,在启动 SQL Server之后,SQL Server会根据 *** 作系统报告的物理内存数来动态增大或缩小高速缓冲存储器的容量。只要可用物理内存大小保持在4MB到10MB之间,SQL Server 缓冲池就会继续增大(保留可用物理内存在4MB到10MB之间是为了避免 *** 作系统因为缺少内存而频繁地换页)。如果物理可用内存变得较少的时候,则SQL Server会将一些内存释放给 *** 作系统。
为了使运行在服务器上的应用程序都能达到比较满意的效果,同时也为了能给其他应用程序分配足够的内存,需要采取措施限制SQL Server 的内存使用量。我们可以通过设置SQL Server 数据库引擎使用的内存的上下限来达到此目的。其具体步骤是:
1打开企业管理器,展开服务器组。
2单击该服务器,点击鼠标右键,单击属性菜单。
3在d出的对话框中单击内存选项卡。
内存设置方法有两种:
1设置min server memory和max server memory 在一个范围段内。
比如,我们将它设置成最小0MB,最大255MB。这种方法在为一台服务器中运行多个应用程序分配内存时非常有用。
2设置 min server memory 和 max server memory 为同一数值。
比如,可以将它最大和最小值都设置成255MB。这样的设置方法与窗口中的另一个选项“使用固定的内存大小” 相一致。
虽然内存最小值和最大值设置是高级选项,但在设置完毕之后,最好还是先将SQL Server服务停止后再重新运行,以便SQL Server能更好地对内存进行合理安排。

在dell的11代服务器内存模式有三种,Memory Optimized Mode、Advanced ECC Mode、Mirror Mode。这三种有什么区别呢?
Memory Optimized Mode:优化器模式
DDR3的内存控制器都在CPU上,每个CPU上有三个独立的Memory Controller Hub(MCH)。在这个模式下,MCHs是独立工作的,一个可以读,一个可以写,一个可以空闲。内存可以安装在one、two、three chanels上。这也就意味着有些不符合常规的内存接法可以正常工作。比如3G,6G,12G。
Advanced ECC Mode:
这个模式下,将两个MCH绑在一起变成一个128位的总线,另外一个MCH无法使用,如果开启这个模式并在剩余的MCH上接内存,机器就会报错。
Mirror Mode:
这个模式下,系统应用三个chanel中的两个,每个chanel写同样的数据,读的时候采取轮询的方式。如果发现有一个chanel的内存出错,系统会自动屏蔽此chanel。运用这种模式,能使用的内存容量是安装上去的一半。
假设有9个dimm,一共有三个chanel,A1A4A7 一个chanel,A2A5A8一个chanel,A3A6A9一个chanel而Advanced ECC Mode 和Mirror Mode只能用到两个MCH,也就是只能使用两个chanel,默认是将A1A4A7这个chanel闲置
简单来说 (个人猜测)
1 优化器模式 内存随便插 性能较低
2 高级ECC模式 支持多通道 最高性能 但是只能插在特定的内存插槽
4 镜像模式最高很简单 你插入四条8G内存 只会显示16G 另一半做冗余 坏了一根也没关系!

生产环境中,MySQL 不经意间吃掉全部的内容,然后开始吃掉 SWAP,性能一降再降,怎么办?



可以从下面三点查看原因:

MySQL 使用内存,有两个途径。

永久占用的内容

比如全局缓冲区(Global Buffer)类别,是在服务器启动期间从 *** 作系统获得的,不会释放到任何一个别的进程。

动态请求的内存

线程缓冲区由MySQL使用,它是在处理新查询时从 *** 作系统请求的内存。在执行查询之后,该内存被释放回 *** 作系统。

这意味着 MySQL 的内存使用,是 全局缓冲区 加上 线程缓冲区 以及 允许的最大连接数

对于专用数据库服务器,该值需要保持在服务器内存的90%以下。在共享服务器的情况下,它应该保持在服务器内存的50%以下。



检查一下 MySQL 设置,有助于确定内存使用情况,从而为 MySQL 分配合适的值。

一个近似的公式:

当网站受到攻击时,有可能在短时间内建立异常高的连接数量。MySQL 中的 PROCESSLIST 可用于检测顶级用户并阻止对滥用连接的访问。



找出查询需要很长时间才能执行的语句,因为这些查询需要进一步优化服务器才能更好地执行,可以通过服务器查询日志进行识别。由于查询速度慢,导致磁盘读取较多,导致内存和CPU使用率较高,影响服务器性能。



最后,到了加内存条的时候了。虽然在优化数据库设置之后,服务器会不断地路由到使用交换内存,但也必须增加内存。俗话说:“巧妇难为无米之炊”,就是这个意思。

上面说的这些方向,大家可以在实际 *** 作中验证体会,希望大家在数据库优化的路上,麻溜顺畅,砥砺前行。

如何优化内存的管理,提高内存的使用效率,尽可能地提高运行速度,是我们所关心的问题。下面介绍在Windows *** 作系统中,提高内存的使用效率和优化内存管理的几种方法。\x0d\1改变页面文件的位置\x0d\其目的主要是为了保持虚拟内存的连续性。因为硬盘读取数据是靠磁头在磁性物质上读取,页面文件放在磁盘上的不同区域,磁头就要跳来跳去,自然不利于提高效率。\x0d\而且系统盘文件众多,虚拟内存肯定不连续,因此要将其放到其他盘上。改变页面文件位置的方法是:用鼠标右键点击“我的电脑”,选择“属性→高级→性能设置→高级→更改虚拟内存”,在驱动器栏里选择想要改变到的位置即可。\x0d\值得注意的是,当移动好页面文件后,要将原来的文件删除(系统不会自动删除)。\x0d\2改变页面文件的大小\x0d\改变了页面文件的位置后,我们还可以对它的大小进行一些调整。调整时我们需要注意,不要将最大、最小页面文件设为等值。因为通常内存不会真正“塞满”,它会在内存储量到达一定程度时,自动将一部分暂时不用的数据放到硬盘中。最小页面文件越大,所占比例就低,执行的速度也就越慢。最大页面文件是极限值,有时打开很多程序,内存和最小页面文件都已“塞满”,就会自动溢出到最大页面文件。\x0d\所以将两者设为等值是不合理的。一般情况下,最小页面文件设得小些,这样能在内存中尽可能存储更多数据,效率就越高。最大页面文件设得大些,以免出现“满员”的情况。\x0d\3禁用页面文件\x0d\当拥有了512MB以上的内存时,页面文件的作用将不再明显,因此我们可以将其禁用。方法是:依次进入注册表编辑器“HKEY_LOCAL_MACHINESystemCurrentControlSetControlSession Ma-nagerMemoryManagement”下,在“DisablePa-ging Executive”(禁用页面文件)选项中将其值设为“1”即可。\x0d\4清空页面文件\x0d\在同一位置上有一个“ClearPageFileAtShutdown(关机时清除页面文件)”,将该值设为“1”。这里所说的“清除”页面文件并非是指从硬盘上完全删除pagefilesys文件,而是对其进行“清洗”和整理,从而为下次启动Windows XP时更好地利用虚拟内存做好准备。\x0d\5调整高速缓存区域的大小\x0d\可以在“计算机的主要用途”选项卡中设置系统利用高速缓存的比例(针对Windows 98)。如果系统的内存较多,可选择“网络服务器”,这样系统将用较多的内存作为高速缓存。在CD-ROM标签中,可以直接调节系统用多少内存作为CD-ROM光盘读写的高速缓存。\x0d\6监视内存\x0d\系统的内存不管有多大,总是会用完的。虽然有虚拟内存,但由于硬盘的读写速度无法与内存的速度相比,所以在使用内存时,就要时刻监视内存的使用情况。Windows *** 作系统中提供了一个系统监视器,可以监视内存的使用情况。一般如果只有60%的内存资源可用,这时你就要注意调整内存了,不然就会严重影响电脑的运行速度和系统性能。\x0d\7及时释放内存空间\x0d\如果你发现系统的内存不多了,就要注意释放内存。所谓释放内存,就是将驻留在内存中的数据从内存中释放出来。释放内存最简单有效的方法,就是重新启动计算机。\x0d\另外,就是关闭暂时不用的程序。还有要注意剪贴板中如果存储了图像资料,是要占用大量内存空间的。这时只要剪贴几个字,就可以把内存中剪贴板上原有的冲掉,从而将它所占用的大量的内存释放出来。\x0d\8优化内存中的数据\x0d\在Windows中,驻留内存中的数据越多,就越要占用内存资源。所以,桌面上和任务栏中的快捷图标不要设置得太多。如果内存资源较为紧张,可以考虑尽量少用各种后台驻留的程序。平时在 *** 作电脑时,不要打开太多的文件或窗口。\x0d\长时间地使用计算机后,如果没有重新启动计算机,内存中的数据排列就有可能因为比较混乱,从而导致系统性能的下降。这时你就要考虑重新启动计算机。\x0d\9提高系统其他部件的性能\x0d\计算机其他部件的性能对内存的使用也有较大的影响,如总线类型、CPU、硬盘和显存等。如果显存太小,而显示的数据量很大,再多的内存也是不可能提高其运行速度和系统效率的。如果硬盘的速度太慢,则会严重影响整个系统的工作。


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存