【就业福利-251期】2017年企业版高薪运维经典面试题汇总

2017年企业对运维的要求也提高,随之带来的对人员基础能力的考核也更多了,下面我们整理了企业高薪运维经面试的汇总,给准备求职的您一些帮助:

1.如何判断mysql主从是否同步?该如何使其同步?

2.mysql的innodb如何定位锁问题,mysql如何减少主从复制延迟?

3.osi七层模型,tcp三次握手过程,tcp连接断开过程,什么情况下tcp进入time_wait?

4.什么是跨站脚本攻击,有何危害,sql注入攻击如何防范?

5.海量文件如何存储?

6.如何重置mysql root密码?

7.把/data目录及其子目录下所有以扩展名.txt结尾的文件中包含oldgirl的字符串全部替换为oldboy

8.创建目录/data/oldboy,并且在该目录下创建文件oldboy.txt,然后在文件“oldboy.txt”里写入内容“inet addr : 10.0.0.8 Bcast : 10.0.0.255 Mask : 255.255.255.0 ”(不包含引号)

9.脚本计算1+2+3…. +100=?

1.Apache和MySQL 两种服务能否装在同一台机器上,如何查看Apache和mysql端口和进程?

2.如何在一台虚拟机上同时部署4个网站,访问域名分别是 www.test1.net www.test2.net test1.jjwxc.net test2.jjwxc.net

3.统计一下/var/log/nginx/access.log 日志中访问量最多的前十个IP?

4.怎么查看当前系统中每个IP的连接数,怎么查看当前磁盘的IO,怎么查看当前网络的IO?

怎么查看当前系统中每个IP的连接数:

怎么查看当前磁盘的IO:

1) iostat可以提供丰富的IO状态数据。

iostat 是 sysstat 工具集的一个工具,需要安装。

参数 -d 表示,显示设备(磁盘)使用状态;-k某些使用block为单位的列强制使用Kilobytes为单位;1 10表示,数据显示每隔1秒刷新一次,共显示10次。

tps:该设备每秒的传输次数。

kB_read/s:每秒从设备读取的数据量;kB_wrtn/s:每秒向设备写入的数据量;kB_read:读取的总数据量;kB_wrtn:写入 的总数量数据量;这些单位都为Kilobytes。

-x 参数:使用-x参数我们可以获得更多统计信息。

iostat -d -x -k 1 10 #查看设备使用率(%util)、响应时间(%await)

await:每一个IO请求的处理的平均时间(单位是微秒)。这里可以理解为IO的响应时间,一般地系统IO响应时间应该低于5ms,如果大于10ms就比较大了。

%util:在统计时间内所有处理IO时间,除以总共统计时间。例如,如果统计间隔1秒,该 设备有0.8秒在处理IO,而0.2秒闲置,那么该设备的%util = 0.8/1 = 80%,所以该参数暗示了设备的繁忙程度。一般地,如果该参数是100%表示设备已经接近满负荷运行了(当然如果是多磁盘,即使%util是100%,因为磁盘的并发能力,所以磁盘使用未必就到了瓶颈)。

2)使用iotop命令

要安装iotop软件包

iotop命令是一个用来监视磁盘I/O使用状况的top类工具。iotop具有与top相似的UI。Linux下的IO统计工具如iostat,nmon等大多数是只能统计到per设备的读写情况,如果你想知道每个进程是如何使用IO的就比较麻烦,使用iotop命令可以很方便的查看。

怎么查看当前网络的IO:

iftop 查看网络带宽情况(必须从epel源安装)

5.写一个脚本,实现批量添加20个用户,用户名为:user1-20,密码为user后面跟着5个随机字符或数字

6.dmesg命令中看到ip-conntrack:table full,dropping packet,如何解决?

线上web服务器在访问量很大时,就会出现网络连接丢包的问题,通过dmesg命令查看日志,发现如下信息:

ip_conntrack: table full, dropping packet.

为什么会出现 ip_conntrack: table full, dropping packet 呢?这里面关键的信息是”ip_conntrack: table full, dropping packet”,从这里可以判断出这跟iptables有关系了,因为iptables防火墙使用了ip_conntrack内核模块实现连接跟踪功能,所有的进出数据包都会记录在连接跟踪表中,包括tcp,udp,icmp等,一旦连接跟踪表被填满以后,就会发生丢包,导致网络不稳定。当这张表满了,就会在日志里面写入该信息(执行命令dmesge | more查看)。

而当我们的服务器确实打开了iptables防火墙,并且都是在网站流量非常高的时候经常会出现这个问题。这个问题的原因是由于web服务器收到了大量的连接,在启用了iptables的情况下,iptables会把所有的连接都做链接跟踪处理,这样iptables就会有一个链接跟踪表,当这个表满的时候,就会出现上面的错误。

