补 系统架构

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

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

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

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分左右)

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

保证完整性

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

传输完成后校验MD5  然后再组装

存储分片(某个扇区损坏不影响其他扇区)  多线程

速度快,安全系数高

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

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

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

 
一、Apache
1、Apache 简介
Apache HTTP Server  是一个开源的web 服务器,具有简单、速度快、稳定性高的特点,并且还可以作为代理服务器
 
2、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

3、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  项目都是热启动   项目不停止运行

1、拉代码 
2、修改配置文件

部署好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  字段

1、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的数值吗?

2、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  模式不安全  一个进程死掉后子线程全部被杀掉

3、Apache工作模式-Event模式  (具体参考ppt)

Apache  工作模式切换

切换工作模式   修改文件名即可 默认是prefork

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

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

重点:Apache 监控

一、如何获取apache监控参数

Vi  /etc/httpd/conf/httpd.conf

SetHandler  加载某个模块

order 先执行deny

重启apache   项目是实时读取的,但自身配置不是,所以需要重启

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

Apache  优化

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

中间件监控之Apache的更多相关文章

  1. signalfx的中间件监控指标so cool

    signalfx的中间件监控指标so cool www.jianshu.com   对于我们做运维的来说,监控是最基本的东西,不过在初创公司很多计划是跟不上项目架构变化的,项目中会不断加入各种服务和组 ...

  2. 中间件监控之tomcat

    中间件主要目的:能够支持更多人去访问 一.Tomcat 介绍 Tomcat 是一个小型的轻量级应用服务器,当配置正确时,Apache 为HTML页面服务,而Tomcat 实际上运行JSP页面和Serv ...

  3. 中间件漏洞之Apache

    中间件之Apache漏洞 我们常见的中间件有IIS.Apache.Nginx,其中Apache中间件有什么漏洞呢? Apache 解析漏洞: 漏洞原因:该解析漏洞属于用户配置问题(mime.types ...

  4. 【中间件安全】Apache 安全加固规范

    1. 适用情况 适用于使用Apahce进行部署的Web网站. 2. 技能要求 熟悉Apache配置文件,能够利用Apache进行建站,并能针对站点使用Apache进行安全加固. 3. 前置条件 1. ...

  5. 监控分析——Web中间件

    发现 中间件监控看是否有性能瓶颈 核心:主要看中间件的线性池进程池有没有排队情况,请求是否处理及时就OK Apache 以前php都是用apache,现在基本用nginx了. 首先自己启动apache ...

  6. 教你如何监控 Apache?

    什么是 Apache? Apache 是一款 HTTP 服务器软件,现在更名为 "http",而 Apache 则成了一个(包含httpd的项目)巨大的基金组织,根据习惯后文都用 ...

  7. cactiez v11添加对mysql数据库、apache系统进行监控

    cactiez默认已经安装了mysql监控的模板,需要我们对服务器端和被监控的mysql客户端进行配置才能生效. 被监控的Mysql客户端: 如cactiez的IP为192.168.0.8 #添加一个 ...

  8. 通过Centreon监控apache、MySQL、Hadoop服务状态

    在上面的章节中,只是简单介绍了Centreon的几个基础监控项,例如添加主机.服务等,这些对于一个监控系统来说是远远不够的,本节将重点介绍对一些扩展服务的监控,也就是对一些常见应用的监控. 一. Na ...

  9. Zabbix 监控MySQL、Apache、Nginx应用监控

    zabbix对第三方应用软件的监控,主要有两个工作难点,一个是编写自定义监控脚本,另一个是在编写模板并导入zabbix web中,编写脚本这个要根据 监控需求定制即可,而编写模板文件有些难度,不过网上 ...

随机推荐

  1. 转:Tkinter教程之Text(2)篇

    '''Tkinter教程之Text(2)篇''''''6.使用tag来指定文本的属性'''#创建一个指定背景颜色的TAG# -*- coding: cp936 -*-from Tkinter impo ...

  2. 动态布局中RadioGroup的RadioButton有时候不相互排斥的原因

    近期在做一个答题类的模块,有单选.简答.调查问卷等,我是用动态布局的方式生成答题项的.在弄单选的时候遇到一个比較奇葩的问题,在代码中生成RadioGroup和RadioButton的时候.会发现不能相 ...

  3. 【Java虚拟机】运行时数据区

    Java在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域.这些区域都有各自的用途.创建和销毁的时间,有一些是随虚拟机的启动而创建,随虚拟机的退出而销毁,有些则是与线程一一对应,随 ...

  4. c中的static

    static的作用 1)保持变量值:在函数体,一个被声明为静态的变量在这一函数中可以维持其值.这句话可能描述不太准确,大家看下面这个例子吧. void staticLocalVar() { stati ...

  5. 【laravel5.4】laravel5.4系列之生成_ide_helper.php文件

    在laravle中使用代码自动补全,比较方便开发,于是这边找到了相关的办法 在laravel配置完好的情况下,同时安装好了composer. 进入代码的根目录执行 composer require b ...

  6. PHP-线程安全与非线程安全版本的区别

    Windows版的PHP从版本5.2.1开始有Thread Safe(线程安全)和None Thread Safe(NTS,非线程安全)之分,这两者不同在于何处?到底应该用哪种?这里做一个简单的介绍. ...

  7. PHP-九个非常有用的功能[转]

    1. 函数的任意数目的参数你可能知道PHP允许你定义一个默认参数的函数.但你可能并不知道PHP还允许你定义一个完全任意的参数的函数下面是一个示例向你展示了默认参数的函数:// 两个默认参数的函数fun ...

  8. java多线程(一)之继承Thread类

    一.概述 进程:正在执行的应用程序 线程:进程的执行单元,执行路径 单线程:一个应用程序只有一条执行路径 多线程:一个应用程序有多条执行路径 二.两种实现方式, 下面为第一种方式: 继承Thread类 ...

  9. 给你出道题:依次去掉离中心最远的M个点

    给定一个数组a[N],里面包含N个向量.现在要求进行删点操作,删点原则如下: 1.求出N个向量的中心O1,删除离O1最远的那个点 2.求出N-1个向量的中心O2,删除O2最远的那个点 ...... 重 ...

  10. [转]TCP(HTTP)长连接和短连接区别和怎样维护长连接

    原文链接 一.HTTP协议和TCP协议 HTTP的长连接和短连接本质上是TCP长连接和短连接.HTTP属于应用层协议,在传输层使用TCP协议,在网络层使用IP协议.IP协议主要解决网络路由和寻址问题, ...