中间件监控之Apache

 补 系统架构php

nginx接到请求后把请求转发到tomcat,还有种方式是转发到apache(php项目),或者其余语言的应用服务器(放置咱们的项目)
ngnix:是web服务器,接受和转发请求用的,不作任何动态处理
浏览器直接请求cdn(有钱用cdn,没钱用文件服务器);

 Cdn   内容分发网络 全称是Content Delivery Networkmysql

 面试:Cdn 的时间算法,基于什么的算法nginx

mysql:数据库服务器
redis:
集群:多台机器,放一块儿,请求的时候若是有一个挂了,不影响正常使用,个数是单数,一个leader,多个follower,半数挂了集群就挂了
消息队列:发个东西过去,排队,第一我的发了第二个发,这个顺序是按接收到的时间
kafka,ZK(zookeeper):一说这两个确定是集群
日志分析:须要用到awk,grep,sed
肯定性能指标:分析日志查看了解pv 
PV:page view,页面浏览量或点击量,刷新一次页面即被计算一次,简称PV,
UV:即Unique Visitor,访问您网站的一台电脑客户端为一个访客。00:00-24:00内相同的客户端只被计算一次
IP(独立IP):指独立IP数。00:00-24:00内相同IP地址之被计算一次
KLE(一套框架,能够知足日志分析)、 Maven  本身了解
 

面试题:大数据迁移怎么迁移,好比你服务器上有一个10个G的日志文件,你怎么去迁移 (01:42分左右)web

传以前   校验MD5  传以后  再校验MD5 确保传过去的数据一致面试

保证完整性 redis

根据网络传输效率,考虑怎么分片  服务器直接用scp  命令算法

传输完成后校验MD5  而后再组装sql

存储分片(某个扇区损坏不影响其余扇区)  多线程数据库

速度快,安全系数高apache

全部的文件都是二进制形式保存,取决于你以什么形式打开

 

利用分片传输+多线程传输的机制
1.分片,把大内存的数据分红n片
2.md5 算法校验,在传输前传输后分别校验,检查文件传输正确性、完整性后  再组装
3.多线程传,使用时间为单线程的n分之一

https://blog.csdn.net/ltx06/article/details/70162107 

 
1、Apache
一、Apache 简介
Apache HTTP Server  是一个开源的web 服务器,具备简单、速度快、稳定性高的特色,而且还能够做为代理服务器
 
二、Apache 安装

 若是须要集成php  用lampp  集成包

 Find  / -name httpd  查找命令   /  根目录下的全部路径  -name  经过名字

 Find / |grep httpd  模糊查找

A,使用yum安装

Yum  安装

apache  /etc/httpd  配置文件 为 httpd.conf  可执行文件

 /usr/sbin/httpd  启动apache   service httpd start|restart|stop (yum 安装会做为一个系统服务)

B,使用安装包安装

C,Lampp  自带的httpd

bin 目录全部可执行文件  

/opt/lampp/etc   lampp 配置文件

/opt/lampp/etc/extra  扩展的配置文件

查看Apache 版本:

/opt/lampp/bin/httpd -v 查看apache 版本

/usr/sbin/httpd -V  查看你安装的apache的版本信息等细节

配置文件 :/opt/lampp/etc/httpd.conf
           /etc/httpd/conf/httpd.conf

配置文件常见修改的地方:

ServerRoot "/opt/lampp"

Listen  监听 直接提供端口  Listen 9090 

三、Apache 主要目录和配置文件

 命令:

配置文件 :/opt/lampp/etc/httpd.conf
           /etc/httpd/conf/httpd.conf

查看进程  

ps -ef       ps  -aux 

ps -ef  

 

Root  用户启动主进程的同时会启动一些子进程  

因此  部署php项目,将项目代码放到/opt/lamp/htdocs该目录下

访问项目时,http://ip:端口号/项目名 即可访问

若是没法访问:1,查看该项目是否放至在apache默认web站点目录路径下;2,项目名是否正确 ( bbs 文件名为upload  因此须要先更名为bbs)

 Php  项目都是热启动   项目不中止运行

一、拉代码 
二、修改配置文件 

部署好bbs后有一个初始化用户名密码:
其实修改的是下面文件(初始化操做实际就是文件io 读写操做)跟数据库打交道通常是io操做

 数据库迁移的时候须要手动修改该文件

请求日志 看access_log  

 

 Apache 扩展文件 

 重点:Apache  工做模式

用的系统的apache  /opt/lampp/etc/extra  下的httpd-mpm.conf

web 服务器Apache 目前一共有三种稳定的MPM(Multi -Processing Module,多进程处理模块)模式。它们分别是prefork ,worker和event 

查看当前工做模式  

/opt/lampp/bin/httpd -v 查看apache 版本

/usr/sbin/httpd -V  查看你安装的apache的版本信息等细节

中Server  MPM  字段

