zoukankan      html  css  js  c++  java
  • apache服务

    一: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后,添加

    ErrorLog "|/usr/local/http-2.4.23/bin/rotatelogs -l logs/error_%Y%m%d.log 86400"
    CustomLog "|/usr/local/http-2.4.23/bin/rotatelogs -l logs/access_%Y%m%d.log 86400" combined
    即可,一天86400秒
    方法2:使用cronlog程序
    在主配置文件当中添加
    ErrorLog "|/usr/local/sbin/cronolog logs/error-%Y%m%d.log"
    CustomLog "|/usr/local/sbin/cronolog logs/access-%Y%m%d.log" combined
    十:配置防盗链
    利用Apache的rewrite模块

    十一: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)服务器平均请求等待时间:公式,处理完成所有请求数所花费时间/总请求数 

  • 相关阅读:
    是否需要有代码规范
    小学四则运算生成程序(支持分数)总结
    HDU 4035 Maze 期望dp
    UVA
    HDU 3853 LOOPS 期望dp
    POJ 2096 Collecting Bugs 期望dp
    HDU 4405 Aeroplane chess 期望dp
    Codeforces Round #341 (Div. 2) E. Wet Shark and Blocks dp+矩阵加速
    HDU 4616 Game 树形dp
    HDU 4126 Genghis Khan the Conqueror 最小生成树+树形dp
  • 原文地址:https://www.cnblogs.com/mayaohui/p/11856248.html
Copyright © 2011-2022 走看看