文章目录
1、四层负载和七层负载区别是什么?
1、四层负载均衡工作在OSI模型中的四层,即传输层。四层负载均衡只能根据报文中目标地址和源地址对请求进行转发,而无法修改或判断所请求资源的具体类型,然后经过负载均衡内部的调度算法转发至要处理请求的服务器。四层负载均衡单纯的提供了终端到终端的可靠连接,并将请求转发至后端,连接至始至终都是同一个。LVS就是很典型的四层负载均衡。
2、七层负载均衡工作在OSI模型的第七层应用层,所以七层负载均衡可以基于请求的应用层信息进行负载均衡,例如根据请求的资源类型分配到后端服务器,而不再是根据IP和端口选择。七层负载均衡的功能更丰富更灵活,也能使整个网络更智能。如上图所示,在七层负载均衡两端(面向用户端和服务器端)的连接都是独立的。
3、总结:四层负载均衡就是基于IP+端口实现的。七层负载均衡就是通过应用层资源实现的。
2、什么是并发、并行、阻塞、异步、同步?
并发:CPU在执行多个任务时的方式,并发表示同一段时间里面有多个进程在同一CPU执行,在极短的时间互相切换使人不会发觉。
并行:并行只会出现在多个CPU的情况下,表示同一时刻之内有多个进程在执行。
同步:关注的是请求和响应的通讯机制,描述的是被调用方。当发出请求后,该请求是否等待结果后再返回,同步就是没有得到结果前不会返回,返回即得到请求结果。
异步:异步就是得到发出请求后就直接返回,也可能不会立即得到结果,服务得到结果后再通过通知或者回调函数等方法通知调用者。
阻塞:关注的是请求在等待结果时的状态,描述的是调用方。 阻塞就是在等待结果的时候,当前线程会被挂起,在得到结果之后返回。
非阻塞:非阻塞则是没有得到结果之前也不会阻塞当前线程。
3、OSI七层模型?
物理层:主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。它的主要作用是传输比特流(就是由1、0转化为电流强弱来进行传输,到达目的地后在转化为1、0,也就是我们常说的数模转换与模数转换),这一层的数据叫做比特。
数据链路层:定义了如何让格式化数据以进行传输,以及如何让控制对物理介质的访问,这一层通常还提供错误检测和纠正,以确保数据的可靠传输。
网络层:在位于不同地理位置的网络中的两个主机系统之间提供连接和路径选择,Internet的发展使得从世界各站点访问信息的用户数大大增加,而网络层正是管理这种连接的层。
传输层:定义了一些传输数据的协议和端口号(WWW端口80等),如:TCP(传输控制协议,传输效率低,可靠性强,用于传输可靠性要求高,数据量大的数据),UDP(用户数据报协议,与TCP特性恰恰相反,用于传输可靠性要求不高,数据量小的数据,如QQ聊天数据就是通过这种方式传输的), 主要是将从下层接收的数据进行分段和传输,到达目的地址后再进行重组,常常把这一层数据叫做段。
会话层:通过传输层(端口号:传输端口与接收端口)建立数据传输的通路,主要在你的系统之间发起会话或者接受会话请求(设备之间需要互相认识可以是IP也可以是MAC或者是主机名)。
表示层:可确保一个系统的应用层所发送的信息可以被另一个系统的应用层读取。例如,PC程序与另一台计算机进行通信,其中一台计算机使用扩展二一十进制交换码(EBCDIC),而另一台则使用美国信息交换标准码(ASCII)来表示相同的字符。如有必要,表示层会通过使用一种通格式来实现多种数据格式之间的转换。
应用层: 是最靠近用户的OSI层,这一层为用户的应用程序(例如电子邮件、文件传输和终端仿真)提供网络服务。
4、TCP/IP 四层?
应用层:负责向用户提供应用程序,比如HTTP、FTP、Telnet、DNS、SMTP等。
传输层:负责对报文进行分组和重组,并以TCP或UDP协议格式封装报文。
网络层:负责路由以及把分组报文发送给目标网络或主机。
链路层:负责封装和解封装IP报文,发送和接受ARP/RARP报文等 下面的是两者之间的对比:
5、TOP参数含义?
第一行分别显示:
名称 | 解释 |
---|---|
14:20:03 | 系统当前时间 |
up 764 days, 15:37 | 系统运行时间 |
1 user | 当前用户登陆数 |
load average | 系统负载,三个数值,分别是系统最近1分钟,5分钟,15分钟的平均负载。一般对于单个处理器来说,负载在0 — 1.00之间是正常的,超过1.00就要引起注意了。在多核处理器中,你的系统均值不应该高于处理器核心的总数。 |
第二行 分别显示:
名称 | 解释 |
---|---|
89 total | 进程总数 |
2 running | 正在运行的进程数 |
87 sleeping | 睡眠的进程数 |
0 stopped | 停止的进程数 |
0 zombie | 僵尸进程数 |
第三行 分别显示:
名称 | 解释 |
---|---|
1.3 us | 用户空间占用CPU百分比 |
0.7 sy | 内核空间占用CPU百分比 |
0.0 ni | 用户进程空间内改变过优先级的进程占用CPU百分比 |
98.0 id | 空闲CPU百分比 |
0.0 wa | 等待输入输出(I/O)的CPU时间百分比 |
0.0 hi | 指的是cpu处理硬件中断的时间 |
0.0 si | 指的是cpu处理软中断的时间 |
0.0 st | 用于有虚拟cpu的情况,用来指示被虚拟机偷掉的cpu时间 |
通常id%值可以反映一个系统cpu的闲忙程度
第四行 分别显示:
名称 | 解释 |
---|---|
1882072 total | 物理内存总量 |
75736 free | 空闲内存总量 |
601776 used | 使用的物理内存总量 |
1204560 buff/cache | 用作内核缓存的内存量 |
第五行 分别显示:
名称 | 解释 |
---|---|
0 total | 交换区总量 |
0 free | 空闲交换区总量 |
0 used | 使用的交换区总量 |
1092080 avail Mem | 交换区可用内存总量 |
buffers和cached的区别:buffers指的是块设备的读写缓冲区,cached指的是文件系统本身的页面缓存。它们都是linux操作系统底层的机制,目的就是为了加速对磁盘的访问。
第六行 分别显示:
名称 | 解释 |
---|---|
PID | 进程ID号 |
USER | 运行用户 |
PR | 优先级 |
NI | 任务nice值 |
VIRT | 虚拟内存使用量,VIRT=SWAP+RES |
RES | 物理内存用量 |
SHR | 共享内存用量 |
S | 进程状态 |
%CPU | CPU占用比 |
%MEM | 物理内存占用比 |
TIME+ | 累计CPU占用时间 |
COMMAND | 命令名/命令行 |
下面简单介绍top命令的使用方法:
top [-] [d] [p] [q] [c] [C] [S] [s] [n]
参数说明:
命令 | 参数说明 |
---|---|
d | 指定每两次屏幕信息刷新之间的时间间隔。当然用户可以使用s交互命令来改变之。 |
p | 通过指定监控进程ID来仅仅监控某个进程的状态。 |
q | 该选项将使top没有任何延迟的进行刷新。如果调用程序有超级用户权限,那么top将以尽可能高的优先级运行。 |
S | 指定累计模式。 |
s | 使top命令在安全模式中运行。这将去除交互命令所带来的潜在危险。 |
i | 使top不显示任何闲置或者僵死进程。 |
c | 显示整个命令行而不只是显示命令名。 |
top命令执行过程中可以使用的一些交互命令
从使用角度来看,熟练的掌握这些命令比掌握选项还重要一些。
这些命令都是单字母的,如果在命令行选项中使用了s选项,则可能其中一些命令会被屏蔽掉。
交互命令 | 参数说明 |
---|---|
Ctrl+L | 擦除并且重写屏幕。 |
h或者? | 显示帮助画面,给出一些简短的命令总结说明。 |
k | 终止一个进程。系统将提示用户输入需要终止的进程PID,以及需要发送给该进程什么样的信号。一般的终止进程可以使用15信号;如果不能正常结束那就使用信号9强制结束该进程。默认值是信号15。在安全模式中此命令被屏蔽。 |
i | 忽略闲置和僵死进程。这是一个开关式命令。 |
q | 退出程序。 |
r | 重新安排一个进程的优先级别。系统提示用户输入需要改变的进程PID以及需要设置的进程优先级值。输入一个正值将使优先级降低,反之则可以使该进程拥有更高的优先权。默认值是10。 |
s | 改变两次刷新之间的延迟时间。系统将提示用户输入新的时间,单位为s。如果有小数,就换算成m s。输入0值则系统将不断刷新,默认值是5 s。需要注意的是如果设置太小的时间,很可能会引起不断刷新,从而根本来不及看清显示的情况,而且系统负载也会大大增加。 |
f或者F | 从当前显示中添加或者删除项目。 |
o或者O | 改变显示项目的顺序。 |
l | 切换显示平均负载和启动时间信息。 |
m | 切换显示内存信息。 |
t | 切换显示进程和CPU状态信息。 |
c | 切换显示命令名称和完整命令行。 |
M | 根据驻留内存大小进行排序。 |
P | 根据CPU使用百分比大小进行排序。 |
T | 根据时间/累计时间进行排序。 |
W | 将当前设置写入~/.toprc文件中。这是写top配置文件的推荐方法。 |
Shift+M | 可按内存占用情况进行排序。 |
6、常见的http状态码有哪些?
状态码 | 解释 |
---|---|
200 | 一般返回‘OK‘:客户端请求成功。 |
201 | 一般返回‘Created’:表示请求已经被成功处理,并且创建了新的资源。新的资源在响应返回之前已经被创建。 |
301 | 永久重定向,表示资源已经永久移动到另一个位置。 |
302 | 临时重定向,表示资源临时移动到了另一个位置。 |
304 | 一般返回‘Not Modified’:表示客户端可以使用以前请求的结果,不需要再次请求。此特性可以节省服务器流量,还可以加速客户端访问。 |
400 | 一般返回‘Bad Request’:表示由于语法无效,服务器无法理解该请求。客户端不应该在未经修改的情况下重复此请求。 |
401 | 一般返回‘Unauthorized’:请求未经授权,这个状态代码必须和WWW-Authenticate报头字段一起使用,一般属于客户端调用问题,但也可能是服务器端设置有问题。 |
403 | 一般返回‘Forbidden‘:指的是服务器端有能力处理该请求,但是拒绝授权访问。 |
404 | 一般返回‘Not Found’:请求资源不存在,比如资源被删除了,或用户输入了错误的URL。 |
500 | 一般返回‘Internal Server Error’:服务器发生不可预期的错误,一般是代码的BUG所导致的。 |
502 | 一般返回‘Bad Gateway’:表示作为网关或代理角色的服务器,从上有服务器(如tomcat、php-fpm)中接收到的响应是无效的。例如Nginx+uWSGI’,当uWSGI服务没有启动成功或异常退出,而Nginx服务是正常的情况下,就会看到502 Bad Gateway错误。 |
503 | 一般返回‘Server Unavailable’:服务器当前不能处理客户端的请求,一段时间后可能恢复正常 |
7、linux的load有了解过吗?如何查看load?
load average是系统负载是系统CPU繁忙程度的度量,即有多少进程在等待被CPU调用(进程等待队列的长度)
Linux系统中的Load对当前CPU工作量的度量,简单的来说是进程队列的长度。
Load Average就是一段时间(1分钟、5分钟、15分钟)内系统的平均Load
如何查看Load Average?
top、w、uptime,这些工具的平均负载是从/proc/loadvg文件读取的,也可以直接使用cat命令查看
[root@abcdocker ~]# cat /proc/loadavg
0.02 0.12 0.16 1/214 12861