一、Prefork  模式   单进程单线程,一对一

 

Prefork MPM是一个很是稳定的模式,Apache 在启动之初,会预派生fork 一些子进程,而后等待请求进来,而且总会保持一些备用的子进程。

同时派生出的每一个子进程只有一个线程,在一个时间点内只能处理一个请求。Prefork MPM在效率上要比Worker MPM高,可是在内存使用方面也会大不少。

它并不擅长处理高并发请求,在这种场景下,它会将请求放进队列中,一直等到有可用进程,请求才会被处理。

长链接:保持的时间比较长,好比视频

参数详解:

 

StartServers  //指定服务器启动时创建的子进程数,默认为5

MinSpareServers //指定空闲子进程的最小数量,默认为5.若是当前空闲子进程数小于配置的数量则Apache会以最大每秒一个的速度建立新的子进程

MaxSpareServers  //指定空闲子进程的最大数量,默认为10.若是当前有超过设置的最大进程数则会杀死多余的进程,若是设置的比MinSpareServers 小,则Apache会默认修改成MinSpareServers +1

MaxRequestWorkers  //限定服务器同一时间内客户端最大接入的请求数量,默认是150.任何超过了该限制的请求都要进入等待队列,

                                   一旦一个个链接被释放,队列中的请求才将获得服务。在Apache2.3 前又叫MaxClients

MaxConnectionsPerChild  //每一个子进程的在其生命周期内容许最大的请求数量,若是请求总数已经达到这个数值,子进程将会结束;

                                         若是设置为0,子进程将永远不会结束。若该值设置为非0值,能够防止运行PHP致使的内存泄漏(结束之后会释放内存)。

一个请求结束后会保留一些“脏数据”,链接的请求越多脏数据越多,到达必定程度后会结束该进程,释放内存。

ServerLimit 2000          //MaxRequestWorkers(MaxClients)最大是256个线程,若是须要更大就须要加上该参数了。

                            这个参数的最大值是2000,若是须要更大须要编译apache。生效前提:必须放在其余指令的前面

 

进程数与cpu  有关   不可能所有占满、

思考:那要是避免排队的状况 能够直接改 prefork的数值吗?

 

二、Aache工做模式-Work模式   单进程,多线程   一对多

 

参数详解:

StartServers  //服务器启动时建立的子进程数

MaxClients   //

MinSpareThreads   //最小空闲线程数,这个MPM将基于整个服务器监控空闲线程数。假如服务器中的空闲线程数太少,则将会建立新的空闲线程

MaxSpareThreads   //最大空闲线程数。这个MPM将基于整个服务器监控空闲线程数。假如服务器中的总的空闲线程数太多,子进程将杀死多余的空闲线程。最大

                                    空闲线程数的取值范围是有限制的。Work 须要其大于等于MinSpareThreads  和ThreadsPerChild 的总和

ThreadsPerChild   //每一个子进程创建的常驻执行线程数,子进程在启动时创建这些线程后就不会再创建新线程了

MaxRequestsPerChild   //容许同时伺服的最大接入请求数量。任何超过该限制的请求都将进入等候队列

                                  每一个进程能处理多少个请求,处理完成后则会死掉

思考:现有以下配置

<IfModule worker.c>
StartServers         4  
MaxClients         300
MinSpareThreads     25 
MaxSpareThreads     75
ThreadsPerChild     25    固定为25不可变
MaxRequestsPerChild  0       每一个进程能处理多少个请求,处理完成后则会死掉   释放内存
</IfModule>

4个进程 每一个进程容许25个线程   总共100个  不符合maxsparethreads 75

则会杀掉一个进程   则表明一次性杀掉了25个线程  符合maxsparethreads 

在25 ~ 75 之间  不会作任何修改

若是不知足最小的minsparethreads 25 则会建立一个进程      

 

Work  模式不安全  一个进程死掉后子线程所有被杀掉

 

三、Apache工做模式-Event模式  (具体参考ppt)

Apache  工做模式切换

切换工做模式   修改文件名便可 默认是prefork   

举例说明:把这个改成httpd名,工做模式变为work

用同一个配置文件,端口必定会被占用

重点:Apache 监控

1、如何获取apache监控参数

Vi  /etc/httpd/conf/httpd.conf

 

SetHandler  加载某个模块

order 先执行deny 

重启apache   项目是实时读取的,但自身配置不是,因此须要重启

浏览器输入:http://ip/server-status

 

 Apache  优化

面试:怎么去apache调优?
提升可支持的链接数,能不能处理取决于项目代码的处理能力
优化手段就是把prefork改成woker,提升支持的线程数
worker有可能崩
根据实际使用状况,评估下压力状况,使用者,查看工做模式是哪一个
Apache 监控重点:
看运行状态;看是否有排队
总之,apache是世界上最好的web服务器
相关文章
相关标签/搜索