apache 怎么优化https网站的速度

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了apache 怎么优化https网站的速度相关的知识,希望对你有一定的参考价值。

问:为什么服务器在连续运行多天后或访问峰值后,进程中的一个Apache.exe占用内存几百兆不减少?
答:用记事本打开apache2\conf\httpd.conf,
我在centos5上装了kloxo,找了半天 httpd.conf在 /etc/httpd/conf/目录下。
查找MaxRequestsPerChild,将MaxRequestsPerChild 0改成MaxRequestsPerChild 50即可。
 影响apache性能的几个重要参数(conf/httpd.conf中设置)
KeepAlive 是否允许持续连接
MaxKeepAliveRequests 允许的持续连接的最大数
KeepAliveTimeout 持续连接在没有请求多少秒后切断
StartServers 最初启动时启动多少个服务器进程
MinSpareServers 空闲服务器进程的最小数
MaxSpareServers 空闲服务器进程的最大数
MaxClients 同时处理的请求数(最重要的参数,要少于ServerLimit)
MaxRequestsPerChild 每个子进程处理的最大请求数
它们之前的关系:
prefork控制进程在最初建立“StartServers”个子进程后,为了满足MinSpareServers设置的需要创建一个进程,等待一秒钟,继续创建两个,再等待一秒钟,继续创建四个……如此按指数级增加创建的进程数,最多达到每秒32个,直到满足MinSpareServers设置的值为止。这种模式可以不必在请求到来时再产生新的进程,从而减小了系统开销以增加性能。MaxSpareServers设置了最大的空闲进程数,如果空闲进程数大于这个值,Apache会自动kill掉一些多余进程。这个值不要设得过大,但如果设的值比MinSpareServers小,Apache会自动把其调整为MinSpareServers+1。如果站点负载较大,可考虑同时加大MinSpareServers和 MaxSpareServers。MaxRequestsPerChild设置的是每个子进程可处理的请求数。每个子进程在处理了 “MaxRequestsPerChild”个请求后将自动销毁。0意味着无限,即子进程永不销毁。虽然缺省设为0可以使每个子进程处理更多的请求,但如果设成非零值也有两点重要的好处:1、可防止意外的内存泄漏。2、在服务器负载下降的时侯会自动减少子进程数。

  ServerLimit 2000
  StartServers 10
  MinSpareServers 10
  MaxSpareServers 15
  MaxClients 1000
  MaxRequestsPerChild 2048

调试过程中用到的指令:
# ps -ef|grep http|wc -l //查看请求总数
# cat /proc/loadavg //查看平均负载(loadavg),loadavg高于1,表明任务队列出现了等待,CPU忙不过来了。超过2以上就会明显感到性能降低了
# netstat -ant | grep :80 | wc -l //查看TCP连接数
# top //查看系统运行情况
====================================================================
apache的内存使用
apache进程在使用内存时,是“渐长”的。也就是说,直到这个进程死掉,使用内存的数量是一直增长而不会减少的。这样的话,apache进程使用内存的多少,就决定于你的应用程序最大使用内存量了。
keepalive参数
KeepAliveTimeout 这个参数决定了,在什么都不做之前,一个http进程能够等待多长时间?设想一下,如果keepalive设置为on,而 keepalivetimeout设置为一个比较大的数字,apache占用内存会很快的增长。这是因为,一个apache进程完成了一个任务(并达到了一定的内存占用,想一下“渐进”模式),并不会马上退出,而是等待一个keepalivetimeout时间。假设用户的链接请求持续不断的到来,则积累起来的无用的apache进程就会相当多,直到timeout,这些进程才会被杀死。
但是,keepalive的确对于静态的文件,比如图像文件的传送是很有效的,因此,keepalive要设置为on,(off)但是keepalvietimeout要设置的小些,比如5s 15
MaxRequestsPerChild
这个参数是说,apache进程在处理了多少个请求之后,必须退出,重新开始,以免在处理中的内存问题。
对于php脚本来说,把这个参数设置的小一些是有好处的,可以避免程序使用的内存持续增长对apache带来的压力:让这个参数定期释放内存,因为php是在脚本执行完毕后,自动释放只用的资源(内存)的。
比如设置为50?如果太小的话,重新产生一个apache进程也是要消耗资源的,这是一个平衡问题。

