服务器性能差怎么解决
‘壹’ 换了dns网页速度变快了 为什么。。
这是正常现象,不同的DNS服务器性能和连接速度有差异。
1、DNS是域名系统(Domain Name System)。在Internet上域名与IP地址之间是一一对应的,域名虽然便于人们记忆,但机器之间只能互相认识IP地址,它们之间的转换工作称为 域名解析,域名解析需要由专门的域名解析系统来完成,DNS就是进行域名解析的系统。
2、平时上网输入的是域名,需要DNS服务器来将他转换成对应的IP地址,如果DNS服务器性能太差,或者DNS服务器与客户端本身的连接线路质量不好。这个转换的过程就会比较长。自然就影响网页的加载速度了。
‘贰’ CC防护的策略有哪几种
CC攻击种类:
1、直接攻击:主要针对有重要缺陷的Web应用程序,一般来说是程序写的有问题的时候才会出现这种情况,比较少见。
2、肉鸡攻击:黑客使用CC攻击软件,控制大量肉鸡发动攻击,相比代理攻击更难防御,因为肉鸡可以模拟正常用户访问网站的请求,伪造成合法数据包。
3、僵尸网络攻击:有点类似于DDoS攻击,从Web应用程序层面上已经无法防御。
4、代理攻击:代理攻击是黑客借助代理服务器生成指向受害主机的合法网页请求,实现Dos和伪装。
CC攻击防御措施:
1、取消域名绑定
一般CC攻击都是针对网站的域名进行攻击,比如我们网站域名为:www.oldboye.com,那么攻击者就在攻击工具中设定攻击对象为该域名然后实施攻击。对于这样的攻击我们的措施是取消这个域名的绑定,让CC攻击失去目标。
2、屏蔽IP
我们通过命令或在查看日志发现了CC攻击的源ip,就可以在防火墙中设置屏蔽该IP对web站点的访问,从而达到防范攻击的目的。
3、更改Web端口
一般情况下Web服务器通过80端口对外提供服务,因此攻击者实施攻击就以默认的80端口进行攻击,所以,我们可以修改Web端口达到防CC攻击的目的。
4、域名欺骗解析
如果发现针对域名的CC攻击,我们可以把被攻击的域名解析到127.0.0.1这个地址上。我们知道127.0.0.1是本地回环IP是用来进行网络测试的,如果把被攻击的域名解析到这个IP上,就可以实现攻击者自己攻击自己的目的,这样再多的肉鸡或者代理也会宕机。
5、部署高防CDN防御
高防CDN可以自动识别恶意攻击流量,对这些虚假流量进行智能清洗,将正常访客流量回源到源服务器IP上,保障源服务器的正常稳定运行。
‘叁’ 服务器性能不足怎么办
服务器的性能对于每个企业来讲都是十分重要的一环,一款性能强大性价比高的服务器能够为企业的竞争力增加更多筹码.那么当服务器性能不足时,如何才能让其达到最强状态呢?先定一个小目标 双核
‘肆’ Web服务器性能和站点访问性能该如何优化
今天小编要跟大家分享的文章是关于Web服务器性能和站点访问性能该如何优化?正在从web前端工作的小伙伴们来和小编一起看一看吧!
一、优化思路浅析
要优化Web服务器的性能,我们先来看看Web服务器在web页面处理上的步骤:
1、Web浏览器向一个特定的服务器发出Web页面请求;
2、Web服务器接收到web页面请求后,寻找所请求的web页面,并将所请求的Web页面传送给Web浏览器;
3、Web浏览器接收到所请求的web页面内容,并将它显示出来。
上面三个步骤都关系Web服务器,但实际Web服务器性能相关最大的是在第2步,这里Web服务器需要寻找来自浏览器所请求的Web
页面内容。
我们知道,Web页面内容有静态的,也有动态的,静态的内容,web
服务器可以直接将结果发回给浏览器,对于动态内容,则通常需要交给应用服务器先处理,由应用服务器返回结果。
当然,也有Web服务器本身可以处理动态内容的,例如IIS就可以自已解释处理ASP,ASP.NET这两种微软的动态网页脚本语言。
从上面简要的分析里,我们大致可以得到这样的结论,影响Web页面访问的影响因素会有这几个:
1、Web服务器从磁盘中读取静态页面内容的速度,也即时间;
2、Web服务器判定请求内容是静态还是动态内容的时间;
3、Web服务器转发请求给应用服务器的时间;
4、应用服务器处理(解释)动态内容所需的时间;
5、Web服务器返回Web内容给浏览器的响应时间;
6、Web服务器接收来自浏览器请求的处理性能;
7、Web访问请求数据在网络上传输的时间:包括从浏览器到服务器,和从服务器到浏览器两部分;
8、浏览器本地计算和渲染Web内容的时间,即接收内容后展现内容的时间。
上面8项很容易理解,也很直接,其实还有以下几项也是关乎Web
页面访问速度体验的因素,你可以思考下是否如此?或者说是否会影响到页面访问性能。
§Web服务器执行安全策略检查的时间,或者说性能;
§Web服务器读取日志文件、写日志内容、关闭对日志文件访问的时间,先读后写再关闭,这三步中的读与写又涉及到磁盘访问性能因素;
§同时与Web服务器连接会话的客户端数量大小,即并发访问量多大。
我们可以将上面的影响因素抽像出来,那么就是:
1、Web服务器磁盘性能;
2、Web服务器与应用服务器交互的性能;
3、应用服务器处理动态内容的性能,或者说动态内容应用处理性能;
4、客户端与Web服务器的连接速度,即网络传输性能;
5、Web浏览器解释和渲染Web内容的性能;
6、Web访问并发性能。
反映到我们进行性能优化,可以入手的角度就有:
1、增加带宽,包括服务器和客户端两边的Internet连接带宽;
2、加快动态内容的处理性能;
3、尽可能多地使用静态内容,这样Web服务器就可以无需请求应用服务器,直接将Web内容发给浏览器端,这里可以入手的方案又有:
动态内容缓存
动态内容静态化
多台服务器负载均衡同时处理大量的并发访问;
提升服务器磁盘访问性能,也即通常所说的I/O性能;
减少网页中的HTTP请求数;
更换更好性能的Web服务器;
合理部署服务器,在离客户端更近的地方部署服务器,已经证明可以明显地提升访问性能。
二、性能优化实践
经过前面小节的简要分析,相信你对优化Web服务器有一定的思路了,你可以从硬件层面、软件层面、Web代码三个层面去优化。
下面我们结合一个具体的实例来实践一回,本文所举例是一个小型的Web
站点,部分数据系假设,如有类同,纯属巧合,仅起抛砖引玉之用。在实际工作中,如果碰到大站点,你可以参考此处的分析,修改优化方案。
1.站点简介
一个社区论坛站点,采用Discuz!论坛程序构建,该程序采用主流的php+Mysql组成。
网站目前有近5万注册用户,绝大多数是国内的用户,活跃用户数在一半左右,每天平均PV在15~20万,独立访问IP数在8000
左右。
2.Web服务器性能优化需求
网站现部署在国外的服务器,租用虚拟主机来运营,因为访问量比较大,所以经常会收到虚拟主机服务商的流量很大的通知,要求控制下访问量。
另外,虚拟主机的服务器在美国,没有在国内租用虚拟主机的原因是国内网站在备案方面非常繁琐,在网站一开始运营时数据量和访问量都比较小,所以对性能要求不高,数据量小,所以服务器在查询处理数据时速度比较快,也让人感觉访问速度不慢,现在随着数据量和访问量的不断上升,访问速度已明显下降,到了需要改善访问性能的时候了。
基于目前该社区网站的情况,提出的优化需求是,国内访问速度需要提升一倍,目前首页加载时间需要40秒左右,希望优化后能在20
秒以内将首页加载完成。
另外提出网站数据能够每天自动备份一次,备份数据保留一个月的,以便随时恢复。
上述两点需求,其中第一条才是性能优化需求,第二条是额外的需求了。
3.性能优化方案
根据其网站的现状和优化需求,结合自己的经验,加上谷歌的搜索,同时与网站主不断确认沟通,最终得到以下性能优化方案:
由虚拟主机部署改为独立服务器部署
虚拟主机受限比较多,无法自己自定义配置Web服务器,无法配置PHP
动态缓存,而且独立服务器可以独享内存、处理器资源,不再受虚拟主机商对每个虚拟主机用户的内存和处理器资源占用限制。处理器资源和内存资源,对接受更多并发访问有直接性能提升效果。
独立服务器,我们选用Linode2048型号,2G内存,4核处理器(Linode所有VPS都是四核处理器),80G硬盘空间,800G
网络流量。
由Windows操作系统改为Linux操作系统
网站使用的是PHP+MySQL程序,PHP在Windows下的性能,受限于IIS需要通过ISAPI形式调用PHP,所以性能不如
Linux下Apache直接通过PHP模块解释PHP,更不如Nginx与PHP-FPM
的性能,既然使用了独立服务器,操作系统也可以自己确定,Linux系统我们选用了熟悉的UbuntuLinuxServer10.04(一年前还没有
12.04),^-^。
Web服务器采用Nginx,而不使用Apache
选用Nginx而不用Apache的原因非常直接和干脆,因为站点里有很多静态的附件文件,在处理静态内容上,Nginx性能是Apache
的差不多10倍。
在PHP解释和伪静态规则方面,Apache要比Nginx强,但这不影响我们放弃它,为缓解这一点,我们在后面对PHP
进行了动态缓存。
对PHP查询进行动态缓存,使用eAccelerator这个加速器
PHP加速器是一个为了提高PHP执行效率,从而缓存起PHP的操作码,这样PHP后面执行就不用解析转换了,可以直接调用PHP
操作码,这样速度上就提高了不少。
eAccelerator是一个开源PHP加速器,优化和动态内容缓存,提高了PHP脚本的缓存性能,使得PHP
脚本在编译的状态下,对服务器的开销几乎完全消除。它还有对脚本起优化作用,以加快其执行效率。使得的PHP程序代码执效率能提高1-10
倍,这个加速还是非常明显的。
具体地,我们计划对eAccelerator进行以下设置优化:
§缓存使用物理内存来进行,不使用磁盘来缓存。我们知道内存的读写性能是硬盘的N倍,所以在内存资源可以安排情况下,强烈建议使用内存来保存
eAccelerator的缓存内容。
§缓存大小设置为32MB,这个值是操作系统默认支持最大的缓存容量。虽然可以通过修改配置文件来加大这个值,但我们觉得没有必要,所以就放弃了。
Nginx性能优化
选用了Nginx,虽然它的性能很好,但我们仍然需要对它进行性能优化,在这个案例中,我们做了以下优化:
§使用8个进程,每个进程大约需要20M内存消耗,这里一共使用了150M左右的内存。
§充分使用主服务器的CPU内核:四核,使用CPU粘性配置选项(worker_cpu_affinity),每核处理器分配两个进程。
§开启gzip压缩功能:gzip压缩对JS,CSS,XML压缩效果非常好,能压缩一半,即减少一倍的传输时间;对图片文件,JPG
已经压缩过的,它的压缩性能要少一些。
§图片本地缓存1天:网站上的图片很多,通常一张图片上传后,不会频繁的修改,只会频繁的访问,所以将图片放在Nginx
缓存里,可以减少服务器访问加载次数,提升访问速度。
§JS、CSS文件本地缓存7
天:这两种网页文件,平时都不会去修改它,将它缓存起来,可以减少加载次数,提升访问速度。为什么这两种文件不和图片一起设置缓存有效期,是考虑了不同文件的修改频率不一样。
§Nginx日志每天切割一次:这个优化项能大大减小Nginx日志文件的大小,经过一周的查看,每天的日志文件是50M
左右,如果不是每天切割,用月切割,那一个月的日志文件就是几个G,要Web
服务器在内存里加载这么大的文件,系统本身内存不够用,就自然会用到磁盘来缓存,这就影响性能。每天50M左右,在内存上完全可以顺利加载,这样Nginx
在处理访问时,可以快速的保存访问日志。
经过上述几个优化项目,Nginx这边一共需要占用200M左右内存资源。
对PHPCGI进程性能进行优化
Nginx没有PHP模块,所以它对PHP的支持是通过PHP-FPM来实现的,PHP-FPM
是跑进程来处理并发请求,在这个案例中,我们配置了20个进程,每个进程差不多占用20M左右内存资源,一共是400M左右。
同时,PHP-FPM与Nginx交互机制,选用LinuxSocket模式而不是TCP协议端口,Socks是系统级处理模式,socks
也就是一个文件连接,而TCP协议端口,需要经过网络协议处理,性能不如前者,所以我们选择了前者。
MySQL数据库性能优化
因为网站主程序是选用他人开发的开源程序,所以对数据库查询的程序优化我们无法处理,只能从MySQL本身寻找突破口。
我们可以想象一下,对于论坛网站,通常看贴、查贴的访问量要远大于创建贴子、回复贴子的访问量,体现在MySQL
数据库上,就是读表与查询表数据的连接处理更多。
因此我们要选择对读表、查询性能更好的存储引擎,结合以前了解的知识,MySQL缺省的MyISAM
引擎就是被设计为适合处理读频率远大于写频率的环境,查询效率相当可观,而且内存占用很少,这也与我们租用低内存配置的VPS相符。
具体到MySQL配置参数的优化上,受限于服务器上内存资源本身有限,就直接采用缺省的中型环境配置文件。
内容分发网络应用
站点每天十多万的访问,上万独立IP
访问,查看先前的访问统计,访问来自国内各个地区,使用多种网络连接访问进来,为保证来自各网络的用户访问速度,同时也减少对网站服务器的请求,我们采用了CDN
来分发静态内容,这样各地的用户可以就近访问到已缓存在CDN上的文件,CDN
服务商会在静态内容第一次访问时缓存到他们全国各地的服务器上,当第二次访问时,用户实际是没有连接到网站服务器上获取文件的,而是直接从CDN
服务器上获取,可以明显的提升网站性能。
以上就是小编今天为大家分享的关于Web服务器性能和站点访问性能该如何优化的文章,希望本篇文章能够对正在从事web前端工作的小伙伴们有所帮助。想要了解更多web前端相关知识记得关注北大青鸟web培训官网。最后祝愿小伙伴们工作顺利!
‘伍’ 网速特别慢是什么原因
宽带网速慢,可能是由于存在以下情况导致:
1、访问的网站服务器带宽窄或服务器繁忙,可以稍后在访问网站;
2、电脑的原因如电脑配置比较低或系统处理能力弱,就会显得速度慢;
3、可能是电脑病毒或者木马等原因造成上网速度慢,用户可以下载安全软件进行扫描排查;
4、用户使用路由器共享上网,连接网络的人数比较多导致网速慢;
5、modem设备出现工作不稳定比如长时间开机,可以重启下宽带猫尝试;
6、线路原因(如线路长、线路噪声较大、入户线质量不好、用户端线路改动等因素造成)。
了解更多服务优惠请关注“安徽电信”公众号。
‘陆’ bind为什么性能不好
您好,这是因为bind服务器,不会调用其他cpu从而性能不好。bind9.14及以上版本默认开启多线程并且支持REUSEPORT特性所以性能明显要高于小于bind9.14版本。
bind9.9在此硬件平台上关闭日志时最高的解析性能大概是15万QPS左右,它最大只能是用4个CPU即400%的占用,虽然此时还有其他的CPU在空闲,但也不会再分配请求给其他的CPU来提升性能,因为bind9.9没使用REUSRPORT特性。
‘柒’ 手机b站无法登录,怎么办
等待服务器恢复。
2021年7月13日晚,众多用户反映B站网页端和移动端均出现加载失败的现象。“b站崩了”也冲上热搜第一。B站回应称:部分服务器机房发生故障,造成无法访问。技术团队随即进行了问题排查和修复,现在服务已经陆续恢复正常。
在经历了长达30分钟的“网页加载失败”后,哔哩哔哩官方终于正面回应称,B 站的部分服务器机房发生故障,造成无法访问。
技术团队随即进行了问题排查和修复,现在服务已经陆续恢复正常。除此之外,官方未对任何服务器方面或技术方面的细节进行讲解。这才是哔哩哔哩全平台崩溃的真正原因。
服务器宕机原因及措施
运行环境导致服务器宕机。服务器运行环境包括操作系统,应用程序,数据库,应用程序bug,网络数据等,以上软件系统故障会引起服务器宕机现象。措施:查找分析系统、应用程序相关日志的错误信息来解决问题,可以重装系统或重启服务器等方法。
服务器性能导致服务器宕机。因为IDC提供商的服务器和硬件有些是组装服务器,难免会因硬件兼容性,CPU,内存等性能不好,导致宕机。措施:查看服务器硬件信息,在租用或选购时尽量用品牌服务器,品牌服务器性能更稳定。
服务器软、硬件导致服务器宕机。数据丢失包括误删除关键数据、磁盘坏道导致数据丢失等 导致宕机,服务器主板、电源、CPU、内存以及磁盘有问题也会导致服务器宕机故障。措施:使用工具测试相关硬件配件,或更换配件测试服务器硬件问题,并且做好数据备份,监控磁盘空间大小。
‘捌’ 如何衡量WWW服务器的性能,影响它的性能因素有哪些
在评价WWW服务器性能时,应该了解该测量哪些指标,并确保这些指标能够反映WWW服务器的使用情况。
显然,硬件和操作系统是基准测试的主要领域。同一个高级工作站或一台U N I X机相比,一台只有中档C P U、硬盘不大而内存只有3 2兆的P C机的性能就要差得多了。在不同的WWW基准测试中,不同的操作系统(包括S o l a r i s和Windows NT)的性能得分也是不一样的。
影响WWW服务器性能的另一个因素是连接速度。T 3连接上的服务器向客户机传输WWW页面的速度要大大高于T 1连接上的相同服务器的速度(在测量服务器原始性能时,不考虑客户机的连接)。
还有一个应考虑的因素是服务器可处理用户的数量。这个能力很难测量,因为它取决于服务器的线路速度、客户机的线路速度以及传输的WWW页面的正常大小。测量服务器WWW页面传输能力的重要指标是吞吐能力和响应时间。吞吐能力是某种硬件和软件的组合在单位时间内能够处理H T T P请求的数目。响应时间是服务器处理一个请求所需的时间。这些数值应该处于服务器能够处理的负荷范围之内(包括高峰期)。
最后,系统应客户机的要求所传输的页面的组合和类型也会大大影响服务器的性能。动态页面的内容是应客户机的请求由特定的程序来确定的,静态页面是从磁盘检索所获的固定内容的WWW页面。如果一台服务器主要传输静态页面,其性能要好于传输动态页面的同档服务器,这是因为静态页面传输比动态页面传输所需的计算能力小。在传输动态页面时,不同服务器的性能差异很大。
目前有多种WWW服务器基准测试程序,它们可就很多衡量指标对服务器进行测试,依据这些测试可决定服务器的选择。
‘玖’ 网站性能优化怎么办
一、前端优化
网站性能优化是一个很综合的话题,涉及到服务器的配置和网站前后端程序等各个方面,我只是从实际经历出发,分享一下自己所尝试过的网站性能优化方法。之所以在标题上挂一个web2.0,是因为本文更偏重于中小网站的性能优化,我所使用的系统也是典型web2.0的LAMP架构。
首先讲讲前端的优化,用户访问网页的等待时间,有80%是发生在浏览器前端,特别是页面和页面中各种元素(图片、CSS、javascript、 flash…)的下载之上。因此在很多情况下,相对于把大量的时间花在艰苦而繁杂的程序改进上,前端的优化往往能起到事半功倍的作用。雅虎最近将内部使用的性能测试工具yslow向第三方公开,并发布了着名的网站性能优化的十三条规则,建议你下载并安装yslow,并作为测评网站优化效果的工具。下面我挑其中特别有价值的具体说明一下优化的方法:
对于第一次访问您网站,尚未在浏览器cache中缓存您网站内容的用户,我们可以做的事情包括:
1)减少一个页面访问所产生的http连接次数
对于第一次访问你网站的用户,页面所产生的http连接次数是影响性能的一个关键瓶颈。
对策:
- 尽量简洁的页面设计,最大程度减少图片的使用,通过放弃一些不必要的页面特效来减少javascript的使用。
- 使用一些优化技巧,比如利用图片的背景位移减少图片的个数;image map技术;使用Inline images将css图片捆绑到网页中。
- 尽量合并js和css文件,减少独立文件个数。
2) 使用gzip压缩网页内容
使用gzip来压缩网页中的静态内容,能够显着减少用户访问网页时的等待时间(据说可达到60%)。主流的web服务器都支持或提供gzip压缩,如果使用apache服务器,只需要在配置文件中开启 mod_gzip(apache1.x)或mod_deflate(apache2.x)即可。凡是静态的页面,使用gzip压缩都能够显着提高服务器效率并减少带宽支出,注意图片内容本身已经是压缩格式了,务必不要再进行压缩。
3)将CSS放在页面顶端,JS文件放在页面底端
CSS的引用要放在html的头部header中,JS文件引用尽量放在页面底端标签的后面,主要的思路是让核心的页面内容尽早显示出来。不过要注意,一些大量使用js的页面,可能有一些js文件放在底端会引起一些难以预料的问题,根据实际情况适当运用即可。
4)使JS文件内容最小化
具体来说就是使用一些javascript压缩工具对js脚本进行压缩,去除其中的空白字符、注释,最小化变量名等。在使用gzip压缩的基础上,对js内容的压缩能够将性能再提高5%。
5)尽量减少外部脚本的使用,减少DNS查询时间
不要在网页中引用太多的外部脚本,首先,一次dns的解析过程会消耗20-120毫秒的时间;其次,如果在页面中引用太多的外部文件(如各种广告、联盟等代码),可能会因为外部文件的响应速度而将你的网站拖得很慢。如果不得不用,那么就尽量将这些脚本放在页脚吧。不过有一点需要提及,就是浏览器一般只能并行处理同一域名下的两个请求,而对于不同子的域名则不受此限制,因此适当将本站静态内容(css,js)放在其他的子域名下(如 static.xxx.com)会有利于提高浏览器并行下载网页内容的能力。
对于您网站的经常性访问用户,主要的优化思路就是最大限度利用用户浏览器的cache来减少服务器的开销。
1)在header中添加过期时间(Expires Header)
在header中给静态内容添加一个较长的过期时间,这样可以使用户今后访问只读取缓存中的文件,而不会与服务器产生任何的交互。不过这样做也存在一些问题,当图片、CSS和js文件更新时,用户如果不刷新浏览器,就无法获得此更新。这样,我们在对图片、css和js文件修改时,必须要进行重命名,才能保证用户访问到最新的内容。这可能会给开发造成不小的麻烦,因为这些文件可能被站点中的许多文件所引用。flickr提出的解决办法是通过url rewrite使不同版本号的URL事实上指向同一个文件,这是一个聪明的办法,因为url级别的操作效率是很高的,可以给开发过程提供不少便利。
要理解为什么这样做,必须要了解浏览器访问url时的工作机制:
a. 第一次访问url时,用户从服务器段获取页面内容,并把相关的文件(images,css,js…)放在高速缓存中,也会把文件头中的expired time,last modified, ETags等相关信息也一同保留下来。
b. 用户重复访问url时,浏览器首先看高速缓存中是否有本站同名的文件,如果有,则检查文件的过期时间;如果尚未过期,则直接从缓存中读取文件,不再访问服务器。
c. 如果缓存中文件的过期时间不存在或已超出,则浏览器会访问服务器获取文件的头信息,检查last modifed和ETags等信息,如果发现本地缓存中的文件在上次访问后没被修改,则使用本地缓存中的文件;如果修改过,则从服务器上获取最新版本。
我的经验,如果可能,尽量遵循此原则给静态文件添加过期时间,这样可以大幅度减少用户对服务器资源的重复访问。
2)将css和js文件放在独立外部文件中引用
将css和js文件放在独立文件中,这样它们会被单独缓存起来,在访问其他页面时可以从浏览器的高速缓存中直接读取。一些网站的首页可能是例外的,这些首页的自身浏览可能并不大,但却是用户访问网站的第一印象以及导向到其他页面的起点,也可能这些页面本身使用了大量的ajax局部刷新及技术,这时可以将 css和js文件直接写在页面中。
3)去掉重复的脚本
在IE中,包含重复的js脚本会导致浏览器的缓存不被使用,仔细检查一下你的程序,去掉重复引用的脚本应该不是一件很难的事情。
4)避免重定向的发生
除了在header中人为的重定向之外,网页重定向常在不经意间发生,被重定向的内容将不会使用浏览器的缓存。比如用户在访问www.xxx.com,服务器会通过301转向到www.xxx.com/,在后面加了一个“/”。如果服务器的配置不好,这也会给服务器带来额外的负担。通过配置apache的 alias或使用mod_rewrite模块等方法,可以避免不必要的重定向。
还有一些,比如使用CDN分发机制、避免CSS表达式等、避免使用ETags等,因为不太常用,这里就不再赘述了。
做完了上述的优化,可以试着用yslow测试一下网页的性能评分,一般都可以达到70分以上了。
当然,除了浏览器前端和静态内容的优化之外,还有针对程序脚本、服务器、数据库、负载的优化,这些更深层次的优化方法对技术有更高的要求。本文的后半部分将重点探讨后端的优化。
二、后端优化
上次写完web2.0网站前端优化篇之后,一直想写写后端优化的方法,今天终于有时间将思路整理了出来。
前端优化可以避免我们造成无谓的服务器和带宽资源浪费,但随着网站访问量的增加,仅靠前端优化已经不能解决所有问题了,后端软件处理并行请求的能力、程序运 行的效率、硬件性能以及系统的可扩展性,将成为影响网站性能和稳定的关键瓶颈所在。优化系统和程序的性能可以从以下的方面来入手:
1)apache、mysql等软件的配置的优化
尽管apache和mysql等软件在安装后使用的默认设置足以使你的网站运行起来,但是通过调整mysql和apache的一些系统参数,还是可以追求更高的效率和稳定性。这个领域中有很多专业的文章和论坛(比如: http://www.mysqlperformanceblog.com/),要想掌握也需要进行深入的研究和实践,这里就不重点讨论了。
2)应用程序环境加速
这里仅以我最常应用的php开发环境为例,有一些工具软件可以通过优化PHP运行环境来达到提速的目的,其基本原理大致是将PHP代码预编译并缓存起来,而不需要改变任何代码,所以比较简单,可以将php的运行效率提升50%以上。比较常用的免费php加速工具有:APC( http: //pecl.php.net/package-info.php?package=APC)、Turck MMCache( http://turck-mmcache.sourceforge.net)、php accelebrator(www.php-accelerator.co.uk),还有收费的Zend Performance Suite
3)将静态内容和动态内容分开处理
apache是一个功能完善但比较庞大的web server,它的资源占用基本上和同时运行的进程数呈正比,对服务器内存的消耗比较大,处理并行任务的效率也一般。在一些情况下,我们可以用比较轻量级的web server来host静态的图片、样式表和javascript文件,这样可以大大提升静态文件的处理速度,还可以减少对内存占用。我使用的web server是来自俄罗斯的nginx,其他选择方案还包括lighttpd和thttpd等。
4)基于反向代理的前端访问负载均衡
当一台前端服务器不足以应付用户访问时,通过前端机实现web访问的负载均衡是最快速可行的方案。通过apache的mod_proxy可以实现基于反向代理的负载均衡,这里推荐使用nginx做代理服务器,处理速度较apache更快一些。
5)应用缓存技术提高数据库效能,文件缓存和分布式缓存
数据库访问处理并发访问的能力是很多网站应用的关键瓶颈,在想到使用主从结构和多farm的方式构建服务器集群之前,首先应该确保充分使用了数据库查询的缓存。一些数据库类型(如mysql的innoDB)自身内置对缓存的支持,此外,还可以利用程序方法将常用的查询通过文件或内存缓存起来。比如通过 php中的ob_start和文件读写函数可以很方便的实现文件形式的缓存,而如果你拥有多台服务器,可以通过memcache技术通过分布式共享内存来对数据库查询进行缓存,不仅效率高而且扩展性好,memcache技术在livejournal和Craigslist.org等知名网站应用中都得到了检验。
6)服务器运行状态的检测,找到影响性能的瓶颈所在
系统优化没有一劳永逸的方法,需要通过检测服务器的运行状态来及时发现影响性能的瓶颈,以及可能存在的潜在问题,因为网站的性能,永远取决于木桶中的短板。可以编写一些脚本来检测web服务的运行,也有一些开源的软件也提供了很好的功能
7)良好的扩展架构是稳定和性能的基础
一些技巧和窍门可以帮你度过眼前的难关,但要想使网站具备应付大规模访问的能力,则需要从系统架构上进行彻底的规划,好在很多前人无私的把他们架构
网站的经验分享给我们,使我们可以少走甚多弯路。我最近读到的两篇有启发的文章:
- 从LiveJournal后台发展看大规模网站性能优化方法
- Myspace的六次重构
最后不得不提到程序编码和数据库结构对性能的影响,一系列糟糕的循环语句,一个不合理的查询语句、一张设计不佳的数据表或索引表,都足以会使应用程序运行的速度成倍的降低。培养全局思考的能力,养成良好的编程习惯,并对数据库运行机制有所了解,是提高编程质量的基础。
‘拾’ 一台服务器的主要性能指标有哪些
人尽其才、物尽其用”。企业购买服务器当然是为满足特定需要。针对不同需求,我们要关注的性能指标也不同。举例来说,对于数据库服务器,联机事物处理能力是最需着力考察的指标。TPC-C是“事务处理性能委员会”(TPC)负责制订的基准测试指标,考察联机事务处理每分钟吞吐量。而TPC-C测试结果又包括两个指标,一个是流量指标tpmC,这个值越大越好;另一个是性价比指标Price/tpmC,指的是测试系统价格与流量指标的比值,这个值则越小越好。以IBM公司的x366为例子,根据TPC官方网站,TPC-C在线交易基准测试中,x366的流量指标达到了141504tpmC,是4路至强芯片服务器的世界纪录。
再比如说,购买Web服务器时,最重要的性能指标就应该是SPEC web99。SPEC web99为Web用户提供了用于评测系统用作Web服务器能力的最客观、最具代表性的基准; 而如果是选购应用服务器,关注SPEC jbb200和SAP SD这两个指标就能知道大概其了,因为SPEC jbb200是专门用来评估服务器系统运行Java应用程序能力的基准测试,而SAP SD 的测试结果为客户提供了基本的规模建议。
对于大多数人来说,基准测试指标是一个全新的知识空间 – 许多人在购买服务器时习惯于考虑CPU和内存,以为选定了这些,服务器的性能就差不多了。其实,不同的系统设计技术会对服务器的性能产生巨大影响,用诸多量化指标来衡量比较是十分必要和重要的。
用户都希望系统能24×7×365不停机、无故障地运行,这其实是要求服务器的可用性。而可用性和可管理性是息息相关的。服务器的故障处理技术越成熟,为用户提供的可用性就越高,而这个故障处理技术必须要有良好的管理手段和界面来及时表现:一方面可以通过出现故障时自动执行系统或部件切换以避免或减少意外停机,另一方面要让管理员及时察觉及帮助诊断,才能从根本上解决问题。目前这方面做得较好的是IBMx3架构服务器。它带有一种叫“弹出式光通路诊断面板”的技术,只要轻轻,光通路诊断面板就会以从服务器前端弹出,指示器可以帮助管理员快速地定位和替换故障组件,减少服务器的宕机时间。
以基准测试指标为基准,以理性考量为准绳,二者并行互航,您选择的服务器肯定错不了!
附表:部分服务器性能指标
应用
基准测试
简述
测试中主要考察的部件
联机事物处理
TPC-C
TPC-C是一种考察联机事务处理(OLTP)每分钟吞吐量的基准测试。TPC-C模拟的是完整的计算环境,大量用户针对数据库(如SQL、Server Oracle,DB2)执行并发事务操作。许多IT专业人员将TPC-C视为衡量“真实”OLTP系统性能的有效参考基准。
全面考察微处理器,内存子系统,磁盘子系统合一些网络组件
电子商务
SPECweb99 SPECweb99用于评测Web服务器能够支持的最大同时连接数的客户端/服务器基准测试。基准负载是由运行HTTP Server的服务器联网的客户端设备上的客户端软件来实现的。为Web用户提供用于评测系统用作Web服务器能力的最客观、最具代表性的基准。
系统的微处理器、内存体系结构和编译器
SPECjbb200 SPECjbb200(Java业务基准)是SPEC第一个用于评估服务器端Java的性能的基准,为Java用户提供用于评测服务器系统运行Java应用程序能力的最客观、最具代表性的基准