2020年linux经典面试题集锦


此篇是根据面试常问的一些面试题整理而来,后面会不定期更新。一起学习。长安点赞三连

1 redis与memcached对比

  1. 支持数据的持久化:可以将内存中的数据保持在磁盘中,重启 redis 服务或者服务器之后可以从备份文件中恢复数据到内存继续使用。
  2. 支持更多的数据类型:支持 string(字符串)、hash(哈希数据)、list(列表)、set(集合)、zet(有序集合)
  3. 支持数据的备份:可以实现类似于数据的 master-slave 模式的数据备份,另外也支持使用快照+AOF。
  4. 支持更大的 value 数据:memcache 单个 key value 最大只支持 1MB,而 redis 最大支持 512MB。
  5. Redis 是单线程,而 memcache 是多线程,所以单机情况下没有 memcache 并发高,但 redis 支持分
  6. 分布式集群以实现更高的并发,单 Redis 实例可以实现数万并发。
  7. 支持集群横向扩展:基于 redis cluster 的横向扩展,可以实现分布式集群,大幅提升性能和数据安全性。

2 MySQL存储引擎

MyISAM引擎特点

  1. 不支持事务
  2. 表级锁定
  3. 读写相互阻塞,写入不能读,读时不能写
  4. 只缓存索引
  5. 不支持外键约束
  6. 不支持聚簇索引
  7. 读取数据较快,占用资源较少
  8. 不支持MVCC(多版本并发控制机制)高并发
  9. 崩溃恢复性较差
  10. MySQL5.5.5前默认的数据库引擎

InnoDB引擎特点

  1. 行级锁
  2. 支持事务,适合处理大量短期事务
  3. 读写阻塞与事务隔离级别相关
  4. 可缓存数据和索引
  5. 支持聚簇索引
  6. 崩溃恢复性更好
  7. 支持MVCC高并发
  8. 从MySQL5.5后支持全文索引
  9. 从MySQL5.5.5开始为默认的数据库引擎

3 数据库索引优点

  1. 数据库索引优点
  2. 索引可以降低服务需要扫描的数据量,减少了IO次数
  3. 索引可以帮助服务器避免排序和使用临时表
  4. 索引可以帮助将随机I/O转为顺序I/O
  5. 缺点:
  6. 占用额外空间,影响插入速度

4 事务隔离级别

从上至下更加严格
READ UNCOMMITTED 可读取到未提交数据,产生脏读
READ COMMITTED 可读取到提交数据,但未提交数据不可读,产生不可重复读,即可读取到多个提交数据,
导致每次读取数据不一致
REPEATABLE READ 可重复读,多次读取数据都一致,产生幻读,即读取过程中,即使有其它提交的事务修改
数据,仍只能读取到未修改前的旧数据。此为MySQL默认设置
SERIALIZABILE 可串行化,未提交的读事务阻塞修改事务,或者未提交的修改事务阻塞读事务。导致并发性
能差

5 session 和 cookie

Cookie是服务器存储在本地计算机上的小块文本,并随每个请求发送到同一服务器。  Web服务器使用HTTP标头将cookie发送到客户端。在客户端终端,浏览器解析cookie并将其保存为本地文件,
该文件自动将来自同一服务器的任何请求绑定到这些cookie。
session会话机制是一种服务器端机制,当用户访问web产生session id
会话ID将返回给客户端以保存此响应。

6 Tomcat组成

由server,service,engine,host,context,web application 组成,1个server包含多个service,一个engine包含多个host,context包含多个 服务。

Server Tomcat    运行的进程实例
Connector     负责客户端的HTTP、HTTPS、AJP等协议的连接。一个Connector只属于某一个Engine
Service      用来组织Engine和Connector的关系
Engine     响应并处理用户请求。一个引擎上可以绑定多个Connector
Host     虚拟主机
Context     应用的上下文,配置路径映射path => directory

7 buffer 和 cache

