网站优化之服务器配置优化

2016-02-19 16:32 5 1 收藏

今天图老师小编给大家精心推荐个网站优化之服务器配置优化教程,一起来看看过程究竟如何进行吧!喜欢还请点个赞哦~

【 tulaoshi.com - Web开发 】

  网站的前台页面进行了优化,后端的数据库服务器也进行优化,cgi程序也根据服务器的配置进行了相关的优化,剩下的就是对应用的服务器进行相关的优化了。

  这些web服务器如果按照默认的配置来运行的话,可以满足大部分的需求,如果只需要根据业务的特性来更改几项配置就能获得较好的性能,用户能够得到更加良好的用户体验,那还是很值得的。

  常用的web类服务器有如下几个方面的:

  1 负载均衡类:haproxy nginx

  2 cgi服务器类:apache lighttpd nginx

  3 前端cache类:varnish squid

  本文主要讲讲apache 2.0的配置优化。

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

  1 apache

  apache1.3支持prefork进程模式,apache2.0支持multi thread模式。

  进程模式和线程模式的却别在于进程模式重量级一些,所以性能稍微低一些;但是,稳定一些,一个进程core掉不影响其它的进程。

  线程模式轻量级,性能较高;但是多个线程共享一个进程空间,一个线程的core就会影响当前的所有线程,稳定度低一些。

  至于选择线程模式还是进程模式需要根据自己的业务需要的选择了,还有就是开发写的程序是不是足够的稳定。

  httpd.conf中下面的几个参数需要注意:

  MaxClients:缺省值是256,描述了最多接受的客户端的数量,如果并发超过256个客户端的话,就会被阻塞住,放到等待的队列里,所以对大并发的网站将这个值设置大一些,如1024,不过这个值需要根据你的硬件的配置,如cpu和内存以及带宽来定,而且2.0的环境下还需要在这个值之前设置ServerLimit 2000,否则启动时会报错

  StartServers:缺省值5,意义是apache启动的时候创建的控制进程数目。

  这个值也可以设置大一些,这样的话,就可以从容处理一开始的大并发MinSpareServers:缺省值5,至少保留的空闲进程数目,如果空闲进程小于这个数目,然后创建1个,1秒后创建2两个,然后1秒后4个直到32个。

  MaxSpareServers:缺省值10,最多的空闲进程的数目,如果超过这个数目的进程数,将会被kill掉

  MaxRequestsPerChild:缺省值0,每一个子进程能够处理的请求数,设置为0表示从不终止子进程,不过最好设置为10000或稍大一点值,从而避免内存泄漏,尽早的释放占用的一些资源。

  SendBufferSize:缺省值为操作系统的设置,设置tcp中的缓冲区的大小,以字节为单位,设置这个值需要根据自己的应用来定,对于网络比较拥塞的情况,将值设置为下发包的最大的大小,不过需要注意,这个值会影响每个tcp链接;如果网络情况良好,可以将这个值设置小一些,从而浏览器这边可以较早的得到数据,尽早的开始渲染。

  KeepAlive:缺省值是On,http1.1的协议为了减少以前每次请求都要连接的情况,设置了keepalive这个属性,从而可以减少网络连接的负载;对于cgi的服务器建议将这个值设置为off,由于请求相对不连续,可以提高并发量;然而对于静态文件服务器,如js、css、图片等,由于请求频繁,数据量小,建议打开这个选项,减少网络的开销。

  KeepAliveTimeout:缺省值15,服务器保持连接存活的时间,对于大并发,建议关小一点这个值,从而可以接受更多的请求。建议设置为3~5秒。

  MaxKeepAliveRequests:缺省值100,如果服务器打开的连接接受的请求已经达到这个数目,连接将会被关闭,这个值的优先级高于MaxClients和ThreadsPerChild。

  TimeOut:缺省值300,连接空闲的时间,如果空闲时间大于这个值,连接会被关闭。对于网络延迟比较小,并发比较大,建议将这个值设置小一些,如10。

  LimitRequestBody:缺省值0,PUT或者POST模式请求时的最大包的大小,0值表示没有限制。根据自己的业务来设置这个值,避免一些恶意的过大的请求包导致服务器瘫痪。

  HostnameLookups:缺省值on,输出日志时是否吧用户的IP地址转换为域名,建议关闭这个值,设置为off,dns比较费时间的。

  AllowOverride:缺省值为打开,这样apache会对每个子目录检查htaccess文件,对性能有一定的影响,如果有必要,建议关闭这个值,设置为none

  Options:对于目录的操作设置,建议关闭SymLinksIfOwnerMatch,从而减少lsstat的调用,打开FollowSymLinks

  ServerTokens Prod,减少返回给客户端浏览器的包的大小

  在httpd.conf中注释掉你不需要的的module,一方面可以减少apache的内存占用,毕竟每个module需要一定的内存来保存其信息;另一方面,可以较少一些回调时的不必要的处理流程。

  如果并发很大的话,还需要调整apache服务器的listenbacklog数量。

  listenbacklog=511,缺省值是511(具体也要参考操作系统的相关设置),用于设置apache的等待连接队列的最大数量,如果并发很大,或者遭遇了SYN攻击,需要将这个值设置大一些,如4096,避免一些用户的连接在队列满后被丢弃。

  apache服务器尽量的开启压缩功能,由于传输的基本上都是一些html等文本数据,压缩比是很高的,开启压缩功能,能够将网络传输的字节数降到最少,一方面节约了带宽,毕竟带宽是要花钱的,一方面可以加速下载的时间,提升用户的体验

  通过添加mod_deflate模块,并进行最基本的压缩设置

  AddOutputFilterByType DEFLATE text/html text/plain text/xml后,通过httpwatch观察的测试结果如下:

