1.web服务

来源:互联网 发布:linux 查看硬盘大小 编辑:程序博客网 时间:2024/06/07 06:20

1.cookie

cookie是由浏览器来管理的,其一般保存在客户端内存中,所以生命周期为浏览器会话期间,关闭浏览器以后,cookie会自动消失。当然如果cookie设置了过期时间,也会由浏览器同步在磁盘当中。在每次http请求的过程当中,浏览器会按照一定的原则选择一部分cookie放在http包头当中发给web服务器。所以cookie过长导致的直接结果就是http包体过大,因此http协议对cookie的长度是有限制的。

2.一般的web架构是怎样的
这里写图片描述

上图是一个常见的web架构,由反向代理服务器,http服务器组成,http服务器又分成nginx进程和php进程。首先,暴露给用户的是一个反向代理服务器,反向代理的存在有几个作用,一是负载均衡,反向代理服务器收到数据包以后会按照一定的负载均衡算法转发到真正的业务服务器上面去,另一个作用是防止攻击,它会按照一定的规则过滤掉很多不合法的请求,从而降低业务机的负载,因为其只是简单地转发,没有真正的业务逻辑,所以即使黑客攻击到了这一层也没有太大的危害。同时反向代理服务器也可以缓存一些静态的资源,进一步降低业务机的负载。nginx作为http服务器,在整个架构中主要负责hold连接,并不做请求的真正处理,在上图中被画成了一个方块,但其本身也是多进程的结构。

这里写图片描述

假如对同一台机器上面配置了8个nginx worker,每个worker配置的连接数是1024,那么这台机器hold连接的能力大概是8*1024。nginx worker和php-fpm的通信方式是通过socket来通信的,所以说nginx和php-fpm可以部署在同一台机器上也可以部署在不同的机器上。php-fpm是php的一个插件,现在已经集成到了php的核心代码中,是fast-cgi的一种实现。其进程结构和nginx基本类似,都是由一个master进程和多个worker进程构成的。fastcgi规定每过来一个请求,都从进程池里挑选一个进程,来加载并执行一段php脚本,脚本结束以后将进城归还给进程池。所以php-fpm说到底就是一个进程管理器,正如其名字所示(FastCGI Process Manager)。php-fpm对于其worker进程数的配置由两种static和dynamic。若配置成static表示在fpm启动的时候由master直接fork出max_children的worker数,并且在运行当中这个数字是不变的。而dynamic则表示根据具体的请求动态的fork worker进程,最大值为max_children。那么,这个max_children该如何配置呢?如果worker数过少,那么php-fpm收到nginx的数据请求时发现进程池里面已经没有进程了,直接就会拒绝服务,导致此次http请求以502告终。如果max_children配置过多的话,会占用多余的系统资源,尤其是在static情况下。所以比较适中的办法就是将这个值先配得大一些,然后去观察active的进程数,最后选择一个合适的值。我们可以看到在fastcgi模式下,一个进程是对应一个请求的,假如说在一台机器上我们配置了300个fastcgi进程,那么其能同时处理的最大请求数就是300个,是远远小于nginx的接入能力的。如果php有一些阻塞调用(如文件上传下载等),当前进程不能处理其他的请求,所以说php-fpm在在这套架构里是瓶颈,如何在此提高性能是一个值得探讨的问题。

master - worker :
http://blog.csdn.net/lmdcszh/article/details/39698189

0 0
原创粉丝点击