1、Buffer(缓冲区)是系统两端处理速度平衡(从长时间尺度上看)时使用的。它的引入是为了减小短期内突发I/O的影响,起到流量整形的作用。比如生产者——消费者问题,他们产生和消耗资源的速度大体接近,加一个buffer可以抵消掉资源刚产生/消耗时的突然变化。
2、Cache(缓存)则是系统两端处理速度不匹配时的一种折衷策略。因为CPU和memory之间的速度差异越来越大,所以人们充分利用数据的局部性(locality)特征,通过使用存储系统分级(memory hierarchy)的策略来减小这种差异带来的影响。

8 CDN

内容分发网络。
提前对静态内容进行预缓存,避免大量请求回源,降低延迟,提升可用性。
流程:
1.用户向本地申请
2.本地dns向网站授权dns服务器请求,www.xx.com的域名ip。
3.权威dns返回ip地址的cname。
4.请求cname的域名ip经过迭代查询,会到CDN提供商的DNS服务器查询到cname的ip。
5.cdn提供商的dns是全局智能dns,会根据本地的dns地址返回最近cname服务器边缘节点ip。
6.本地dns将cname对应的ip返回给客户端。
7.向广州最近节点访问资源。
8.边缘节点返回客户端请求的内容。
9。如果没有去源站查询。
10.返回源站内容给cdn节点并返回给用户。

9 发现台linux主机无法上网,将做些什么检查和排错

1、ifconfig查看主机是否有地址
2、ping的地址是否有拼写问题
3、网线是否插好,网络是否畅通
4、service network restart重连网络
5、是否启用了网络防火墙,禁止任何用户访问

10 符号链接和硬链接的区别

答:符号(或软)链接
1、一个符号链接指向另一个文件
2、一个符号链接的内容是它引用文件的名称
3、可以对目录进行
4、可以跨分区
5、指向的是另一个文件的路径
6、其大小为指向的路径字符串的长度
7、不增加或减少目标文件inode的引用计数
硬链接
1、创建硬链接会增加额外的记录项以引用文件
2、对应于同一文件系统上一个物理文件
3、每个目录引用相同的inode号
4、创建时链接数递增
5、删除文件时:
rm命令递减计数的链接
文件要存在,至少有一个链接数
当链接数为零时,该文件被删除

11 lvm扩展lvs

在卷组VG0中的⼀个逻辑卷lv0,ext4⽂件系统。现发现lv0空间不⾜,需要添加磁盘/dev/sdd为
lv0扩容100G,写出相关的操作命令?(⾄少3步)
1 echo -e "n\np\n\n\n+100G\nt\n\n8e\nw\n" |fdisk /dev/sdd
2 pvcreate /dev/sdd #将新硬盘格式化成PV
3 vgextend VG0 /dev/sdd #将PV加入已有的VG卷组
4 lvextend -L +100G /dev/VG0/lv0 #对逻辑卷进行100G扩容
5 resize2fs /dev/VG0/lv0 #必须resize2fs,更新文件系统,否则空间无法识别到

12 简述Raid0,1,5、6,10,01的区别

RAID0:连续地分割数据并并行地读/写于多个磁盘上。因此具有很高的数据传输率,但没有数据冗余,并没有提供数据可靠性,如果一个磁盘失效,将影响整个数据。因此RAID0不可应用于需要数据高可用性的关键应用。最少由2块磁盘组成,每块都能存储数据。
RAID1:通过数据镜像实现数据冗余,在两对分离的磁盘上产生互为备份的数据。可以提高读的性能,是磁盘阵列中费用最高的,但提供了最好的数据可用性。当一个磁盘失效,系统可以自动地交换到镜像磁盘上。最少由2块磁盘组成,只有一半的磁盘能存储数据。
RAID5:所有磁盘轮流充当校验盘,有容错能力,最多准许1块磁盘损坏。最少由3块磁盘组成,充当校验盘的不分磁盘不能存储数据,实际容量是n-1/n。推荐网站
RAID6:raid6是再raid5的基础上为了加强数据保护而设计的。可允许损坏2块硬盘。4块
RAID10:先两两组成RAID1,再组合成RAID0。每组镜像最多损坏一个磁盘,有容错能力。最少由4块磁盘组成,只有一半的磁盘能存储数据。
RAID01:损坏一块磁盘之后,所在的RAID 0组即认为损坏,RAID 01 实际上已经退化为一个RAID 0的结构,上面那组RAID 0随便坏一块,整个RAID就崩溃了。
常见raid类型 raid10-4块600G 15K,15-20个虚拟机,推荐SSD 512G