查看当前连接数:

iptables的链接跟踪表最大容量配置文件如下:

由于nf_conntrack 工作在3层,支持IPv4和IPv6,而ip_conntrack只支持IPv4,因此nf_conntrack模块在Linux的2.6.15内核中被引入,而ip_conntrack在Linux的2.6.22内核被移除(centos6.x版本),因此不同版本的系统,配置文件也就不尽相同了。目前大多的ip_conntrack_*已被 nf_conntrack_* 取代,很多ip_conntrack_*仅仅是个软链接,原先的ip_conntrack配置目录/proc/sys/net/ipv4/netfilter/ 仍然存在,但是新的nf_conntrack在/proc/sys/net/netfilter/中,这样做是为了能够向下的兼容。

这个问题该如何解决,解決方法一般有两个:

方法1:

严格来看重启 iptables/ip6tables 会重新加载 nf_conntrack 相关的模块, 引起参数恢复成默认值。

以免重启 iptables 引起参数失效. 也可以在 /etc/sysconfig/iptables-config 文件中开启选项 IPTABLES_SYSCTL_LOAD_LIST=”.nf_conntrack”, iptables 重启后会进行 sysctl 操作.

方法2:

不使用ip_conntrack,nf_conntrack_ipv4,xt_state模块

7、varnish nginx squid各自缓存的优缺点

8、查询DNS的深层结构

当 DNS 客户机需要查询程序中使用的名称时,它会查询本地DNS 服务器来解析该名称。客户机发送的每条查询消息都包括3条信息,以指定服务器应回答的问题。
● 指定的 DNS 域名,表示为完全合格的域名 (FQDN) 。
● 指定的查询类型,它可根据类型指定资源记录,或作为查询操作的专门类型。
● DNS域名的指定类别。
对于DNS 服务器,它始终应指定为 Internet 类别。例如,指定的名称可以是计算机的完全合格的域名,如im.qq.com,并且指定的查询类型用于通过该名称搜索地址资源记录。
DNS 查询以各种不同的方式进行解析。客户机有时也可通过使用从以前查询获得的缓存信息就地应答查询。DNS 服务器可使用其自身的资源记录信息缓存来应答查询,也可代表请求客户机来查询或联系其他 DNS 服务器,以完全解析该名称,并随后将应答返回至客户机。这个过程称为递归。
另外,客户机自己也可尝试联系其他的 DNS 服务器来解析名称。如果客户机这么做,它会使用基于服务器应答的独立和附加的查询,该过程称作迭代,即DNS服务器之间的交互查询就是迭代查询。
DNS 查询的过程如下图所示。

9、lvs的三种模式

10、lvs/nginx/haproxy优缺点

11、Linux系统监控命令,查看cpu负载内存等情况

三、查看网络流量的命令

四、docker四中网络模式

12、实现高可用工具有哪些

13、mysql数据备份工具

14、awk和sed的区别

15、介绍CDN的作用

16、 keepalive的工作原理和如何做到健康检查

17、 squid的默认缓存大小是多少?

18、查看Linux系统的所有配置的命令(除了cpuinfo和meinfo)

19、用shell脚本或命令将/opt目录下的大于15KB的文件都移到/tmp目录下

find /opt -size +15k -exec mv {} /tmp/ \;

20、写过哪些Python脚本?

这个程序的作用是跳过最新的7*24个备份,删除其他的时间更长的

# -*- coding: cp936 -*-

import os #os是Python自带的一个扩展库,用来进行跟系统相关的操作

skipNum = 24 * 7 #保留文件夹的数目(小时 * 天)

print ‘\n*************清除时间超过 ‘ + str(skipNum /24) + ‘ 天的自动备份文件**************\n\n’

backupDir = os.path.abspath(__file__) + ‘\\..\\..’ + ‘\\servedatabase_autobackup’
for dir in os.listdir(backupDir): #os.listdir(xxx)函数返回的是一个文件列表
if dir[-4:] == ‘.map’:
mapDir = backupDir + ‘\\’ + dir
print ‘正在清除备份目录:’ + os.path.abspath(mapDir)
subDirs = os.listdir(mapDir) #获取文件列表
subDirs.reverse() #逆序
i = 0
for subDir in subDirs:
i+=1
if i>skipNum:
print ‘正在清除备份: ‘ + subDir
os.system(‘rmdir ‘ + mapDir + ‘\\’ + subDir + ‘ /s/q’) #相当于执行控制台命令

原文链接:https://www.magedu.com/73536.html

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享