单机模式

1、运维架构师的两个方向?

答:web方向和自动化方向

开发专注于开发,运维专注于运维,所以运维架构师这个岗位就产生了

2、咨询做什么?

答:了解痛点,解决痛点

过去:资源少、分享少、方案少、经验少;

现在:架构已经标准化了,比如阿里云的解决方案

3、不同的语言是由相对称的词构成的集合

答:对称不等于完全相同,比如语法词:英语多过汉语

动词和形容词方面:汉语似乎超越了英语的词汇数量

4、怎样做一个反解析

答:在DNS设置一个A记录

5、怎样让www.shop.com跳转到shop.com?

答:做别名

6、私网地址

答:1、192.168.0.1; 2、172.16.0.1; 3、10.0.0.1;

7、apache如何调用php?

答:通过FASTCGI模块

8、怎样开启mysql和php的长连接?

答:默认短连接,性能不好,因为要不断的创建和断开连接

PHP模块里添加一个参数,也可以在timeout里去处理

PDO::ATTR_PERSISTENT => true

长连接的作用我觉得是在高负载的情况下,通过复用长连接,减少了每个页面的建立数据库连接的时间

9、dnsserver能获取到你的真实dns?

答:是不能的,因为请求DNS的时候和DNS交互的是localdns,联通的网络配置了电信的DNS;

 

动静分离

静态资源直接让nginx处理,localhost写个root

静态资源可以压缩

gzip压缩比那个最高

为什么gzip压缩要把IE浏览器去掉?

因为IE老版本对gzip压缩支持的不太好。

web提高篇:单机时代

 

CGI和fastcgi的区别?

什么是fastCGI?

什么是php-fpm?

动静分离实例

方案一:

web提高篇:单机时代

 

 方案二

web提高篇:单机时代

 

数据库分离

1、学东西不要眼高手低

  1. 讲的时候都会
  2. 面试的时候一点都说不出来

2、主从模式从库一定要只读

    web提高篇:单机时代

主动告诉面试官,做了很多的考虑,配置文件写错,会报错                            

3、mysql主从能限速吗?

web提高篇:单机时代

4、binglog相关问题

web提高篇:单机时代

 

组件分离

1、为什么要单独搞一个域名

  1. 为了防止cookies提交
  2. 每次请求的时候,默认行为你是关不了的
  3. 顶级域名限制cookies的提交

不会用fiebug的运维一定不是一个好运维

2、什么是cookies?

3、很多域名的用处?

为了提高并发

4、拆分域名增加浏览器下载?

每个浏览器针对同一个域名有并发限制

5、网页访问请求的一个原理

    http请求是流式,什么是流式的?

    1、域名解析

    2、http页面全部下载下来

    3、下载完成后就要开始渲染

    4、遇到js会阻塞

    下载下来,并执行成功才会往下走,

    js可以改变

  5、cs单独开一个线程

  6、下载图片

  下载图片是并发的,下载一个渲染一个并显示,一直到最后

优化点:

  1. 静态资源和动态资源分开顶级域名
  2. 多台静态的资源域名是否顶级无所谓
  3. css一定要放在页面的头部
  4. js放在页面的下面,要统计的话放在最前面;
  5. 开启gzip压缩

web提高篇:单机时代

 

apache和nginx简述

0、什么是mpm

多处理模块

1、apache工作模式

1、prefork 

预先启动一些进程为了满足最小空闲

最大空闲进程超过最大空闲就把你干掉了

优点:是一种非线程、与派生的工作模式,用的是进程去处理请求,所以比较容易消耗内存,但是稳定性好,

缺点:某个进程出现问题不会影响到其他请求。

2、worker

优点:使用的是线程去处理请求,消耗内存小,适合高流量的请求

缺点:线程是可以共享内存的,但是如果某个进程出现问题,那么这个进程下的线程都会出现问题,即稳定性不是很好

3、event