13 centos启动流程

第一步:POST加电自检
第二步:Boot Sequence(选择启动设备以加载MBR)
第三步:加载bootloader(MBR)
第四步:Kernel自身初始化
第五步:init管理用户空间服务进程根据自身设置的运行级别来开机    #对于CentOS 7来说,初始化程序init是systemd,其配置文件为:/usr/lib/system/systemd/*, /etc/systemd/system/*;
1)开机BIOS自检,加载硬盘。
2)读取MBR,进行MBR引导。
3)grub引导菜单(Boot Loader)。
4)加载内核kernel。
5)启动init进程,依据inittab文件设定运行级别
6)init进程,执行rc.sysinit文件。
7)启动内核模块,执行不同级别的脚本程序。
8)执行/etc/rc.d/rc.local
9)启动mingetty,进入系统登陆界面。

14 Redis_RDB快照实现方式

RDB 实现的具体过程 Redis 从主进程先 fork 出一个子进程,使用写时复制机制,子进程将内存的数
据保存为一个临时文件,比如 dump.rdb.temp,当数据保存完成之后再将上一次保存的 RDB 文件替
换掉,然后关闭子进程,这样可以保存每一次做 RDB 快照的时候保存的数据都是完整的,因为直接
替换 RDB 文件的时候可能会出现突然断电等问题而导致 RDB 文件还没有保存完整就突然关机停止
保存而导致数据丢失的情况,可以手动将每次生成的 RDB 文件进程备份,这样可以最大化保存历史
数据。bgsave

优点:
-RDB 快照保存了某个时间点的数据,可以通过脚本执行 bgsave(非阻塞)或者 save(阻塞)命令自定义
时间点北备份,可以保留多个备份,当出现问题可以恢复到不同时间点的版本。
-可以最大化 o 的性能,因为父进程在保存 RDB 文件的时候唯一要做的是 fork 出一个子进程,然后
的-操作都会有这个子进程操作,父进程无需任何的 IO 操作
RDB 在大量数据比如几个 G 的数据,恢复的速度比 AOF 的快
缺点:
-不能时时的保存数据,会丢失自上一次执行 RDB 备份到当前的内存数据
-数据量非常大的时候,从父进程 fork 的时候需要一点时间,可能是毫秒或者秒或者分钟,取决于磁
盘 IO 性能。

15 Redis_AOF日志文件方式

AOF:按照操作顺序依次将操作添加到指定的日志文件当中,特点是数据安全性相对较高,缺点是即
使有些操作是重复的也会全部记录。
AOF 和 RDB 一样使用了写时复制机制,AOF 默认为每秒钟 fsync 一次,即将执行的命令保存到 AOF
文件当中,这样即使 redis 服务器发生故障的话顶多也就丢失 1 秒钟之内的数据,也可以设置不同
的 fsync 策略,或者设置每次执行命令的时候执行 fsync,fsync 会在后台执行线程,所以主线程可以
继续处理用户的正常请求而不受到写入 AOF 文件的 IO 影响

AOF 的文件大小要大于 RDB 格式的文件
根据所使用的 fsync 策略(fsync 是同步内存中 redis 所有已经修改的文件到存储设备),默认是
appendfsync everysec 即每秒执行一次 fsync

16 Redis主从复制过程

1)从服务器连接主服务器,发送 SYNC 命令;
2)主服务器接收到 SYNC 命名后,开始执行 BGSAVE 命令生成 RDB 快照文件并使用缓冲区记录此后执行的所有写命令;
3)主服务器 BGSAVE 执行完后,向所有从服务器发送快照文件,并在发送期间继续记录被执行的写命令;
4)从服务器收到快照文件后丢弃所有旧数据,载入收到的快照;
5)主服务器快照发送完毕后开始向从服务器发送缓冲区中的写命令;
6)从服务器完成对快照的载入,开始接收命令请求,并执行来自主服务器缓冲区的写命令;
7)后期同步会先发送自己 slave_repl_offset 位置,只同步新增加的数据,不再全量同步。

