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

  • 相关阅读:
    【Nginx】ngx_event_core_module模块
    ELMAH--Using HTTP Modules and Handlers to Create Pluggable ASP.NET Components 77 out of 90 rated th
    nyist oj 214 单调递增子序列(二) (动态规划经典)
    java 入门书籍(java7)
    ARCGIS将WGS84坐标投影到高斯平面
    【linux】linux下对java程序生成dump文件,并使用IBM Heap Analyzer进行分析,查找定位内存泄漏的问题代码
    【springboot】【socket】spring boot整合socket,实现服务器端两种消息推送
    【linux】linux修改open file 大小
    【docker】docker限制日志文件大小的方法+查看日志文件的方法
    【docker】docker部署spring boot服务,但是docker logs查看容器输出控制台日志,没有日志打印,日志未打印,docker logs不打印容器日志
  • 原文地址:https://www.cnblogs.com/mayaohui/p/11856248.html
Copyright © 2011-2022 走看看