2.4后发布的
是为解决keep-alive保持长连接出现的一种工作模式
使用keep-alive长连接的时候,某个线程会一直被占用,即使中间没有请求,需要等到超时才会被释放,所以这个时候就出现了event的工作模式
专门一些线程来keep-alive类型的线程

当有真实请求过来的时候,将请求传递给服务器的线程
执行完毕后,又允许它释放。这增强了在高并发场景下的请求处理
另外,event模式是不支持用在https上的


2、什么是php-fmp?

是fastcgi的管理工具,5.5.3之后集成

3、apache如何和php通信

1、通过9001端口

本地的127.0.0.1的9001端口
比本地ip地址要好很多

2、soket的方式连接

pooxy-/var/xx/xx.socket

4、nginx优化

 

1、master进程

是管理worker进程,不接受用户请求的,
要是只有一个进程就不一定了

2、worker进程

接受客户请求的
worker_processes8(根据cpu的实际核数)

3、nginx - 性能优化,突破十万并发

http://361324767.blog.163.com/blog/static/114902525201281224328427/

5、Apache select和Nginx epoll的技术对比表

web提高篇:单机时代

 

 

三次握手四次挥手

1、网站打不开通过osi七层模型

网站访问慢图解

web提高篇:单机时代

 

 

 

web提高篇:单机时代


2、TCP/IP相关学习资料

1、科来网络主页
http://www.colasoft.com.cn/training/document.php
2、科来网络通讯协议图2017版
http://www.colasoft.com.cn/download/network-protocol-map-2017.zip
3、TCP协议解码详解
http://www.colasoft.com.cn/teaching/protocol_analysis_006.doc

3、TCP的3次握手和4次挥手

男女朋友谈恋爱和分手的例子。
4、什么是半关闭状态?

A对B说我要要断开,A就不能再给B发送数据了,但B可以给A发送数据,

虽然A不能发但是可以收

5、什么是半关闭状态?

就是说将SYN标记位置于1

6、TCP为何 4次挥手?

因为TCP传输是全双工的,它需要确定上行和下行全部结束了才关闭,所以是4次。

7、什么是全双工?

打个简单比方就是:打电话,你可以说,我也可以说。
8、什么是半双工?

打个简单比方就是:对讲机,同时只有一方可以说
9、什么是半工?

单向,单行道路
10、TCP头部中哪些标志位参与了三次握手?

ACK 和SYN
11、TCP中标志位的作用?

  1. SYN:同步数据
  2. ACK:确定是否是同一个请求
  3. FIN: 拆开链接

TCP状态转换

1、tcp建立过程涉及5种状态?

  1. CLOSED:默认初始化状态
  2. LISTEN:建立socket,进入监听状态
  3. SYN_SENT:发送syn报文,并回复ack及syn报文
  4. SYN_RCVD:接受syn报文,并回复ack及syn报文
  5. ESTABLISHED:接受syn报文,回复ack,建立链接(客户端)接受ack报文,建立连接

2、tcp断开过程涉及6种状态?

  1. ESTABLISHED:默认断开前初始化状态
  2. FIN_WAIT1:发送断开请求FIN报文
  3. CLOSE_WALT:收到FIN后向客户端发送ACK
  4. FIN_WAIT2 :收到服务端返回的ACK报文,等待数据数据传输
  5. LAST_ACK:发送FIN断开请求报文
  6. TIME_WAIT:回复FIN断开请求,发送ACK报文
  7. CLOSED:收到ack报文,立即转变为断开状态等待2MSL后,进入断开状态
  8. CLOSEING:没有收到回复FIN报文的ACK,直接收到FIN

3、timewait的作用?

1、可靠的实现TCP全双工连接的终止终止

我们分手吧!

不好意思我刚才是开玩笑,

说了好多恩爱的话

突然说我们分手吧!

2、允许老的分节在网络种消失


4、为什么经过60之后就能保证,之前丢失的报文不会再过来?

报文在网络中的生存周期是有限的,一个周期是30秒,为了保险我就等60秒