17 zabbix工作模式

这是对于zabbix agent来说的工作模式

被动模式就是由zabbix server向zabbix agent发出指令获取数据,即zabbix agent被动的去获取
数据并返回给zabbix server,zabbix server周期性的向agent 索取数据,这种模式的最大问题就
是会加大zabbix server的工作量,在数百台服务器的环境下zabbix server不能及时获取到最新
数据,但这也是默认的工作方式。

主动模式是有zabbix agent主动采集数据并返回给zabbix server,不再需要zabbix serve进行干
预,因此主动模式在一定程度上可减轻zabbix server的压力。

18 Redis比memcached 优势

Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
Redis支持数据的备份,即master-slave模式的数据备份。
Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。

19 inode 和 block

Inode耗尽导致故障解决
cd /tmp
sudo find /tmp -type f -exec rm {} \; #删除无用的临时文件,释放inode。
sudo find /home -type f -size 0 -exec rm {} \; #遍历寻找0字节的文件,并删除。

20 osi 七层模型

1、比如我想把一张本人素颜照照片通过网络传给朋友,那我的这个图片,就是应用层的一个程序。
2、表示层则是我这副素颜照的编码方式,例如是JPG,GIF等。
3、会话层则是控制该图片发布的过程,包括http进程的建立、管理和终止。
4、传输层则是控制怎么将图片传出去,如TCP协议。值得一提的是QQ是UDP协议。
5、网络层则是考虑怎样将图片分成不同的数据,通过不同的路线送到对方手里。
6、数据链路层则是考虑怎么从当前的一个点送到直接相连得点去。
7、物理层则是考虑怎么把数据变成电或者光信号传输。
第一层:物理层 网线     单位:帧
第二层:数据链路层 802.2、802.3ATM、HDLC、FRAME RELAY   MAC 单位:帧 mac
第三层:网络层 IP、IPX、APPLETALK、ICMP   单位:数据包IPv4、IPv6 路由选址和报文转发
第四层:传输层 TCP、UDP、SPX   | 80 8080 3306
第五层:会话层 RPC、SQL、NFS 、X WINDOWS、ASP
第六层:表示层 ASCLL、PICT、TIFF、JPEG、 MIDI、MPEG HTTP
第七层:应用层 HTTP,FTP,SNMP,NFS等

21 三次握手四次挥手

在这里插入图片描述

第一次握手:建立连接时,客户端发送syn包(syn=x)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=x+1),同时自己也发送一个SYN包(syn=y),即SYN+ACK包,此时服务器进入SYN_RECV状态;
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=y+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。

在这里插入图片描述

1)客户端进程发出连接释放报文,并且停止发送数据。释放数据报文首部,FIN=1,其序列号为seq=u(等于前面已经传送过来的数据的最后一个字节的序号加1),此时,客户端进入FIN-WAIT-1(终止等待1)状态。 TCP规定,FIN报文段即使不携带数据,也要消耗一个序号。
2)服务器收到连接释放报文,发出确认报文,ACK=1,ack=u+1,并且带上自己的序列号seq=v,此时,服务端就进入了CLOSE-WAIT(关闭等待)状态。TCP服务器通知高层的应用进程,客户端向服务器的方向就释放了,这时候处于半关闭状态,即客户端已经没有数据要发送了,但是服务器若发送数据,客户端依然要接受。这个状态还要持续一段时间,也就是整个CLOSE-WAIT状态持续的时间。
3)客户端收到服务器的确认请求后,此时,客户端就进入FIN-WAIT-2(终止等待2)状态,等待服务器发送连接释放报文(在这之前还需要接受服务器发送的最后的数据)。
4)服务器将最后的数据发送完毕后,就向客户端发送连接释放报文,FIN=1,ack=u+1,由于在半关闭状态,服务器很可能又发送了一些数据,假定此时的序列号为seq=w,此时,服务器就进入了LAST-ACK(最后确认)状态,等待客户端的确认。
5)客户端收到服务器的连接释放报文后,必须发出确认,ACK=1,ack=w+1,而自己的序列号是seq=u+1,此时,客户端就进入了TIME-WAIT(时间等待)状态。注意此时TCP连接还没有释放,必须经过2∗∗MSL(最长报文段寿命)的时间后,当客户端撤销相应的TCB后,才进入CLOSED状态。
6)服务器只要收到了客户端发出的确认,立即进入CLOSED状态。同样,撤销TCB后,就结束了这次的TCP连接。可以看到,服务器结束TCP连接的时间要比客户端早一些。

