汇总2—运维面试题重点总结80题
目录
1.OSI参考模型七层网络协议?
2.七层网络协议各层分别对应什么设备?
3.七层网络协议主要各层次包含的协议?
4.常见协议的解释?
a)HTTP协议介绍:
b)HTTP协议特点:
c)HTTP协议之url的组成部分:
d)HTTP协议之url的常见请求方式:
5.各层的PDU数据单元?
6.ping使用什么协议?
7.tcp协议和udp协议区别?
8.TCP/IP协议分为哪四层,具体作用是什么?
9.CDN技术原理?
10.阿里云上cdn的配置?
11.nginx做反向代理处理http请求的大致流程?
12.TCP协议和IP协议之间的关系?
13.nginx只用IP不用域名能反向代理吗?
14.Tcp连接状态详解,(tcp重要的监控指标参考和判断监控状态是否正常)
15.TCP状态参数中系统连接数(并发数)的统计:(带名称的统计和不带名称仅统计数量)两种方法命令:
方法1:netstat命令
方法2:ss命令
16.web服务并发连接数查看统计(nginx,apahce,tomcat等,修改端口即可)? (带名称的统计和不带名称仅统计数量)
方法1:netstat命令
方法2:ss命令
17.阿里云rds仅仅有内网时候,如何访问?
18.阿里云服务器之间使用内网连接的原因说明?服务器之间用内网连接,但客户端通过Navicat连接时候,可以用外网?也可连接vpn后使用内网连接mysql.
19.新给你一台服务器,你会怎么做?
20.Zabbix监控都监控哪些?监控什么业务数据?怎么监控mysql的,redis?日志?
21.Snmp的两种公司模式是什么?有什么特点?
22,什么是位置变量?shell的变量类型有哪些种?
23.Vi编辑器的三种模式?
24.Linux文件系统中每个文件用什么来标识?
25.Rpm有5种基本操作模式?
26.Icmp协议封装在什么协议中传递到目的主机?
27.mysqldump备份数据时候数据库太大卡死怎么解决?mysqldump时,卡在那里不动了,怎么办?
28.Docker的4种网络模式?
29.Lvs,haproxy,nginx区别?
30.磁盘报错“No space left on device”,但是 df -h 查看磁盘空间没满,请问为什么?
31.Linux系统中病毒怎么解决?
1)最简单有效的方法就是重装系统
2)要查的话就是找到病毒文件然后删除
3)由于即使删除病毒文件不排除有潜伏病毒,所以最好是把机器备份数据之后重装一下
32.查看http的并发请求数与其TCP连接状态
33.运维安全需要注意哪些事项?
34.服务器遭受攻击后的处理过程?
1)处理服务器遭受攻击的一般思路
2)检查并锁定可疑用户
3)查看系统日志
4)检查并关闭系统可疑进程
5)检查文件系统的完好性
6)重新安装系统恢复数据
35.已知 apache 服务的访问日志按天记录在服务器本地目录/app/logs 下,由于磁盘空间紧张现在要求只能保留最近 7 天的访问日志!请问如何解决? 请给出解决办法或配置或处理命令
36.每天晚上 12 点,打包站点目录/var/www/html 备份到/data 目录下(最好每次备份按时间生成不同的备份包)
37.一主多从,主库宕机,如何切换到从库,其他的从库如何处理?(验证没问题后修改的最终答案)
38.磁盘空间满了,删除了一部分 nginx access 日志,但是,发现磁盘空间还是满的,请问为什么?
39.写一条192.168.10.0网段从网关192.168.9.1出去的路由?
40.写一条放行80端口的防火墙规则?
41.如何将本地80 端口的请求转发到8080 端口,当前主机IP 为192.168.2.1
42.使用tcpdump监听主机为192.168.1.1,tcp端口为80的数据,同时将输出结果保存输出到tcpdump.log
43.实时抓取并显示当前系统中tcp 80端口的网络数据信息,请写出完整操作命令
44.用tcpdump嗅探80端口的访问看看谁最高
45.请举一个生产中实际的例子网站打开慢由于数据库慢导致的。
数据库负载高,有慢查询,做联合索引案例
46. 办公室同事反馈网站打不开,请简述一下排查故障的思路或解决方法?
47.服务器开不了机怎么解决一步步的排查
A、造成服务器故障的原因可能有以下几点:
48.网站做了负载均衡,发现有些用户访问的时候经常需要重新登录,是什么原因,怎么处理?
49.apache使用的3种工作模式是什么?
50.linux系统调优?linux启动过程?
51.dhcp服务的端口号?
52.dns服务的端口号?
53.IP/PV/UV的概念和区别?
54.正向代理、透明代理(也属于正向代理)和反向代理概念和CDN关系?
55.三种代理类型:
56.正向代理和反向代理参考地址:
57.mysql主从同步延迟的原因及解决方法
58.网站无法打开的排查思路和方法?
59.有客户反馈网页打开慢,怎么排查?
60.linux服务器上,用uptime、top查看系统的负载明显过高,排查处理思路?
61.找出僵死进程并杀死僵尸进程的方法?
62.运维应该关注哪些方面?
63.现在给你三百台服务器,你怎么对他们进行管理?
64.假如有人反应,调取后端接口时特别慢,你会如何排查?
65.LVS、Nginx、HAproxy有什么区别?工作中你怎么选择?
66.tomcat和Resin有什么区别,工作中你怎么选择?
67.什么叫网站灰度发布?
68.简述DNS进行域名解析的过程?
69.mysql如何减少主从复制延迟?
71.ip访问情况,要求分析nginx访问日志,找出访问页面数量在前十位的ip
72.使用tcpdump监听主机为192.168.1.1,tcp端口为80的数据,同时将输出结果保存输出到tcpdump.log
73.如何将本地80 端口的请求转发到8080 端口,当前主机IP 为192.168.2.1
74.实时抓取并显示当前系统中tcp 80端口的网络数据信息,请写出完整操作命令
75.用tcpdump嗅探80端口的访问看看谁最高
76.写一个脚本,实现判断192.168.1.0/24网络里,当前在线的IP有哪些,能ping通则认为在线
77.Tomcat工作模式?
78.如何看当前Linux系统有几颗物理CPU和每颗CPU的核数?
79.如何实时查看网卡流量为多少?如何查看历史网卡流量?
80.ps 查看系统进程时,有一列为STAT, 如果当前进程的stat为Ss 表示什么含义?如果为Z表示什么含义?
81.怎样一页一页地查看一个大文件的内容呢?
82.mysql主从同步原理
83.主从同步的作用
1.OSI参考模型七层网络协议?
物理层:定义计算机、网络设备、以及直接连接的介质、接口类型的标准,建立比特流的传输,用来组件物理网络的连接。
数据链路层:建立逻辑连接、进行硬件地址寻址,差错校验、差错恢复等功能。
网络层:进行逻辑地址寻址,实现不同网络之间的通信,定义了IP地址,为数据传输选择最近路径,实现不同网段之间通信。
传输层:可靠与不可靠的传输,实现程序与程序之间的连接,需要借助两个协议TCP(可靠)和UDP(不可靠),不同的程序对应不同的端口号,传输前的错误检测、流控。程序与程序直接的连接识别的是端口号,不同的程序有不同的编号,即为端口号。
会话层:建立、管理、建立会话、中止会话(如下载,断了后,还可续传)。
表示层:数据的表示、安全加密、压缩等方面功能(如:传输的文件类型不同,媒体、加密文件等表示形式不同)。
应用层:网络服务与最终用户的一个接口,用户接口。
2.七层网络协议各层分别对应什么设备?
物理层:网卡
数据链路层:交换机
网络层:路由器
传输层:防火墙
会话层:xxx
表示层; xxx
应用层:计算机
3.七层网络协议主要各层次包含的协议?
应用层: http FTP TFTP SMTP SNMP DNS
传输层:TCP UDP
网络层:ICMP IGMP IP ARP RARP
4.常见协议的解释?
- 1)HTTP协议:超文本传输协议。
a)HTTP协议介绍:
HTTP是一个基于TCP/IP通信协议来传递数据,属于应用层的面向对象协议,HTTP协议工作于客户端-服务端架构为上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。Web服务器根据接收到的请求后,向客户端发送响应信息。
b)HTTP协议特点:
简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
灵活:HTTP允许传输任意类型的数据对象。
无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
支持B/S及C/S模式。
c)HTTP协议之url的组成部分:
协议部分:该URL的协议部分为http:,代表网页使用的是HTTP协议。可用多种协议,如HTTP、FTP等等。后面的//为分隔符。
域名部分:该URL的域名部分为www.aspxfans.com。在URL中,也能用IP地址来作为域名使用
端口部分:该URL的端口部分为:8080。跟在域名后面的是端口,域名和端口之间使用“:”作为分隔符。端口不是一个URL必须的部分,如果省略端口部分,则将采用默认端口
虚拟目录部分:该URL的虚拟目录部分是/news/。从域名后第一个 /开始,到最后的 /为止,它也并不是一个URL必须的部分。
文件名部分:该URL的文件名部分如:index.asp。文件名部分也不是一个URL必须的部分,若省略该部分,则用默认的文件名。
锚部分:该URL的锚部分是name。从“#”开始到最后,都是锚部分。锚部分也不是一个URL必须的部分。
参数部分:该URL的参数部分是boardID=5&ID=24618&page=1。从“?”开始到“#”为止之间的部分为参数部分,又称搜索部分、查询部分。参数可以允许有多个参数,参数与参数之间用“&”作为分隔符。
d)HTTP协议之url的常见请求方式:
GET请求: 地址拼接在url上,不太安全。
POST请求: 提交到后台时候一般使用,比较安全。
- 2)FTP协议: 文件传输协议。交互时使用,依赖于TCP,是面向连接,可靠的。端口:20和21(21是用于连接,20是用于传输)
- 3)TFTP协议:简单文件传输协议。允许仅单向传输的文件,依赖于UDP,减少开销,不可靠。端口69.
- 4)SMTP协议: 简单电子邮件传输协议。使用tcp协议的25端口发送邮件。
邮件服务常见端口: 发邮件服务的端口:25.
收邮件服务的端口(比较多):
109端口: POP2邮局协议2服务开放的,几乎被淘汰了,用于收邮件。
110端口: POP3邮局协议3服务开放的,大多再用,用于收邮件。
143端口: IMAP服务开放的,用于收邮件。 - 5)SNMP协议: 简单网络管理协议。
SNMP是基于TCP/IP协议族的网络管理标准,是一种在IP网络中管理网络节点(如服务器、工作站、路由器、交换机等)的标准协议。SNMP能够使网络管理员提高网络管理效能,及时发现并解决网络问题以及规划网络的增长。网络管理员还可以通过SNMP接收网络节点的通知消息以及告警事件报告等来获知网络出现的问题 - 6)DNS协议:域名解析协议。
如果说ARP协议是用来将IP地址转换为MAC地址,那么DNS协议则是用来将域名转换为IP地址(也可以将IP地址转换为相应的域名地址)。
DNS既使用TCP协议,也适用UDP协议,DNS在进行区域传输的时候使用TCP协议,其它时候则使用UDP协议。
DNS为什么既使用TCP又使用UDP?
UDP报文的最大长度为512字节,而TCP则允许报文长度超过512字节。当DNS查询超过512字节时,协议的TC标志出现删除标志,这时则使用TCP发送。通常传统的UDP报文一般不会大于512字节。 - 7)ICMP协议: internet控制消息(报文)协议。
ICMP协议是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用
ICMP的作用就是让我们能够检测网路的连线状况﹐也能确保连线的准确性。ICMP 是个非常有用的协议﹐尤其是当我们要对网路连接状况进行判断的时候。 - 8)IP协议: 将多个包教会网络连接起来,在源地址和目标地址之间传递数据包。IP不提供可靠的传输服务,不提供端到端或节点到节点间的确认。
- 9)ARP协议:地址解析协议。将IP地址解析成mac地址。
是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。 - 10)RARP协议:反向地址解析协议。将mac地址解析成IP地址。就是将局域网中某个主机的物理地址转换为IP地址.
- 11)Telnet协议: 远程访问协议。
5.各层的PDU数据单元?
每一层都有PDU:协议数据单元
传输层的PDU:称为段,
网络层:称为报文或包
数据链路层:称为数据帧
物理层:称为比特流
6.ping使用什么协议?
ping是使用icmp协议(网络控制消息协议)
7.tcp协议和udp协议区别?
Tcp协议:是面向连接的协议,也就是说,在收发数据前,必须和对方建立可靠的连接。一个TCP连接必须要经过三次“握手”,和四次断开,才能建立起来,其中的过程非常复杂。效率低,但可靠传输。类似打电话。
Udp协议:是一个非连接的协议,传输数据之前源端和终端不建立连接,当它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上。不需要三次握手和反复确认,效率高,但是不可靠,类似于发短信。
8.TCP/IP协议分为哪四层,具体作用是什么?
这4层分别为:
应用层:应用程序间沟通的层,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。
传输层:在此层中,它提供了节点间的数据传送,应用程序之间的通信服务,主要功能是数据格式化、数据确认和丢失重传等。如传输控制协议(TCP)、用户数据报协议(UDP)等,TCP和UDP给数据包加入传输数据并把它传输到下一层中,这一层负责传送数据,并且确定数据已被送达并接收。
互连网络层:负责提供基本数据封包传送功能,让每一数据包都能够到达目的主机(但不检查是否被正确接收),如网际协议(IP)。
网络接口层(主机-网络层):接收IP数据报并进行传输,从网络上接收物理帧,抽取IP数据报转交给下一层,对实际的网络媒体的管理,定义如何使用实际网络(如Ethernet、Serial Line等)来传送数据。
9.CDN技术原理?
CDN的全称是Content Delivery Network,即内容分发网络。CDN是构建在网络之上的内容分发网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN的关键技术主要有内容存储和分发技术。
CDN的基本原理是广泛采用各种缓存服务器,将这些缓存服务器分布到用户访问相对集中的地区或网络中,在用户访问网站时,利用全局负载技术将用户的访问指向距离最近的工作正常的缓存服务器上,由缓存服务器直接响应用户请求,其目的是使用户可就近取得所需内容,解决 Internet网络拥挤的状况,提高用户访问网站的响应速度。
10.阿里云上cdn的配置?
如:发版的apk的url地址(cdn),如:http://s2.duyao001.com/static_girl/apk/PoisonNovel_girl.apk
1)阿里云cdn上添加加速域名:s2.duyao001.com,同时生成一个cname的值,配置源站slb(slb后是3台maya的nginx机器)。(cname值就相当于和源站里配置的slb的IP)
2)配置加速域名和cname值的解析(解析类型:cname类型,s2.duyao001.com cname值) 即:加速域名和通过slb和nginx服务器对应。
11.nginx做反向代理处理http请求的大致流程?
1)当HTTP请求交给Nginx处理时,首先Nginx会取出header头中的Host (此处也就是 www.baidu.com),然后将其与所有的配置文件中的每个server段中的server_name进行匹配,以此决定到底有哪个server块来处理这个请求。(当然有时也可能一个Host与多个server块中的server_name都匹配,这时会根据匹配的优先级选择实际处理的server块,优先级这里就不再细说。)
2)当HTTP请求匹配到了配置文件中的server_name,这样接下来nginx就会根据header中的Request URI字段进行与location匹配,匹配到了 location / 。
3)接下来继续由nginx处理可以看到 proxy _pass http://xxx ; 这就是进行反向代理处理,使用的是nginx的upstream模块进行反向代理实现。
4)通过proxy _pass http://xxx中的xxx可找到对应的upstream块,然后,可以根据其中的server 后端web服务ip:8081;再次进行代理请求,
此时发送的GET包内容:Host字段 and Request URI字段 都和上面一样,
5)当代理HTTP请求到达后端web的服务器:8081后,若后端web也是nginx,则服务器会对其进行类似上面的nginx处理HTTP请求一样,进行server_name 和 location匹配,并将相应的请求资源返回代理服务器。
6)Nginx反向代理服务器接收到后端web服务器的返回资源后,再将其返回给客户端浏览器。
以上就是Nginx作反响代理时HTTP请求与处理的大致流程。
12.TCP协议和IP协议之间的关系?
TCP协议:传输控制协议。 IP协议:互联网络协议
TCP/IP协议的基本传输单位是数据包(Datagram)。
TCP协议负责把数据分成若干个数据包,并给每个数据包加上包头,包头上有相应的编号,以保证在数据接收端能将数据还原为原来的格式。
IP协议在每个包头上再加上接收端主机地址,这样数据找到自己要去的地方,如果传输过程中出现数据丢失、失真等情况,TCP协议会自动要求数据重传
13.nginx只用IP不用域名能反向代理吗?
域名和IP都是可以的,域名会多一步解析的过程,所以一般IP地址不经常变的,用IP地址更好一点。
配置ip,访问就固定到那个IP上,如果IP会变,配置域名更好。而且也跟业务需求有关系,有的网站可以用ip访问,但有的网站只能用域名,url不允许显示ip的访问,就需要配置域名代理。
例子:
upstream apachephp {
server ip:8080;
}
server {
listen 80;
server_name www.quancha.cn; #或仅仅nginx的ip
access_log logs/quancha.access.log main;
error_log logs/quancha.error.log;
root html;
index index.html index.htm index.php;
location / {
proxy_pass http://apachephp;
}
}
14.Tcp连接状态详解,(tcp重要的监控指标参考和判断监控状态是否正常)
一个TCP连接的过程中,会经历一系列的状态变化,这些变化包括:
LISTEN,SYN_SENT,SYN-RECEIVED,ESTABLISHED,FIN-WAIT-1,FIN-WAIT-2,CLOSE-WAIT,CLOSING,LAST-ACK,TIME-WAIT,CLOSED。
关于各个状态的一个简要说明:
CLOSED:是一个虚构的状态,因为CLOSED的TCP连接的TCB(Transmission Control Block)已经释放掉了,所以此时这个TCP连接已经不存在了。
LISTEN:侦听并等待对端的TCP连接请求
SYN-SENT:发送SYN连接请求后,等待对端回复SYN请求
SYN-RECEIVED:收到来自对端的SYN请求,并回复SYN请求后,等待对端响应SYN请求的ACK消息
ESTABLISHED:代表连接建立,双方在这个状态下进行TCP数据交互,可以理解为系统的并发连接数(非web并发连接数)
FIN-WAIT-1:发送FIN关闭连接请求后,等待对方响应FIN的ACK消息或者对端的FIN关闭请求
FIN-WAIT-2:等待对方FIN关闭请求
CLOSE-WAIT:等待本地用户(进程)发送FIN关闭请求给对端
CLOSING:当双方同时发送FIN关闭请求时,会进入CLOSING状态,等待对端发送FIN报文的响应ACK消息
LAST-ACK:收到对端FIN请求后,回复ACK及FIN并等待对方回复FIN的响应ACK消息,此时进入此状态
TIME-WAIT:该状态是为了确保对端收到了FIN请求的ACK响应,默认会等待两倍MSL时长(MSL:Maximum Segment Lifetime,即报文最大生存时间,超过这个时间的报文会被丢弃)
注意:监控tcp状态重要参数的意义:
Tcp的连接状态对于我们web服务器来说是至关重要的,尤其是并发量ESTAB;或者是syn_recv值,假如这个值比较大的话我们可以认为是不是受到了攻击,或是是time_wait值比较高的话,我们要考虑看我们内核是否需要调优,太高的time_wait值的话会占用太多端口,要是端口少的话后果不堪设想。
15.TCP状态参数中系统连接数(并发数)的统计:(带名称的统计和不带名称仅统计数量)两种方法命令:
方法1:netstat命令
[root@kafka1 ~]# netstat -n |grep tcp
tcp 0 0 192.168.43.163:22 192.168.43.1:55627 ESTABLISHED
tcp 0 0 192.168.43.163:22 192.168.43.1:55221 ESTABLISHED
tcp 0 0 192.168.43.163:22 192.168.43.1:55125 ESTABLISHED
tcp 0 52 192.168.43.163:22 192.168.43.1:52096 ESTABLISHED
tcp 0 0 192.168.43.163:22 192.168.43.1:55632 ESTABLISHED
tcp 0 0 192.168.43.163:22 192.168.43.1:55223 ESTABLISHED
[root@kafka1 ~]# netstat -n | awk '/^tcp/ {++S[$NF]} END {for(key in S) print key,"\t",S[key]}'
ESTABLISHED 6
[root@kafka1 ~]# netstat -n |grep tcp |wc -l
6
[root@kafka1 ~]# netstat -n |grep -c tcp
6
方法2:ss命令
[root@kafka1 ~]# ss -ant |grep ESTAB
ESTAB 0 0 192.168.43.163:22 192.168.43.1:55627
ESTAB 0 0 192.168.43.163:22 192.168.43.1:55221
ESTAB 0 52 192.168.43.163:22 192.168.43.1:55125
ESTAB 0 0 192.168.43.163:22 192.168.43.1:52096
ESTAB 0 0 192.168.43.163:22 192.168.43.1:55632
ESTAB 0 0 192.168.43.163:22 192.168.43.1:55223
[root@kafka1 ~]# ss -ant |grep ESTAB | awk 'NR>0 {++s[$1]} END {for(k in s) print k,s[k]}'
ESTAB 6
[root@kafka1 ~]# ss -ant |grep ESTAB |wc -l
6
[root@kafka1 ~]# ss -ant |grep -c ESTAB
6
注意:
grep -c 的作用类似grep | wc -l,不同的是,如果是查找多个文件,grep -c会统计每个文件匹配的行数,每行一个文件的列出来,而wc -l 则列出总的统计数字。
16.web服务并发连接数查看统计(nginx,apahce,tomcat等,修改端口即可)? (带名称的统计和不带名称仅统计数量)
方法1:netstat命令
[root@eagle-002-176 ~]# netstat -ant |grep ':80' |grep ESTABLISHED
tcp 0 0 172.17.0.176:80 172.17.0.184:57594 ESTABLISHED
tcp 0 0 172.17.0.176:80 172.17.133.220:43446 ESTABLISHED
tcp 0 0 172.17.0.176:47737 100.100.105.50:80 ESTABLISHED
tcp 0 0 172.17.0.176:80 172.17.133.220:43444 ESTABLISHED
tcp 0 0 172.17.0.176:80 172.17.0.184:57598 ESTABLISHED
tcp 0 0 172.17.0.176:80 172.17.133.220:43440 ESTABLISHED
tcp 0 0 172.17.0.176:80 172.17.133.220:43438 ESTABLISHED
tcp 0 0 172.17.0.176:36186 100.100.30.25:80 ESTABLISHED
tcp 0 0 172.17.0.176:80 172.17.133.220:43442 ESTABLISHED
tcp 0 0 172.17.0.176:80 172.17.0.184:57592 ESTABLISHED
[root@eagle-002-176 ~]# netstat -ant |grep ':80' |grep ESTABLISHED |awk '{++S[$NF]} END {for(key in S) print key,"\t",S[key]}'
ESTABLISHED 11
[root@eagle-002-176 ~]# netstat -ant |grep ':80' |grep -c ESTABLISHED
11
[root@eagle-002-176 ~]# netstat -ant |grep ':80' |grep ESTABLISHED |wc -l
11
方法2:ss命令
[root@eagle-002-176 ~]# ss -ant |grep :80 |grep ESTAB
ESTAB 0 0 172.17.0.176:47737 100.100.105.50:80
ESTAB 0 0 172.17.0.176:80 100.116.191.141:46230
ESTAB 0 0 172.17.0.176:80 172.17.133.220:44202
ESTAB 0 0 172.17.0.176:80 172.17.133.220:44204
ESTAB 0 0 172.17.0.176:80 172.17.0.184:58202
ESTAB 0 0 172.17.0.176:80 172.17.0.184:58206
ESTAB 0 0 172.17.0.176:36186 100.100.30.25:80
[root@eagle-002-176 ~]# ss -ant |grep :80 |grep ESTAB |awk 'NR>0 {++s[$1]} END {for(k in s) print k,s[k]}'
ESTAB 7
[root@eagle-002-176 ~]# ss -ant |grep :80 |grep -c ESTAB
7
[root@eagle-002-176 ~]# ss -ant |grep :80 |grep ESTAB |wc -l
7
17.阿里云rds仅仅有内网时候,如何访问?
通过阿里云服务器搭建openvpn,连接vpn后方可访问。
18.阿里云服务器之间使用内网连接的原因说明?服务器之间用内网连接,但客户端通过Navicat连接时候,可以用外网?也可连接vpn后使用内网连接mysql.
云服务器公网带宽一般都是有限的。如果通过云服务器的公网网卡访问RDS,则往往会受带宽限制,导致整个系统性能很慢。 因此我们建议您通过云服务器的内网网卡访问RDS,从RDS控制台切换内网的方法如下:
1)在高安全访问模式下,支持内外网同时存在,您只需在RDS控制台点击“申请内网地址”即可;
2)在高性能访问模式下,只支持一种连接地址,您只需在RDS控制台点击“申请内网地址”,即可切换到内网地址,同时释放外网连接地址;
请注意增加内网连接后,如您的连接地址有变更,您的应用程序需要修改数据库的连接地址,并且需要重启应用程序。否则您的应用程序将无法访问RDS。
19.新给你一台服务器,你会怎么做?
1)确定你做什么用途,选择相应配置的服务器。
2)按照你的用途,确定你需要安装什么操作系统,什么版本。
3)对系统的基本措施的配置,如:linux系统,创建普通用户,修改ssh端口号,禁止root登录等安全措施,禁用非必要的服务启动.
4)确定安装什么应用服务,如tomcat+jdk环境或者lnmp或lamp环境等。
5)调试和测试。
20.Zabbix监控都监控哪些?监控什么业务数据?怎么监控mysql的,redis?日志?
1)监控linux系统的相关资源:cpu,内存,磁盘空间,网络流量,磁盘IO等信息。
2)自定义监控脚本,自定义键值,模板,监控一下内容:
(1)监控tcp的各个状态参数,主要的有系统并发量(并发连接数-ESTABLISED),syn_recv(回应对端消息后,等待对端响应SYN请求的ACK消息数量),time_wait的值(为确保对端收到消息等待的时长)
ss -ant | awk 'NR>1 {++s[$1]} END {for(k in s) print k,s[k]}'
(2)监控web服务的并发连接数。 netstat -ant |grep ':80' |grep -c ESTABLISHED
(3)监控web服务的端口和进程数: ps -ef |grep nginx/mysql |grep -v grep|wc -l
(4)监控mysql服务的端口存活和相关重要参数指标:Com_select:等增、删、改、查或慢查询语句的个数,发送接收字节数等.
(5)监控mysql的主从状态。
slave_is=( mysql -h xx -ustoryadmin -pxx -P3306 -e "show slave status\G"|grep -E "Slave_IO_Running|Slave_SQL_Running:"|awk '{print $2}')
if [ "${slave_is[0]}" = "Yes" -a "${slave_is[1]}" = "Yes" ];then
echo "ok -slave is running"
exit 0
else
echo "down -slave is not running"
exit 2
fi
[root@linux-node1 ~]# cat /etc/zabbix/zabbix_agentd.d/mysql_slave.conf
UserParameter=mysql.slave,/usr/local/zabbix/share/zabbix/alertscripts/check_mysql_slave.sh | grep -c 'ok'
(6)监控redis服务的端口存活和相关重要参数指标:
客户端连接数量,阻塞数量,内存消耗,cpu消耗,版本等参数
(7)监控系统用户数量: cat /etc/passwd |wc -l
(8)编写脚本监控web服务或mysql等其他服务,若服务宕掉后能重启服务。(web本地脚本或zabbix服务远端监控脚本(能报警))
21.Snmp的两种公司模式是什么?有什么特点?
NMP是基于UDP的,有两种工作方式,一种是轮询,一种是中断.
轮询:网管工作站随机开端口轮询被管设备的UDP的161端口.
中断:被管设备将trap报文主动发给网管工作站的UDP的162端口.
特点:轮询一定能够查到被管设备是否出现了故障,但实时性不好.
中断实时性好(触发更新),但不一定能够将trap报文报告给网管工作站.
22,什么是位置变量?shell的变量类型有哪些种?
Linux Shell下的变量按其使用目的可分为4种类型:
环境变量:用于保存操作系统运行时使用的环境参数
位置变量:Bash将传递给脚本的参数保存在位置变量中,以便于在脚本中引用这些参数
预定义变量:由系统保留和维护的一组特殊的变量,这些变量通常用于保存程序运行状态等
自定义变量:由用户自行定义的变量,可用于用户编写的脚本,多个命令间的值传递等
23.Vi编辑器的三种模式?
命令模式、插入模式、末行模式。
24.Linux文件系统中每个文件用什么来标识?
用i节点来标识。
25.Rpm有5种基本操作模式?
RPM 有五种基本的操作方式(不包括创建软件包): 安装, 卸载, 升级, 查询,和验证。
26.Icmp协议封装在什么协议中传递到目的主机?
ICMP报文封装在IP协议数据单元中传送
27.mysqldump备份数据时候数据库太大卡死怎么解决?mysqldump时,卡在那里不动了,怎么办?
其实这个有三点要注意:
1)备份数据库时,最好先停掉相关服务,然后再进行数据库的备份。
2)查看磁盘是否正常,使用命令 df -h
3)查看mysql的进程,看是否有mysqldump进程卡在那里,如果有的话,杀掉。
28.Docker的4种网络模式?
1)host模式,使用--net=host指定。 #容器和宿主机共享网络,容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机IP和端口
2)container模式,使用--net=container:NAME_or_ID指定。#新建容器和已经存在的容器仅共享一个网络(ip),其他应用等独立的网络
3)none模式,使用--net=none指定。 #无网络模式,用于没网时的测试.(不常用)
4)bridge模式(nat),使用--net=bridge指定,默认设置。 #桥接nat模式,先桥接到宿主机docker0网卡上,然后用snat转发成宿主机外网ip出去。
29.Lvs,haproxy,nginx区别?
LVS: 是基于四层的转发
HAproxy: 是基于四层和七层的转发,是专业的代理服务器
Nginx: 是WEB服务器,缓存服务器,又是反向代理服务器,可以做七层的转发
HAproxy和Nginx由于可以做七层的转发,所以URL和目录的转发都可以做
在很大并发量的时候我们就要选择LVS,像中小型公司的话并发量没那么大
选择HAproxy或者Nginx足已,由于HAproxy由是专业的代理服务器
配置简单,所以中小型企业推荐使用HAproxy
30.磁盘报错“No space left on device”,但是 df -h 查看磁盘空间没满,请问为什么?
可能是inode节点不够了,可以使用df -i查看inode节点的信息,看是否用完了。
31.Linux系统中病毒怎么解决?
1)最简单有效的方法就是重装系统
2)要查的话就是找到病毒文件然后删除
中毒之后一般机器cpu、内存使用率会比较高,机器向外发包等异常情况,排查方法简单介绍下:
top 命令找到cpu使用率最高的进程
一般病毒文件命名都比较乱,可以用 ps aux 找到病毒文件位置 ,kill 可疑进程
rm -f 命令删除病毒文件
检查计划任务、开机启动项和病毒文件目录有无其他可以文件等
3)由于即使删除病毒文件不排除有潜伏病毒,所以最好是把机器备份数据之后重装一下
32.查看http的并发请求数与其TCP连接状态
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
还有ulimit -n 查看linux系统打开最大的文件描述符,这里默认1024
不修改这里web服务器修改再大也没用,若要用就修改很几个办法,这里说其中一个:
修改/etc/security/limits.conf
- soft nofile 10240
- hard nofile 10240 #重启后生效
33.运维安全需要注意哪些事项?
1)创建普通用户,禁止root登录,合理使用sudo提权,只允许普通用户使用su命令切换到root
这样做的好处是双重密码保护,黑客就算知道了普通用户的密码,如果没有root密码,对服务器上攻击也比较有限.
2)修改ssh的默认端口22,因为ssh的端口是22,我们如果修改了该端口,他们就需要花费一点时间来扫描,稍微增加了点难度.
最好选择10000-65535内的端口.
3)使用一些类似DenyHosts预防SSH暴力破解的软件(不详细介绍).
其实就是一个python脚本或服务,查看非法的登录,次数超过设置的次数自动将ip加入黑名单。
4)删除特殊的不需要的账户和账户组.
Linux提供了各种不同角色的系统账号,在系统安装完成后,默认会安装很多不必要的用户和用户组,如果不需要某些用户或者组,就要立即删除它,因为账户越多,系统就越不安全,很可能被黑客利用,进而威胁到服务器的安全。
Linux系统中可以删除的默认用户和组大致有如下这些:
可删除的用户,如adm,lp,sync,shutdown,halt,news,uucp,operator,games,gopher等。
可删除的组,如adm,lp,news,uucp,games,dip,pppusers,popusers,slipusers等。
5)关闭系统不需要的服务.只保留本机器使用的服务。
Linux在安装完成后,绑定了很多没用的服务,这些服务默认都是自动启动的。对于服务器来说,运行的服务越多,系统就越不安全,越少服务在运行,安全性就越好,因此关闭一些不需要的服务,对系统安全有很大的帮助
具体哪些服务可以关闭,要根据服务器的用途而定,一般情况下,只要系统本身用不到的服务都认为是不必要的服务。
例如:某台Linux服务器用于www应用,那么除了httpd服务和系统运行是必须的服务外,其他服务都可以关闭。下面这些服务一般情况下是不需要的,可以选择关闭: anacron、auditd、autofs、avahi-daemon、avahi-dnsconfd、bluetooth、cpuspeed、firstboot、gpm、haldaemon、hidd、ip6tables、ipsec、isdn、lpd、mcstrans、messagebus、netfs、nfs、nfslock、nscd、pcscd portmap、readahead_early、restorecond、rpcgssd、rpcidmapd、rstatd、sendmail、setroubleshoot、yppasswdd ypserv
6)密码安全策略,采用复杂的密码,或使用本地秘钥+密码方式认证登录 (本地秘钥可防止暴力破解)
7)删减系统登录欢迎信息,防止泄露系统版本等信息,给黑客机会。
可以修改或删除某些系统文件,需要修改或删除的文件有4个,分别是:/etc/issue、/etc/issue.net、/etc/redhat-release和/etc/motd。
/etc/issue和/etc/issue.net文件都记录了操作系统的名称和版本号。
/etc/redhat-release文件也记录了操作系统的名称和版本号,为了安全起见,可以将此文件中的内容删除。
/etc/motd文件是系统的公告信息。每次用户登录后,/etc/motd文件的内容就会显示在用户的终端。通过这个文件系统管理员可以发布一些软件或硬件的升级、系统维护等通告信息,但是此文件的最大作用就、是可以发布一些警告信息,当黑客登录系统后,会发现这些警告信息,进而产生一些震慑作用。看过国外的一个报道,黑客入侵了一个服务器,而这个服务器却给出了欢迎登录的信息,因此法院不做任何裁决。
8)锁定系统重要文件 chattr
在Linux下锁定文件的命令是chattr,通过这个命令可以修改ext2、ext3、ext4文件系统下文件属性,但是这个命令必须有超级用户root来执行。和这个命令对应的命令是lsattr,这个命令用来查询文件属性。
对重要的文件进行加锁,虽然能够提高服务器的安全性,但是也会带来一些不便。
虽然通过chattr命令修改文件属性能够提高文件系统的安全性,但是它并不适合所有的目录。chattr命令不能保护/、/dev、/tmp、/var等目录。
根目录不能有不可修改属性,因为如果根目录具有不可修改属性,那么系统根本无法工作:
/dev在启动时,syslog需要删除并重新建立/dev/log套接字设备,如果设置了不可修改属性,那么可能出问题;
/tmp目录会有很多应用程序和系统程序需要在这个目录下建立临时文件,也不能设置不可修改属性;
/var是系统和程序的日志目录,如果设置为不可修改属性,那么系统写日志将无法进行,所以也不能通过chattr命令保护。
9)文件权限检查和修改
不正确的权限设置直接威胁着系统的安全,因此运维人员应该能及时发现这些不正确的权限设置,并立刻修正,防患于未然。
34.服务器遭受攻击后的处理过程?
安全总是相对的,再安全的服务器也有可能遭受到攻击。作为一个安全运维人员,要把握的原则是:尽量做好系统安全防护,修复所有已知的危险行为,同时,在系统遭受攻击后能够迅速有效地处理攻击行为,最大限度地降低攻击对系统产生的影响。
1)处理服务器遭受攻击的一般思路
系统遭受攻击并不可怕,可怕的是面对攻击束手无策,下面就详细介绍下在服务器遭受攻击后的一般处理思路。
(1)切断网络
所有的攻击都来自于网络,因此,在得知系统正遭受黑客的攻击后,首先要做的就是断开服务器的网络连接,这样除了能切断攻击源之外,也能保护服务器所在网络的其他主机。
(2)查找攻击源
可以通过分析系统日志或登录日志文件,查看可疑信息,同时也要查看系统都打开了哪些端口,运行哪些进程,并通过这些进程分析哪些是可疑的程序。这个过程要根据经验和综合判断能力进行追查和分析。下面会详细介绍这个过程的处理思路。
(3)分析入侵原因和途径
既然系统遭到入侵,那么原因是多方面的,可能是系统漏洞,也可能是程序漏洞,一定要查清楚是哪个原因导致的,并且还要查清楚遭到攻击的途径,找到攻击源,因为只有知道了遭受攻击的原因和途径,才能删除攻击源同时进行漏洞的修复。
(4)备份用户数据
在服务器遭受攻击后,需要立刻备份服务器上的用户数据,同时也要查看这些数据中是否隐藏着攻击源。如果攻击源在用户数据中,一定要彻底删除,然后将用户数据备份到一个安全的地方。
(5)重新安装系统
永远不要认为自己能彻底清除攻击源,因为没有人能比黑客更了解攻击程序,在服务器遭到攻击后,最安全也最简单的方法就是重新安装系统,因为大部分攻击程序都会依附在系统文件或者内核中,所以重新安装系统才能彻底清除攻击源。
(6)修复程序或系统漏洞
在发现系统漏洞或者应用程序漏洞后,首先要做的就是修复系统漏洞或者更改程序bug,因为只有将程序的漏洞修复完毕才能正式在服务器上运行。
(7)恢复数据和连接网络
将备份的数据重新复制到新安装的服务器上,然后开启服务,最后将服务器开启网络连接,对外提供服务。
2)检查并锁定可疑用户
当发现服务器遭受攻击后,首先要切断网络连接,但是在有些情况下,比如无法马上切断网络连接时,就必须登录系统查看是否有可疑用户,如果有可疑用户登录了系统,那么需要马上将这个用户锁定,然后中断此用户的远程连接。
3)查看系统日志
查看系统日志是查找攻击源最好的方法,可查的系统日志有/var/log/messages、/var/log/secure等,这两个日志文件可以记录软件的运行状态以及远程用户的登录状态,还可以查看每个用户目录下的.bash_history文件,特别是/root目录下的.bash_history文件,这个文件中记录着用户执行的所有历史命令。
4)检查并关闭系统可疑进程
检查可疑进程的命令很多,例如ps、top等,但是有时候只知道进程的名称无法得知路径,此时可以通过如下命令查看:
首先通过pidof命令可以查找正在运行的进程PID,例如要查找sshd进程的PID,执行如下命令:
[root@server ~]# pidof sshd
13276 12942 4284
然后进入内存目录,查看对应PID目录下exe文件的信息:
[root@server ~]# ls -al /proc/13276/exe
lrwxrwxrwx 1 root root 0 Oct 4 22:09 /proc/13276/exe -> /usr/sbin/sshd
这样就找到了进程对应的完整执行路径。如果还有查看文件的句柄,可以查看如下目录:
[root@server ~]# ls -al /proc/13276/fd
通过这种方式基本可以找到任何进程的完整执行信息.
5)检查文件系统的完好性
检查文件属性是否发生变化是验证文件系统完好性最简单、最直接的方法,例如可以检查被入侵服务器上/bin/ls文件的大小是否与正常系统上此文件的大小相同,以验证文件是否被替换,但是这种方法比较低级。此时可以借助于Linux下rpm这个工具来完成验证,操作如下:
[root@server ~]# rpm -Va
....L... c /etc/pam.d/system-auth
S.5..... c /etc/security/limits.conf
S.5....T c /etc/sysctl.conf
S.5....T /etc/sgml/docbook-simple.cat
S.5....T c /etc/login.defs
S.5..... c /etc/openldap/ldap.conf
S.5....T c /etc/sudoers
6)重新安装系统恢复数据
很多情况下,被攻击过的系统已经不再可信任,因此,最好的方法是将服务器上面数据进行备份,然后重新安装系统,最后再恢复数据即可。
数据恢复完成,马上对系统做上面介绍的安全加固策略,保证系统安全。
35.已知 apache 服务的访问日志按天记录在服务器本地目录/app/logs 下,由于磁盘空间紧张现在要求只能保留最近 7 天的访问日志!请问如何解决? 请给出解决办法或配置或处理命令
find /application/logs/ -type f -mtime +7 -name "*.log"|xargs rm -f
也可以使用-exec rm -f {} \;进行删除
36.每天晚上 12 点,打包站点目录/var/www/html 备份到/data 目录下(最好每次备份按时间生成不同的备份包)
cat a.sh
#/bin/bash
cd /var/www/ && /bin/tar zcf /data/html-`date +%m-%d%H`.tar.gz html/
crontab –e
00 00 * * * /bin/sh /root/a.sh
37.一主多从,主库宕机,如何切换到从库,其他的从库如何处理?(验证没问题后修改的最终答案)
1.确保所有的relay log全部更新完毕,在每个从库上执行stop slave io_thread; show processlist;直到看到Has read all relay log,则表示从库更新都执行完毕了
2.登陆所有从库,查看master.info文件,对比选择pos最大的作为新的主库。
[root@mysql ~]# sed -n "2,3p" /data/3307/data/master.info # 选择这个从库作为新主库
mysql-bin.000010
633
[root@mysql ~]# sed -n "2,3p" /data/3308/data/master.info
mysql-bin.000010
631
3.登陆要提升的从库作为新主库,执行stop slave; 并进入数据库目录,删除master.info和relay-log.info文件, 配置my.cnf文件,开启log-bin,如果有log-slaves-updates和read-only则要注释掉,重启新主库服务,登录后执行reset master
4.创建用于同步的用户并授权slave,然后查看位置点和binlog日志名称show master status\G
5.登录另外一台从库,执行stop slave停止同步
6.在另一台从库连接到新的主库,change master 重新做主从。
7.另一台从库上执行start slave; show slave status\G可看到新的主从建立。
8.修改新的master数据,测试slave是否同步更新
38.磁盘空间满了,删除了一部分 nginx access 日志,但是,发现磁盘空间还是满的,请问为什么?
删除的日志信息,一部分可能还是被进程调用,因此,需要重启nginx服务来释放进程;
或者实际生产环境中使用>/log/access.log清空文件
39.写一条192.168.10.0网段从网关192.168.9.1出去的路由?
答:route add -net 192.168.10.0/24 gw 192.168.9.1
40.写一条放行80端口的防火墙规则?
答:iptables -I INPUT -p tcp --dport 80 -j ACCEPT
41.如何将本地80 端口的请求转发到8080 端口,当前主机IP 为192.168.2.1
iptables -t nat -A PREROUTING -d 192.168.2.1 -p tcp -m tcp -dport 80 -j DNAT-to-destination 192.168.2.1:8080
42.使用tcpdump监听主机为192.168.1.1,tcp端口为80的数据,同时将输出结果保存输出到tcpdump.log
tcpdump 'host 192.168.1.1 and port 80' > tcpdump.log
43.实时抓取并显示当前系统中tcp 80端口的网络数据信息,请写出完整操作命令
tcpdump -nn tcp port 80
44.用tcpdump嗅探80端口的访问看看谁最高
tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F"." '{print $1"."$2"."$3"."$4}'| sort | uniq -c | sort -nr |head -20
45.请举一个生产中实际的例子网站打开慢由于数据库慢导致的。
数据库负载高,有慢查询,做联合索引案例
数据库负载高,有慢查询,分析web日志,可能有爬虫,封其ip
46.办公室同事反馈网站打不开,请简述一下排查故障的思路或解决方法?
答案:
A. 先ping一下域名,看看网络是否通
B. Telnet 一下服务器的80端口,看是否通
C. 查看服务器流量是否正常,借助sar或者nload
D. 查看服务器是否有负载,用w,查看服务是否开启,用ps
E. 抓包查看数据包是否正常,看是否有攻击,用tcpdump
F. 查看配置是否正确
47.服务器开不了机怎么解决一步步的排查
A、造成服务器故障的原因可能有以下几点:
(1)服务器电源有问题(例如:断电、电源线松动,人为原因)
(2)服务器系统文件丢失,硬件问题,散热不良造成蓝屏或死机。
(3)服务器网络参数配置错误,物理链路原因等。
B、如何排查服务器故障的处理步骤如下:
(1)先看服务器的电源指示灯是否亮,如果电源灯不亮,先检查确认电源没问题时,试着按开机键看是否能点亮服务器,如果不亮,先更换备用服务器以便快速恢复业务。
(2)如果服务器电源灯亮,接上显示器和键盘,查看服务器系统有异常,如蓝屏等,不能正常进入系统,先和数据确认,看是否能重启或者先更换备用服务器后恢复业务后再重启服务器修复。
(3)如果能正确使用用户名和密码登录系统,那么查看网卡是否正常,使用ifconfig命令查看网卡接口,使用ping测试网络连通。
(4)如果ping不通,检查网卡配置参数是否正确,网关,dns是否正确,或者重启网卡,再用ping测试。
(5)如果还是ping不通,应排除是否物理设备接入正常。
(6)如果ping通,那么继续排查其他问题,如还是不通,或者其他重大问题,更换备用服务器。
48.网站做了负载均衡,发现有些用户访问的时候经常需要重新登录,是什么原因,怎么处理?
答:这是因为用户登录后,他的请求被分发到了另外一台服务器上。
默认,服务存用户的session是在/tmp/下面,本来已经在A服务器上保存了session,可下次访问到了B服务器,而B服务器又不存在刚才保存的session信息,所以就会显示未登录。
要解决这个问题很容易,比较简单的做法是,做一个会话保持。比如可以设定1小时内用户的请求固定在一台服务器上。如果是nginx也可以设置ip_hash。当然最好的解决方案是,使用redis存取session,实现session共享。
49.apache使用的3种工作模式是什么?
Prefork :多路处理模块(MPM)实现了一个非线程型的、预派生的web服务器, 没有线程安全库, 要求将每个请求相互独立, 这样若一个请求出现问题就不会影响到其他请求.
Worker:多线程多进程, 也使用了多进程,每个进程又有多个线程,以获得基于进程的的稳定性.
Event: 把服务进程从连接中分离出来, 在服务器处理速度很快,可以用来处理更高负载.
50.linux系统调优?linux启动过程?
调优:
1)系统安全方面,见上面:xxx
2)系统内核参数方面,参考网上参数
3)系统文件打开数量:65535
Linux启动过程:
1)开机bios自检
2)MBR引导
3)grub引导菜单
4)加载内核kernel
5)启动init进程
6)读取inittab文件,执行rc.sysint.rc,xx脚本,
7)进入系统登录界面。
51.dhcp服务的端口号?
Dhcp服务端口是UDP 67端口和UDP 68端口,这两个端口是正常的DHCP服务端口,可以理解为一个发送,一个接收。
1)客户端向68端口广播请求配置,服务端用68端口接收信息。
2)服务器用67端口回应消息,向客户端发送回应数据。
52.dns服务的端口号?
Dns服务的端口是53,分为TCP和UDP协议,TCP是用来做区域传送,UDP是用来做DNS解析。
53.IP/PV/UV的概念和区别?
独立IP数:是指1天内多少独立的IP浏览了页面,即统计不同的IP浏览用户数量,同一个IP不管访问了几个页面,独立IP数都记为1,不同的IP浏览页面,计数会加1。多个用户(多个局域网IP)在同一个路由器(同一个广域网)内上网,可能被记录为一个独立IP访问者。如果用户不断更换IP,则有可能被多次统计。
PV访问量:即页面浏览量或点击量,衡量网站用户访问的网页数量,在一定统计周期内用户每打开或刷新一个页面就记录一次,多次打开或刷新同一页面则浏览量累计。
UV独立访客:统计1天内访问某站点的用户数(以cookie为依据),访问网站的一台电脑客户端为一个访客。可以理解为访问某网站的电脑的数量。网站判断来访电脑的身份是通过来访电脑的cookies实现的。如果更换了IP但不清除cookies,再访问相同网站,该网站的统计中UV数是不变的。如果用户不保存cookies访问,清除了cookies或者更换设备访问,计数会加1.0:00-24:00内相同的客户端多次访问只记为1个访客。
54.正向代理、透明代理(也属于正向代理)和反向代理概念和CDN关系?
正向代理:代理内部主机上网,共享上网,缓存内网用户上网行为等功能,(客户端需要设置代理服务器的ip和代理端口)
透明代理(也属正向代理):和正向代理功能完全一致,(客户端不需要设置代理服务器的ip和代理端口,对用户透明的)
反向代理:从外部网络访问内部服务器,与正向代理相反,主要用于网站架构的缓存加速或CDN。
注意:正向代理是代理客户端,也称翻墙。
反向代理是代理服务器,也可做缓存加速和CDN,squid反向代理和nginx的反向代理都可做CDN
参考解释:
CDN是内容分发网络(Content Delivery Network)。是为了解决用户请求响应过慢的问题。比如用户在黑龙江,服务器在海南,用户请求的速度可能受距离、带宽的影响。CDN将几台机器分发在全国各地,用户发出的请求会选择就近的CDN服务器进行处理。CDN简单的来说就是存储一些静态文件的一台或多台服务器,通过复制,缓存主服务器等方式,将文件保存其中。
反向代理一般就是指Nginx,是在主服务器之外加一层代理服务器,用户的请求会发送到代理服务器上,由代理服务器请求真正的服务器,获得到结果后再将结果返回给用户。反向代理主要的用处就是会加一层安全保障,所有的请求不是直接请求主服务器,而是代理服务器,这样就保护了主服务器不受侵害。第二个用处就是代理服务器会有缓存,命中缓存的请求可以不用再请
55.三种代理类型:
正向代理(不透明)、透明代理(也是正向代理)和反向代理。
56.正向代理和反向代理参考地址:
https://www.cnblogs.com/yanjieli/p/7507456.html
https://blog.csdn.net/wanderlustLee/article/details/84110051
57.mysql主从同步延迟的原因及解决方法
在配置好了主从同步以后, 主服务器会把更新语句写入binlog, 从服务器的IO 线程(这里要注意, 5.6.3 之前的IO线程仅有一个,5.6.3之后的有多线程去读了,速度自然也就加快了)回去读取主服务器的binlog 并且写到从服务器的Relay log 里面,然后从服务器的 的SQL thread 会一个一个执行 relay log 里面的sql , 进行数据恢复。
1)主从同步的延迟的原因
我们知道, 一个服务器开放N个链接给客户端来连接的, 这样有会有大并发的更新操作, 但是从服务器的里面读取binlog 的线程仅有一个, 当某个SQL在从服务器上执行的时间稍长 或者由于某个SQL要进行锁表就会导致,主服务器的SQL大量积压,未被同步到从服务器里。这就导致了主从不一致, 也就是主从延迟。
2)主从同步延迟的解决办法
实际上主从同步延迟根本没有什么一招制敌的办法, 因为所有的SQL必须都要在从服务器里面执行一遍,但是主服务器如果不断的有更新操作源源不断的写入, 那么一旦有延迟产生, 那么延迟加重的可能性就会原来越大。 当然我们可以做一些缓解的措施。
a. 我们知道因为主服务器要负责更新操作, 他对安全性的要求比从服务器高, 所有有些设置可以修改,比如sync_binlog=1,innodb_flush_log_at_trx_commit = 1 之类的设置,而slave则不需要这么高的数据安全,完全可以讲sync_binlog设置为0或者关闭binlog,innodb_flushlog,innodb_flush_log_at_trx_commit 也 可以设置为0来提高sql的执行效率 这个能很大程度上提高效率。另外就是使用比主库更好的硬件设备作为slave。
b. 就是把,一台从服务器当度作为备份使用, 而不提供查询, 那边他的负载下来了, 执行relay log 里面的SQL效率自然就高了。
c. 增加从服务器喽,这个目的还是分散读的压力, 从而降低服务器负载。
3)判断主从延迟的方法
MySQL提供了从服务器状态命令,可以通过 show slave status 进行查看, 比如可以看看Seconds_Behind_Master参数的值来判断,是否有发生主从延时。
其值有这么几种:NULL - 表示io_thread或是sql_thread有任何一个发生故障,也就是该线程的Running状态是No,而非Yes.0 - 该值为零,是我们极为渴望看到的情况,表示主从复制状态正常
58.网站无法打开的排查思路和方法?
1)首先检查域名解析
ping www.baidu.com,然后查看返回结果,如果返回的结果是“Ping 请求找不到主机 www.sdfjkdasjfkl.com。请检查该名称,然后重试。”表示解析有问题,需要解析域名;如果能够正常的返回IP地址,需要判断解析的IP地址和客户提供的服务器IP地址是否一致,如果不一致,重新解析(CDN除外),如果一致,进行下一步检查。
2)检查服务器网络是否正常
通过ping 和telnet来判断服务器网络是否正常,如果不正常,让机房本地检查服务器网络;如果都正常,就需要通过远程连接到服务器检查服务器。
3)检查是否是服务器防火墙拦截。
在服务器上访问域名,看能否访问到网站,如果访问得到,可能是防火墙拦截,需要在防火墙中放行80端口,如果访问不到,就进行下一步检查web应用。
4)检查各服务器的负载情况,是否过高负载导致了网站无法访问。若是高负载引起,查明原因再处理。
5)首先检查web应用服务是否正常运行,如果没有正常运行,需要启动web服务;如果正常运行,需要检查web服务内的站点的配置或根据访问返回的状态码,如404,500等,并结合研发检查是否是程序代码问题
59.有客户反馈网页打开慢,怎么排查?
1)首先要检查确定网站服务器正常运行
2)可能是网站代码杂糅,也可能导致网站性能查,加载过慢
3)如果网站没做CDN加速,访问量激增,也可能导致网页加载慢
4)公网传输网络的带宽也影响网页加载速率
5)可能是没有缓存或缓存服务器有问题,导致查询数据库表慢。
6)可能是数据库的慢查询语句导致,需要优化sql语句。
60.linux服务器上,用uptime、top查看系统的负载明显过高,排查处理思路?
1)先确定是否是本身业务量高峰期或者活动期间,流量、并发突增导致的,这种情况可以增加后台服务器数量,以降低负载。
2)若不是本身业务量高峰期或活动期,但后台机器负载过高,可能是程序代码问题,top查看占用率负载高的进程的pid并分析处理。将线程栈打出来:jstack -F pid
查看出cup或内存占用高的进程的pid号:11275,查看是java进程,一般都是tomcat的java程序
yum install java-1.8.0-openjdk-devel #安装jstack命令
jstack -F 11275 #根据进程pid号查询所有线程信息,找到对应java代码,可能有死循环代码,查找原因修复即可
或:jstack -l 11275 > a.txt #导出PID对应的线程信息到文件
3)若是后台服务器某个机器负载过高,使用top查看是否有可疑进程,如果有可疑进程,可能是受到攻击,就kill该进程并删除该进程文件,可通过分析日志,找到进程来源,后期重要关注该可疑进程。
4)若后台服务器配置不一致,导致有的机器本身资源不够导致的负载过高问题,可以采用nginx中配置weight权重来环境该服务器的负载情况。
5)使用ps查看服务器是否有僵尸进程(这些进程已经死亡,但没有释放系统资源),若有,杀死僵尸进程。
6)有没有不必要运行的服务,将其关闭。
7)若是数据库负载过大,查看是否有缓存,或者缓存有什么问题,进行排查。
61.找出僵死进程并杀死僵尸进程的方法?
用下面的命令找出僵死进程
ps -A -o stat,ppid,pid,cmd | grep -e '^[Zz]'
命令注解:
-A 参数列出所有进程
-o 自定义输出字段 我们设定显示字段为 stat(状态), ppid(进程父id), pid(进程id),cmd(命令)这四个参数
因为状态为 z或者Z 的进程为僵尸进程,所以我们使用grep抓取stat状态为zZ进程
Kill -9 各个僵死进程的pid ,僵尸进程太多了,杀的太累
一台服务器上产生了100多少僵死进程,而且每一僵死进程的父进程都不一样,如果用上面的方法,一条一条的杀,那还不得累死我啊。那么就应该想一条简单的命令,直接查找僵死进程,然后将父进程杀死~
ps -A -o stat,ppid,pid,cmd | grep -e '^[Zz]' | awk '{print $2}' | xargs kill -9
用ps -el看出的进程状态如果是Z,就是僵尸进程。
ps -ef|grep defunc可以找出僵尸进程.
62.运维应该关注哪些方面?
1)网络方面,包括网络设备是否正常,流量方面是否稳定(突增突减,原因是什么,是否是高峰期或流量攻击)
2)服务器方面,主要对cpu,内存,磁盘空间,服务,进程,日志,文件,目录等管理。
3)应用系统,业务系统方面,服务进程是否正常,能否正常访问。
4)数据库方面。包括数据库的业务是否正常,主从状态是否正常,数据备份等
5)日常监控方面。系统运行状况,服务运行状况,服务器系统状态监控,日志监控等。
6)性能调优方面。
7)运维安全方面。
63.现在给你三百台服务器,你怎么对他们进行管理?
管理3百台服务器的方式:
1)设定跳板机,使用统一账号登录,便于安全与登录的考量。
2)使用salt、ansiable、puppet进行系统的统一调度与配置的统一管理。
3)建立简单的服务器的系统、配置、应用的cmdb信息管理。便于查阅每台服务器上的各种信息记录。
64.假如有人反应,调取后端接口时特别慢,你会如何排查?
问清楚反应的人哪个服务应用或者页面调取哪个接口慢,叫他把页面或相关的URL发给你,
首先,最直观的分析就是用浏览器按F12,看下是哪一块的内容过慢(DNS解析、网络加载、大图片、还是某个文件内容等),如果有,就对症下药去解决(图片慢就优化图片、网络慢就查看内网情况等)。
其次,看后端服务的日志,其实大多数的问题看相关日志是最有效分析,最好用tail -f 跟踪一下日志,当然你也要点击测试来访问接口日志才会打出来。
最后,排除sql,,找到sql去mysql执行一下,看看时间是否很久,如果很久,就要优化SQL问题了,expain一下SQL看看索引情况啥的,针对性优化。数据量太大的能分表就分表,能分库就分库。
如果SQL没啥问题,那可能就是写的逻辑代码的问题了,一行行审代码,找到耗时的地方改造,优化逻辑。
65.LVS、Nginx、HAproxy有什么区别?工作中你怎么选择?
LVS: 是基于四层的转发
HAproxy: 是基于四层和七层的转发,是专业的代理服务器
Nginx: 是WEB服务器,缓存服务器,又是反向代理服务器,可以做七层的转发
区别: LVS由于是基于四层的转发所以只能做端口的转发,而基于URL的、基于目录的这种转发LVS就做不了
工作选择:
HAproxy和Nginx由于可以做七层的转发,所以URL和目录的转发都可以做
在很大并发量的时候我们就要选择LVS,像中小型公司的话并发量没那么大
选择HAproxy或者Nginx足已,由于HAproxy由是专业的代理服务器
配置简单,所以中小型企业推荐使用HAproxy
## 66.tomcat和Resin有什
么区别,工作中你怎么选择?
区别:Tomcat用户数多,可参考文档多,Resin用户数少,可考虑文档少
最主要区别则是Tomcat是标准的java容器,不过性能方面比resin的要差一些
但稳定性和java程序的兼容性,应该是比resin的要好
工作中选择:现在大公司都是用resin,追求性能;而中小型公司都是用Tomcat,追求稳定和程序的兼容
67.什么叫网站灰度发布?
灰度发布是指在黑与白之间,能够平滑过渡的一种发布方式
AB test就是一种灰度发布方式,让一部用户继续用A,一部分用户开始用B
如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面 来
灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度
68.简述DNS进行域名解析的过程?
用户要访问www.baidu.com,会先找本机的host文件,再找本地设置的DNS服务器,如果也没有的话,就去网络中找根服务器,根服务器反馈结果,说只能提供一级域名服务器.cn,就去找一级域名服务器,一级域名服务器说只能提供二级域名服务器.com.cn,就去找二级域名服务器,二级域服务器只能提供三级域名服务器.baidu.com.cn,就去找三级域名服务器,三级域名服务器正好有这个网站www.baidu.com,然后发给请求的服务器,保存一份之后,再发给客户端
69.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个参数可以减少网络问题导致的主从数据同步延迟
70.mySQL数据库主从同步延迟解决方案
最简单的减少slave同步延时的方案就是在架构上做优化,尽量让主库的DDL快速执行
还有就是主库是写,对数据安全性较高,比如sync_binlog=1,innodb_flush_log_at_trx_commit = 1 之类的设置,而slave则不需要这么高的数据安全,完全可以讲sync_binlog设置为0或者关闭binlog innodb_flushlog也可以设置为0来提高sql的执行效率。另外就是使用比主库更好的硬件设备作为slave
71.ip访问情况,要求分析nginx访问日志,找出访问页面数量在前十位的ip
cat access.log | awk '{print $1}' | uniq -c | sort -rn | head -10
72.使用tcpdump监听主机为192.168.1.1,tcp端口为80的数据,同时将输出结果保存输出到tcpdump.log
tcpdump 'host 192.168.1.1 and port 80' > tcpdump.log
73.如何将本地80 端口的请求转发到8080 端口,当前主机IP 为192.168.2.1
iptables -A PREROUTING -d 192.168.2.1 -p tcp -m tcp -dport 80 -j DNAT-to-destination 192.168.2.1:8080
74.实时抓取并显示当前系统中tcp 80端口的网络数据信息,请写出完整操作命令
tcpdump -nn tcp port 80
tcpdump -i eth0 udp port 53 -nn
75.用tcpdump嗅探80端口的访问看看谁最高
tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F"." '{print $1"."$2"."$3"."$4}'| sort | uniq -c | sort -nr |head -20
76.写一个脚本,实现判断192.168.1.0/24网络里,当前在线的IP有哪些,能ping通则认为在线
#!/bin/bash
for ip in `seq 1 255`
do
{
ping -c 1 192.168.1.$ip > /dev/null 2>&1
if [ $? -eq 0 ]; then
echo 192.168.1.$ip UP
else
echo 192.168.1.$ip DOWN
fi
}&
done
wait
77.Tomcat工作模式?
笔者回答:
Tomcat是一个JSP/Servlet容器。
其作为Servlet容器,有三种工作模式:独立的Servlet容器、进程内的Servlet容器和进程外的Servlet容器。
进入Tomcat的请求可以根据Tomcat的工作模式分为如下两类:
Tomcat作为应用程序服务器:请求来自于前端的web服务器,这可能是Apache, IIS, Nginx等;
Tomcat作为独立服务器:请求来自于web浏览器;
78.如何看当前Linux系统有几颗物理CPU和每颗CPU的核数?
cat /proc/cpuinfo|grep -c 'physical id' 4
[root@centos6 ~ 10:56 #36]# cat /proc/cpuinfo|grep -c 'processor' 4
79.如何实时查看网卡流量为多少?如何查看历史网卡流量?
安装sysstat包,使用sar命令查看。
yum install -y sysstat #安装sysstat包,获得sar命令
sar -n DEV #查看网卡流量,默认10分钟更新一次
sar -n DEV 1 10 #一秒显示一次,一共显示10次
sar -n DEV -f /var/log/sa/sa22 #查看指定日期的流量日志
80.ps 查看系统进程时,有一列为STAT,如果当前进程的stat为Ss 表示什么含义?如果为Z表示什么含义?
S表示正在休眠;s表示主进程;Z表示僵尸进程。
81.怎样一页一页地查看一个大文件的内容呢?
通过管道将命令”cat file_name.txt” 和 ’more’ 连接在一起可以实现这个需要.
[root@localhost ~]# cat file_name.txt | more
82.mysql主从同步原理
Mysql的主从同步是异步的同步,从库需要两个线程来完成,其中一个线程叫sql线程,另外一个叫IO线程,在主库上由一个IO线程负责完成。
要想完成主从同步,主库必须要开启bin-log,
当用户请求主库时候,如果有增删改时,会把数据写入主库数据文件里,把更新的结果写到bin-log里面,主从同步是从库找主库同步,从库start slave后,由从库的IO向主库发起请求,主库接收到请求后,会通过用户名,密码,IP地址,端口验证请求是否合法,如果都正确就允许从库连接,从库同步时从change master处查出信息,会告诉主库,我要从你的哪个位置哪个点给我发bin-log。
主库的IO线程收到请求后,会根据从库需求范围发送bin-log,当从库的IO线程收到bin-log后,会把bin-log日志写到自己的某个地点(中继日志),然后更新本地文件的master info位置点,
接下来IO线程继续向主库请求,说把当前位置点以后的bin-log再发给我,然后把bin-log再放入中继日志,再更新本地的master info中位置点,如此循环的把主库的bin-log写入本地的中继日志。
而本地的sql线程,时刻监控中继日志,一旦有bin-log,就把中继日志的bin-log语句,经过转换写到本地的数据文件中,这样,就是IO线程不断的从主库取得bin-log,放入本地的中继日志,sql线程不断的从本地中继日志中取bin-log,经转换存入本地数据文件中,实现了主从数据同步。
注意:从库开启start slave之前,要不位置点之前的主库上的数据先导到从库上,否则,只是在位置点之后主从数据同步,位置点之前的数据就不同步了,
所以,要在开关开启之前,先把位置点之前的数据让主从一致,这样无论何时主从数据都会一致的。这个位置点就是从库上:master_log_file=”” ,master_log_pos=””这里的位置点
。
83.主从同步的作用
Mysql主从同步部署可以使主从服务器互为备份,大大的加强了数据库架构的健壮性,解决数据库单点故障,当主服务器出现问题时,我们可以人工或自动切换到从服务器继续提供服务。
主从部署的同时加上读写分离,通过在从服务器上仅仅处理用户的查询请求,在主服务器上处理用户的写请求,分担数据库压力。
面试题参考链接:
https://www.cnblogs.com/sunyllove/p/9578620.html
https://blog.csdn.net/Ki8Qzvka6Gz4n450m/article/details/79227843
https://blog.csdn.net/qq_25934401/article/details/81532276
评论