HSTS
在网站全站 HTTPS 后,如果用户手动敲入网站的 HTTP 地址,或者从其它地方点击了网站的 HTTP 链接,依赖于服务端 301/302 跳转才能使用 HTTPS 服务。而第一次的 HTTP 请求就有可能被劫持,导致请求无法到达服务器,从而构成 HTTPS 降级劫持。
这个问题可以通过 HSTS来解决。HSTS 是一个响应头,格式如下:
Strict-Transport-Security: max-age=expireTime [; includeSubDomains] [; preload]
l max-age,单位是秒,用来告诉浏览器在指定时间内,这个网站必须通过 HTTPS 协议来访问。也就是对于这个网站的 HTTP 地址,浏览器需要先在本地替换为 HTTPS 之后再发送请求。
l includeSubDomains,可选参数,如果指定这个参数,表明这个网站所有子域名也必须通过 HTTPS 协议来访问。
l preload,可选参数。
注意事项:HSTS 这个响应头只能用于 HTTPS 响应;网站必须使用默认的 443 端口;必须使用域名,不能是 IP。目前Chrome, firefox, ie 都支持了 HSTS
Session resume
Session cache 的原理是使用 client hello 中的 session id 查询服务端的 session cache, 如果服务端有对应的缓存,则直接使用已有的 session 信息提前完成握手,称为简化握手。
Session cache 有两个缺点:
1、需要消耗服务端内存来存储 session 内容。
2、目前的开源软件包括 nginx,apache 只支持单机多进程间共享缓存,不支持多机间分布式缓存,对于百度或者其他大型互联网公司而言,单机 session cache 几乎没有作用。
Session cache 也有一个非常大的优点:
session id 是 TLS 协议的标准字段,市面上的浏览器全部都支持 session cache。
百度通过对 TLS 握手协议及服务器端实现的优化,已经支持全局的 session cache,能够明显提升用户的访问速度,节省服务器计算资源。

Session ticket
上面提到的 session cache 两个缺点,session ticket 就能够很好的弥补。
Session ticket 的原理参考 RFC4507。简述如下:
server 将 session 信息加密成 ticket 发送给浏览器,浏览器后续握手请求时会发送 ticket,server 端如果能成功解密和处理 ticket,就能完成简化握手。
显然,session ticket 的优点是不需要服务端消耗大量资源来存储 session 内容。

Session ticket 的缺点:
1、session ticket 只是 TLS 协议的一个扩展特性,目前的支持率不是很广泛,只有 60% 左右。
2、session ticket 需要维护一个全局的 key 来加解密,需要考虑 KEY 的安全性和部署效率。
总体来讲,session ticket 的功能特性明显优于 session cache。希望客户端实现优先支持 session ticket。
总结:想要理想的实现站点HTTPS加密,并不是将SSL证书部署上去就万事大吉了。合理的优化不仅能加强网站的安全性,更能有效提升用户的浏览体验,是网站建设的必须步骤。简行SEO博客整理
参考技术A 主要响应速度,提升自己的加密套件版本,服务器apache尽量使用最新,使用国内的服务器就可以了。 参考技术B

    修改组件,判断是否是HTTPS连接,如果是的话,把HTTP连接超时设置为0即可。 

    client.getHttpConnectionManager().getParams().setConnectionTimeout(0); 

    另外还有一个超时概念,叫请求超时,就是HTTP连接建立后,GET/POST请求的超时设置,这个超时设置不会影响速度。 

    method.getParams().setIntParameter(HttpMethodParams.SO_TIMEOUT, timeout);

参考技术C 空间商

若想提升网站访问速度,请这样做

但网站打开速度变的不可科学的时候,怎么检测打开速度是多少?
  IIS7网站监控
  检测网站是否被劫持、域名是否被墙、DNS污染检测、网站打开速度检测等信息。
  如何提升网站打开速度?
  如果你是网站使用者,你可以通过升级宽带、光纤、升级CPU内存、优化操作系统等操作来加快网页的打开速度。
  如果你是网站建设者,可以通过以下几种方法来提升用户的访问速度:
  1. 进行代码优化。删除冗余的代码,比如无用的空格、换行符、注释,不需要加载的JS等;将JS代码和CSS样式合并,减少请求次数,提高网页加载速度;
  2.减少页面上不必要的元素。浏览网页实际上是将虚拟主机上的内容下载到本地硬盘,再使用浏览器查看。所以说,网页本身所占空间越小,网页浏览速度就越快。尽量不要使用flash动画、大量的图片或多媒体资源(如视频、音频等)。
  3.尽量使用静态页面。静态页面直接运行在客户端,无需服务器编辑,可以直接在浏览器上显示,在访问速度上比较快。而动态页面虽然交互性好,但这类程序需要由服务器执行处理,生成HTML页面,然后通过浏览器浏览,网页显示速度较慢。
  4.简化页面结构。在设计网页时,不少站长为了追求页面的对齐,将整个页面内容塞进一个Table中,然后由单元格划分各个区块,这会让网页显示速度变慢。因为Table需要等所有的内容加载好再分级显示,如果某些内容难以加载出来,整个页面也就无法显示出来。正确的做法应该使用DIV+CSS的页面结构,它可以实现页面的逐步加载。
  5. 使用CDN加速网络。CDN即内容分发网络,它可以实时的根据网络流量和各节点的链接、负载状况以及用户的距离和响应时间等信息将用户的请求重新导向到离用户最近的服务节点。这能让用户就近取得所需内容,提高网页响应速度。
  6. 大图使用懒加载(Lazy Load)。图片懒加载又称图片延时加载、惰性加载,即在用户需要使用图片的时候加载,这样可以减少请求、减轻服务器压力,提高页面加载速度。
  7. 对图片进行压缩之后再使用。

以上是关于apache 怎么优化https网站的速度的主要内容,如果未能解决你的问题,请参考以下文章

Apache网页优化,网页压缩和网页缓存技术

怎么优化wordpress网站

Apache服务器性能如何优化

GO浏览器为何访问速度如此的慢

若想提升网站访问速度,请这样做

怎么才能做好网站的内部优化