5、什么是2MSL?

  1. MSL是Maximum Segment Lifetime,译为“报文最大生存时间”,他是任何报文在网络上存在的最长时间,超过这个时间报文将被丢弃。
  2. 因为TCP报文(segment)是IP数据报(datagram)的数据部分,而IP头中有一个TTL域,TTL中文生存时间,
  3. 这个生存时间是由源主机设置初始值但不是存的具体时间,而是存储了一个IP数据报可以经过的最大路由数
  4. 每经过一个处理他的路由器此值就减1,当此值为0则数据报将被丢弃
  5. 同时发送ICMP报文通知源主机。RFC 793中规定MSL为2分钟,实际应用中常用的是30秒,1分钟和2分钟等

6、TTL与MSL关系?

  1. 不是简单的相等的关系
  2. MSL要大于等于TTL

time_wait调优

1、TIME_WAIT多的问题?
  因为它要占用Socket连接
2、为什么Socket最多只有65536?
  因为tcp头部用16位来保存端口
3、为什么大家只配置65535?
  端口是从0开始的,0是保留的
4、别人说的发10万并发进行压力测试?
  是有前提条件,linux一切皆文件
  改openfile的大小,默认是1024个,多ip可以解决
5、time_wait是在什么情况下产生的?
  主动关闭的一方产生 谁主动关闭谁就产生
6、什么情况下会关闭?
  如果客户端是个长连接我这边超时了我就是主动关闭放
  服务器端超时时会关闭
7、时间戳关了打开tcp_tw_reuse?
  有问题你们的公司经常出现一个特别奇葩的问题
  你最好看一下内核优化参数
8、nat环境下不能用tcp_tw_recycle
  如果你们公司nat上网可能就有问题
  都通过一个IP出去,每个人电脑的时间都有可能不同
  可能导致服务器直接就把数据库包丢了
9、time_wait不关就会占用socket连接

1、解决方案

增加IP地址:是有很多要求,ip多了也不好管,
因为是四元组源ip变了就又是一个65535,所以说在很多场景优化还是有作用的

2、对于cpu

影响忽略不计

3、对于内存

1万个占用1M内存,大概就是6M,所以可以忽略
4、占用soket连接真可怕

time-wait优化


1、Web性能优化之-深入理解TCP Socket

https://www.unixhot.com/article/65

2、本地可用端口极限值

cat /proc/sys/net/ipv4/ip_local_port_range 
4000	65000


用这条命令会返回两个数字,默认是:32768 61000,说明这台机器本地能向外连接61000-32768=28232个连接,
注意:是本地向外连接,不是这台机器的所有连接,不会影响这台机器的80端口的对外连接数


3、查看tcp_timestamps (时间戳)

cat /proc/sys/net/ipv4/tcp_timestamps 
1

4、tcp_tw_reuse设置及作用

作用:让TIME_WAIT状态可以重用

echo "1" > /proc/sys/net/ipv4/tcp_tw_reuse

1、这样即使TIME_WAIT占满了所有端口,
2、也不会拒绝新的请求造成障碍
3、正常关闭影响不大,老的数据报回来怎么办,时间戳小的就直接丢掉
4、tcp_tw_reuse在所有的节点上都可以打开

5、tcp_tw_recycle的设置及作用

作用:让TIME_WAIT尽快回收

echo "1" > /proc/sys/net/ipv4/tcp_tw_recycle

1、小于60秒等30s
2、数据库就可以打开,内网里面可以
3、在负载均衡上tcp_tw_recycle绝对不能开

hapox支持不同ip地址请求后端,所以很多cdn用的是ha

6、上面三个参数哪两个必须同时打开?

时间戳,和任意一个

相关文章:

  • 2022-02-09
  • 2022-03-08
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-02-09
猜你喜欢
  • 2021-11-25
  • 2021-08-28
  • 2022-12-23
  • 2021-06-10
  • 2021-05-09
相关资源
相似解决方案