22 MySQL主从复制原理

主库开启server-id和binlog日志
从库IO线程接收binlog  events,并存放到本地relay-log中,
从库SQL线程应用relay-log,并且把应用过的记录到relay-log.info中,sql运行relay-log日志完成同步。

23 MySql同步和半同步区别

 MySQL主从复制,默认是异步复制。异步复制,即master执行完事物并提交后,二进制日志记录完这些更新操作后,就又开始下一批事物。并不关心这些更新是否被复制到从上。
 而半同步复制则相反,它需要等待至少一台mysql的从服务器接收到master的二进制日志后,才开始执行下一批事物。在这个等待过程中,如果主备网络故障或者备库挂了,主库在事务提交后等待10秒(rpl_semi_sync_master_timeout的默认值)后,就会继续。这时,主库就会变回原来的异步状态。

24 nfs 原理

1)首先服务器端启动RPC服务,并开启111端口
2)服务器端启动NFS服务,并向RPC注册端口信息
3)客户端启动RPC(portmap服务),向服务端的RPC(portmap)服务请求服务端的NFS端口
4)服务端的RPC(portmap)服务反馈NFS端口信息给客户端。
5)客户端通过获取的NFS端口来建立和服务端的NFS连接并进行数据的传输。

25 mysql如何减少主从复制延迟

如果延迟比较大,就先确认以下几个因素:
1. 从库硬件比主库差,导致复制延迟
2. 主从复制单线程,如果主库写并发太大,来不及传送到从库,就会导致延迟。更高版本的mysql可以支持多线程复制
3. 慢SQL语句过多
4. 网络延迟
5. master负载主库读写压力大,导致复制延迟,架构的前端要加buffer及缓存层
6. slave负载

一般的做法是,使用多台slave来分摊读请求,再从这些slave中取一台专用的服务器,只作为备份用,不进行其他任何操作.
另外, 2个可以减少延迟的参数:
–slave-net-timeout=seconds 单位为秒 默认设置为 3600秒
#参数含义:当slave从主数据库读取log数据失败后,等待多久重新建立连接并获取数据
–master-connect-retry=seconds 单位为秒 默认设置为 60秒
#参数含义:当重新建立主从连接时,如果连接建立失败,间隔多久后重试。
通常配置以上2个参数可以减少网络问题导致的主从数据同步延迟
MySQL数据库主从同步延迟解决方案

26 TCP 和 UDP 的区别

TCP 是面向连接的,UDP 是面向无连接的
UDP 程序结构较简单
TCP 是面向字节流的,UDP 是基于数据报的
TCP 保证数据正确性,UDP 可能丢包
TCP 保证数据顺序,UDP 不保证

27 http都有哪些状态码,及含义

403 无权限
404 页面丢失
405 资源被禁止
200 服务器成功处理了请求
500 服务器内部出现了错误
301 永久移动
302 临时移动
502 上游服务器和网关/代理不同意的协议交换数据,服务器超时
503 后端服务器都不可达,全down

28 线程和进程区别

根本区别:进程是操作系统资源分配的基本单位,而线程是任务调度和执行的基本单位
在操作系统中能同时运行多个进程(程序);而在同一个进程(程序)中有多个线程同时执行
系统在运行的时候会为每个进程分配不同的内存空间;而对线程而言,除了CPU外,系统不会为线程分配内存

29 访问一个网站的大致流程

