一:httpd-2,.4新增的模块
1,mod_proxy_fcgi(可以提供fcgi代理)。
2,mod_ratelimit(限制用户带宽)
3,mod_request(请求模块,对请求过滤)
4,mod_remoteip(匹配客户端IP地址)
二:特性
1,MPM支持在运行时装载,不过在编译安装是要启用--enable-mpms-shared=all --with-mpm=event
2,支持event
3,支持异步读写
4,在每个模块和每个目录上指定日志级别
5,基于FQDN的虚拟主机不再需要NameVirtualHost的指令
6,支持使用自定义变量
三:安装时所需源码包
1,apr:对操作系统调用的抽象库,用来实现Apache内部组件对操作系统的使用,提高系统的可移植性
2,zlib,pcre,openssl
四,常见参数
--enable-so :支持动态共享模块。--enable-rewrite:支持url重写。--enable-CGI:启用cgi 。--with-mpms-shared=all:启用MPM所有支持模块,这样event,worker和prefork就可以模块化的安装
五:Apache的工作模式(MPM多进程处理模块,也叫工作模式)
1,prefork模式(非线程)
工作方式:Apache服务启动之后,mpm_prefork会预先创建多个子进程(默认5个)每个进程只有一个线程,当接收到客户端的请求之后,mpm_prefork模块将其交给子进程进行处理。由于,prefork模块是独立处理单个的对应请求。所以在效率上要高于work模式,但是同时占用内存也比较多,不适用高并发的处理场景
访问http很慢的原因:MaxRequestWorkers(最大连接数),用户请求数量超过了最大连接数。那么这个数值是不是越大越好呢?不是,应该根据负载情况进行动态调整。比如4G内存机器,初始值应该是4000/2=2000(单位MB)
2,work模式(多进程+多线程)
work模式使用的是多进程多线程的混合模式,在同一时间可以独立的处理多个请求并且互不干涉。即使某一部分出现了问题,影响Apache性能的也是某一部分而并非整个进程。prefork处理请求速度要高于worker,但同时它消耗的资源和cpu内存页多余worker
3,event模式
event模式可以说是worker模式的变种,它把服务器进程从连接当中分离出来。主要解决keep-alive长连接被持久占用造成的资源浪费。在event模式当中会有专门的模块管理keep-alive类型的线程,当真实请求发送过来后,它会将其转发给线程让其处理,执行完毕之后,又将他进行释放,增强了在高并发下处理请求。
缺点:不能良好的支持https访问,涉及http认证相关的问题
六:进程和线程的区别
线程是进程内的一个执行单元,也是进程内的可以调度的实体
区别:1,地址空间:一个进程内至少包括一个线程,线程共享进程的地址空间,而进程有自己的独立地址空间
2,资源拥有:进程是资源分配和拥有的单位,而同一个进程内的线程只能共享进程的资源
3,线程是处理器的调度单位,但是进程不是
七:Apache的配置参数
1,keepalive On/off
keepalive指的是保持连接活跃。如果将keepalive设置为On,那么来自同一客户端的请求就不需要在一次连接,为了避免每次请求都要新建一个连接而加重服务器的负担,一般情况之下,可以将图片较多的网站设置为On
2,keepaliveTimeout Number
连接超时时间一般在3-5秒。超过这个时间,连接自动断开。
3,MaxKeepAliveRequest 100
一次性可以进行http请求的最大请求次数,
4,MPM这个是影响关键并发效率的主要因素
(1)startservers 10
服务器启动时建立的子进程数量,因为子进程数量动态取决于负载的轻重。所以,一般没有必要去调整这个参数
(2)Minspareserver 10
设置空间子进程的最小数量,一般不调整此参数,除非是负载特别大
(3)MaxSpareThreads 75
设置空闲子进程的最大数量,如果超过这个参数,父进程则会杀死多余的子进程
(4)serverlimit 2000
进程数上限,修改完这个指令必须完全停止服务器重新启动才能生效
(5)MaxClients/Maxrequestworkers 256
用于客户端请求的最大请求数量和最大进程数量,任何超过Maxclients限制请求都将进入等候队列,默认是256
八:Apache的优化
(1)开启Gzip优化功能:可以极大的加速网站,有时压缩比例高于80%,最少也有40%
设置完压缩比例,虽然会有很高的压缩率。但是,它会占用很多的CPU资源
(2)配置mod_expires模块
可以减少20-30%左右的请求重复,将重复的用户对指定的页面请求缓存在本地,不想服务器发出请求
九:Apache为什么要日志切割
随着网站访问的数据越来越大,webserver(web服务器)产生的日志文件也会越来越大。会占用过多资源,一次性删除过大的文件也会丢失你很多信息。因为这些日志都是用来进行分析,网络安全监察和网络运行状况监控等。
方法1:使用rotatelogs(Apache自带)隔一天记录一个日志
编辑Apache的主配置文件。注释掉ErrorLogs customlog/access_log common后,添加
十一:fcgi模块编写安装LAMP+xcache
1,php的工作模式
在lamp环境下php的工作模式有:cgi模式,Apache模式,fastcgi模式,
cgi模式下运行php性能并不是很好。fastcgi方式php是一处独立的进程。所有php子进程都是由php的组件php-fpm负责
十二:压力测试
1,ad原理:ad命令会创建多个并发访问线程,模拟多个访问者在同一时间对某个url地址进行访问。占用内存和cpu并不是很高同时也可以测试nginx ,tomcat ,lls等
2,ad测试的性能指标
(1)吞吐量:服务器在高并发下处理能力,在某个单温时间内处理的最大请求数(吞吐率和并发用户数相关,不同的并发用户数,吞吐率一般不同)
(2)并发连接数:并发连接数指的是某个时刻服务器所接受的请求数目,也就是会话
(3)并发用户数:在一个用户在某一时间下可以产生多个会话,也叫连接数
(4)用户平均请求等待时间:公式,处理完成所有请求数所花费的时间/(总请求数/并发用户数)
(5)服务器平均请求等待时间:公式,处理完成所有请求数所花费时间/总请求数