问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

apache 怎么优化https网站的速度

发布网友 发布时间:2022-04-25 01:30

我来回答

4个回答

热心网友 时间:2022-04-12 14:58

问:为什么服务器在连续运行多天后或访问峰值后,进程中的一个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博客整理

热心网友 时间:2022-04-12 16:16

主要响应速度,提升自己的加密套件版本,服务器apache尽量使用最新,使用国内的服务器就可以了。

热心网友 时间:2022-04-12 17:50

热心网友 时间:2022-04-12 19:42

空间商
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
这是真的黑米还是假的? 牡丹江市区好玩的地方 显卡问题,现在的显卡显存一般都为多少? 现在主流显存是多少?512M5年后会过时吗 主流家用电脑配置家用电脑买什么样配置比较好 现在的电脑显存一般是多少? 安顺万家领秀城怎么样?好不好?值不值得买? 请问下面一道题怎么加标点 花园里 牡丹 月季 玫瑰 芍药 开得美丽极了... 是什么把大地打扮的这么漂亮呢 是雪呀 这两句话怎么写标点符号? 通州有那些私立高中啊 在用java代码做分页中stat.setInt(1, (currentPage-1)*4);什么意思 八门神器是搜索PlayerPrefs.SetInt("Score",12)还是 public int Score。ios,用unity开发 java分页中stmt.setInt(1,(page-1)*rowsPerPage)是什么意思? java中ps.setint(1,id);数字1的解释!求解 谢谢! sql.setInt(1,34);是什么意思? PreparedStatement的setInt方法是什么? 求实况足球的settings.exe Python之爬虫框架概述 win10的错误R6304 SystemSetting.exe怎么解决? settings.exe加速键改为键盘空格键 SETTING.exe 为什么我找不到setting.exe这个选项呢, python 需要三层架构吗 导航应用程序setting.exe出现严重错误怎么办 setint.exe是什么 \AutoCAD2007简体中文版\Bin\acadFeui\ProgramFiles\Root\Support\setint.exe,软件总是提示缺少该文件。 使用office2016的时候,会总动生成很多文件名类似于“hc_5d245fe100000009”的文件,请问这是什么原因? 把很多文件名改错了,怎么改回来 请问水中沉井施工方法有哪些? 电脑C盘有很多文件名是一大串字母跟数字的文件,可不可以删除? fatal error C1083: Cannot open include file: 'intset.h': No such file or directory setTimeout问题 java 中preparedstatement.setint方法 java ps.setInt(1,wbk1.getText()); 可以这样写吗 河南企服科技有限公司怎么样? 河南浩德科技有限公司怎么样? 如何很好的去除脸上的皱纹? 眼部除皱手术怎么做 PS里的矢量蒙版怎么反相? PS里如何把矢量蒙板反向? ps中曲线蒙版怎么样反选? ps里面怎么弄成这样的曲线蒙版让后反选? PS的快速蒙版反选问题? PS里面添加反相图层蒙版的快捷键是什么?能自己设置吗? PS怎么添加反向蒙版?反向蒙版 什么意思啊? 刚买不到两个月的华为平板m6 电池用不了六个小时能给换新吗? 华为平板m6开不了机开机后一直显示未充满电是怎么回事? 华为平板m6屏幕碎了和充不起电怎么办? 华为平板M6如何维修? 华为平板m6售后维修点怎样查询?