1.客户端用户从浏览器输入www.baidu.com网站网址后回车,系统会查询本地hosts文件及DNS缓存信息,查找是否存在网址对应的IP解析记录。
2.交给客户端本地设置的DNS服务器地址解析(此DNS为LDNS,即Local DNS),如果LDNS服务器的本地缓存有对应的解析记录,就会直接返回IP地址;如果没有,LDNS会负责继续请求其它的DNS服务器;
3.LDNS会从DNS系统的“.”根开始请求www.baidu.com域名的解析,迭代查询。
4.baidu.com域名对应的授权DNS服务器会把www.baidu.com对应的最终IP解析记录发给LDNS;
5.LDNS把收到来自授权DNS服务器关于www.baidu.com对应的IP解析记录发给客户端浏览器,并且在LDNS本地把域名和IP的对应解析缓存起来,以便下一次更快的返回相同的解析请求的记录;
6.客户端浏览器获取到了www.baidu.com的对应IP地址,接下来浏览器会请求获得的IP地址对应的Web服务器,Web服务器接收到客户的请求并响应处理,将客户请求的内容返回给客户端浏览器;

30 PV、UV、VV、IP的区别

PV即Page View,网站浏览量
UV即Unique Visitor。独立访客数
VV即Visit View,访客的访问次数
IP即Internet Protocol,独立IP数

31 k8s的组件

APIServer
APIServer组件负责响应用户的管理请求、进行指挥协调工作
scheduler
scheduler组件是将待调度的pod按照一定的调度算法绑定到合适的工作节点上
controller manager
是一组控制器的合集,负责控制控制管理对应的资源,如副本(replication)和工作节点(node)等。
 etcd
 etcd 负责保存 Kubernetes Cluster 的配置信息和各种资源的状态信息。当数据发生变化时,etcd 会快速地通知 Kubernetes 相关组件。
 kubelet
管理维护pod运行的agent
kube-proxy
将service的流量转发到对应endpoint
flannel网络
维持各个节点上pod之间的通信。

32 常用端口号

21 ftp,22 ssh,23 telnet,25 smtp,110 pop3, 143imap,873 rsync, 3306 mysql,443 https

33 nginx和apache区别

Nginx轻量级,抗并发,
nginx 处理请求是异步非阻塞的,而apache 则是阻塞型的,在高并发下nginx 能保持低资源低消耗高性能 
Apache在处理动态有优势
Nginx的配置比Apache更为简洁;
Nginx的静态处理性能比Apache优秀得多;
Apache对PHP支持比较简单,而Nginx需要配合其他后端使用;
Apache较为成熟,组件比Nginx要多。
Nginx对一些现代协议的支持较为优秀

34 iptables允许主机访问80端口

 iptables -A INPUT -p tcp --dport 22 -j ACCEPT
 iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
 iptables -A INPUT -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
 iptables -A OUTPUT -p tcp --sport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
 
 基于iptables 将访问本机192.168.7.103:80的请求转发到192.168.7.102:80
 iptables -t nat -A PREROUTING -d 192.168.7.103 -p tcp --dport 80 -j DNAT --to-destination 192.168.7.102:80
 
 8080转到80端口
 iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080

35 如何理解虚拟化

虚拟化,是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机。在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。
虚拟化使用软件的方法重新定义划分IT资源,可以实现IT资源的动态分配、灵活调度、跨域共享,提高IT资源利用率,使IT资源能够真正成为社会基础设施,服务于各行各业中灵活多变的应用需求。

36 nginx 优化

指定cpu数目
使用epoll 的I/O 模型
worker_connections 65535; 允许最大连接数
设置keepalive 超时时间。
客户端请求头部的缓冲区大小client_header_buffer_size 4k;
连接数优化,优化内核参数/etc/sysctl.conf
FastCGI 开启缓存
允许用户文件的上传大小。

37 自定义监控项

1.用命令测试获取监控值 
2.改成shell脚本测试获取监控值
3.添加到zabix agent配置文件并重启
4.到zabbix server使用zabbix_get命令测试监控项能不能获取到监控值,在
5.在web界面添加监控项或者制作模板等

38 dockerfile打镜像过程

FROM centos
ENV
#WORKDIR
#volume
#USER nginx
RUN 执行shell命令
COPY/ADD 添加本地文件或者目录,或者压缩包
EXPOSE 80 443
CMD ["nginx"]