GET /test.htm HTTP/1.1Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-silverlight, */*Accept-Language: zh-cnAccept-Encoding: gzip, deflateUser-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Foxy/1; WPS; TencentTraveler 4.0; Foxy/1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)Host: localhostConnection: Keep-AliveVary: Accept-EncodingContent-Encoding: gzipContent-Length: 565Keep-Alive: timeout=5, max=100Connection: Keep-AliveContent-Type: text/html

  1.5K大小的页面test.htm,传输到浏览器时的大小是565字节。压缩比例相当高!

  apache的配置与业务的类型有很大的关系的,所以我们在修改了配置后,最好能够进行一下并发和压力测试,从而能够得到一个较好的值:

  性能测试客户端工具:

  1 ab

  ab -n10000 -c100 http://****/php/my.php

  -n总共发起的请求数

  -c并发的请求数

  2 loadrunner

  3 服务器性能查看命令:

  1)iostat

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

  2)vmstat

  3)top

  4) netstat

  如Php的CGI这边也需要进行一下自身的性能统计,如果cgi性能已经很差了,apache的优化是很难看到。

  性能测试CGI:

  1 XDEBUG工具的使用

  2 CGI代码开启性能测试代码

function getmicrotime(){list($usec, $sec) = explode(" ",microtime());return ((float)$usec + (float)$sec);}$time = getmicrotime();//业务代码echo "p所用时间: ",getmicrotime() - $time, " seconds";

来源:http://www.tulaoshi.com/n/20160219/1612364.html

延伸阅读
标签: Web开发
web2.0大量的ajax的使用,提高了ui交互的效率,但是过度的滥用会带来不少的问题。 ajax使用注意事项: 1 尽量避免使用同步ajax调用。在一些登录的场合常常使用同步调用服务器的登录接口。 同步调用,需要将页面上的所有元素给锁定住,代价高昂。 2 ajax调用时多使用超时设置,目前许多ajax框架如jquery都会提供超时参...
标签: MySQL mysql数据库
  正确的编译方法固然重要,但它只是提高MySQL服务器性能工作的一部分。MySQL服务器的许多参数会影响服务器的性能表现,而且我们可以把这些参数保存到配置文件,使得每次MySQL服务器启动时这些参数都自动发挥作用。这个配置文件就是my.cnf。   MySQL服务器提供了my.cnf文件的几个示例,它们可以在/usr/local/mysql/share/...
优化较大的工作负荷会对所优化的服务器产生很大的开销。开销是由数据库引擎优化顾问在优化进程中多次调用查询优化器导致的。如果除生产服务器以外,再使用一台测试服务器,则可以消除此开销问题。本文介绍如何用MSSQL 2005减轻生产服务器优化负荷。 优化较大的工作负荷会对所优化的服务器产生很大的开销。开销是由数据库引擎优化顾问...
标签: 服务器
Web服务器配置方法 Web服务器概述 Web服务器又称为WWW服务器,它是放置一般网站的服务器。一台Web服务器上可以建立多个网站,各网站的拥有者只需要把做好的网页和相关文件放置在Web服务器的网站中,其它用户就可以用浏览器访问网站中的网页了。 我们配置Web服务器,就是在服务器上建立网站,并设置好相关的参数,至于网站中的...
标签: 服务器
如何配置IIS服务器? 网络的迅速发展使宽带走入寻常百姓家,广大网络爱好者也勇于尝试,在自己的机器上建设自己的网站,那么选择什么系统呢?Win 2000漏洞百出,Win 2003又专门为服务器设计不太适合普通的家用,而LINUX或UNIX系统在平时又是很少使用。现在我就给大家介绍一下在XP环境中利用IIS架构自己 的网站的方法。 利用Windows...

经验教程

601

收藏

82
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部