39 Apache三种工作模式

prefork、worker 和 event 

prefork:进程模型,两级结构,主进程master负责生成子进程,每个子进
程负责响应一个请求
worker:线程模型,三级结构,主进程master负责生成子进程,每个子进程
负责生成多个线程,每个线程响应一个请求
event:线程模型,三级结构,主进程master负责生成子进程,每个子进程响
应多个请求

40 Nginx默认几种调度算法

https://www.cnblogs.com/zhang-shijie/p/5469073.html
round-robin:轮训调度,默认
ip_hash:会话绑定
least_conn:最少会话链接
url_hash

41 k8s中service的理解

service是k8s中的一个重要概念,主要是提供负载均衡和服务自动发现。

42 php相关

Php使用什么方法安装的,版本是什么,怎么优化性能
编译还是yum,设置进程最大值最小值,设置为动态分配进程

43 监控

监控主要监控什么指标
CPU、内存、网络、磁盘利用率,WEB,API, 存储满了,40T
如何监控Redis cluster是否正常
查看info状态

44 数据库监控最大连接数

查看每一个用户的数据库连接数:
select s.USERNAME,count(p.PID) from  v$session s ,v$process p where s.PADDR = p.ADDR group by s.USERNAME;
查看数据库允许的最大连接数
select value from v$parameter t where t.NAME='processes';
查看当前连接数
select count(*) from v$process;
修改数据库最大连接数
alter system set processes = 300 scope = spfile;
(需要重启数据库才能实现连接数的修改)

45 Cookie和session

用来做什么,如何生成,客户端还是服务端生成
cookie 客户端浏览器保存,是服务端返回给客户端的字符串,比如可以用于保存登录信息
session:服务器保存,用于在多个服务器识别用户身份

46 nginx和haproxy区别

Nginx工作在网络的7层
Nginx对网络稳定性的依赖较小
Nginx安装和配置比较简单,测试起来也很方便
Nginx也同样能承受很高负载且稳定
Nginx可以检测到服务器内部的故障,比如根据服务器处理网页返回的状态码、超时等等,并且会把返回错误的请求重新提交到另一个节点
Nginx对请求的异步处理可以帮助节点服务器减轻负载

47 dhcp原理

http://www.elecfans.com/baike/wangluo/luyouqi/20180306643883.html

48 Nginx的dockerfile怎么写

FROM
RUN
ADD
EXPOSE 80 443
CMD [" tail -f /etc/hosts"]

49 iptables端口转发

启用网卡转发功能
#echo 1 > /proc/sys/net/ipv4/ip_forward

举例:从192.168.0.132:21521(新端口)访问192.168.0.211:1521端口
a.同一端口转发
(192.168.0.132上开通1521端口访问 iptables -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 1521 -j ACCEPT)
iptables -t nat -I PREROUTING -p tcp --dport 1521 -j DNAT --to 192.168.0.211
iptables -t nat -I POSTROUTING -p tcp --dport 1521 -j MASQUERADE

50 4层与7层的区别

所谓四层就是基于IP+端口的负载均衡;七层就是基于URL等应用层信息的负载均衡;
1.智能性
七层负载均衡由于具备OIS七层的所有功能,所以在处理用户需求上能更加灵活,从理论上讲,七层模型能对用户的所有跟服务端的请求进行修改。
例如对文件header添加信息,根据不同的文件类型进行分类转发。
四层模型仅支持基于网络层的需求转发,不能修改用户请求的内容。
2.安全性
七层负载均衡由于具有OSI模型的全部功能,能更容易抵御来自网络的攻击;
四层模型从原理上讲,会直接将用户的请求转发给后端节点,无法直接抵御网络攻击。
3.复杂度
四层模型一般比较简单的架构,容易管理,容易定位问题;
七层模型架构比较复杂,通常也需要考虑结合四层模型的混用情况,出现问题定位比较复杂。
4.效率比
四层模型基于更底层的设置,通常效率更高,但应用范围有限;
七层模型需要更多的资源损耗,在理论上讲比四层模型有更强的功能,现在的实现更多是基于http应用。
  • 4
    点赞
  • 67
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值