企业运维经典⾯试题汇总(1)
1.如何判断mysql 主从是否同步?该如何使其同步?
开机跳出c盘documents
3.osi 七层模型,tcp 三次握⼿过程,tcp 连接断开过程,什么情况下tcp 进⼊time_wait?
4.什么是跨站脚本***,有何危害,sql注⼊***如何防范?
5.海量⽂件如何存储?
6.如何重置mysql root 密码?Slave_IO_Running
Slave_SQL_Running ;略mysql
的innodb 如何定位锁问题:
在使⽤ show engine innodb status 检查引擎状态时,发现了死锁问题
在5.5中,information_schema 库中增加了三个关于锁的表(MEMORY 引擎):innodb_trx        ## 当前运⾏的所有事务innodb_locks      ## 当前出现的锁inn
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 数据库主从同步延迟解决⽅案最简单的减少slave 同步延时的⽅案就是在架构上做优化,尽量让主库的DDL 快速执⾏。还有就是主库是写,对数据安全性较⾼,⽐如sync_binlog =1,innodb_f = 1 之类的设置,⽽slave 则不需要这么⾼的数据安全,完全可以讲sync_binlog 设置为0或者关闭binlog ,
innodb_flushlog 也可以设置为0来提⾼sql 的执⾏效率。另
答:其他问题答案略
什么情况下tcp 进⼊time_wait ?
当关闭⼀个 socket 连接时,主动关闭⼀端的 socket 将进⼊TIME_WAIT 状态,⽽被动关闭⼀⽅则转⼊CLOSED 状态。
具体过程如下:1、 客户端发送FIN 报⽂段,进⼊FIN_WAIT_1状态。2、 服务器端收到FIN 报⽂段,发送ACK 表⽰确认,进⼊CLOSE_WAIT 状态。3、 客户端收服务器端发送FIN 报⽂端,进⼊LAST_ACK 状态。5、 客户端收到FIN 报⽂端,发送FIN 的ACK ,同时进⼊TIME_WAIT 状态,启动TIME_WAIT 定时器,超时时间
客户端在2MSL 时间内没收到对端的任何响应,TIME_WAIT 超时,进⼊CLOSED 状态。答:略
答:使⽤分布式存储,如mfs 、hadoop 等
7.把/data⽬录及其⼦⽬录下所有以扩展名.txt结尾的⽂件中包含oldgirl的字符串全部替换为oldboy
8.创建⽬录/data/oldboy,并且在该⽬录下创建⽂件,然后在⽂件“”⾥写⼊内容“inet addr : 10.0.0.8 Bcast :10.0.0.255 Mask : 255.255.255.0 ”(不包含引号)
9.脚本计算1+2+3…. +100=?
统计⼀下/var/log/nginx/access.log ⽇志中访问量最多的前⼗个IP?
13.怎么查看当前系统中每个IP 的连接数,怎么查看当前磁盘的IO,怎么查看当前⽹络的IO?怎么查看当前系统中每个IP的连接数:
web前端基础面试题
答:⼀、 在已知MYSQL 数据库的ROOT ⽤户密码的情况下,修改密码的⽅法:
1、 在SHELL 环境下,使⽤mysqladmin 命令设置:mysqladmin –u root –p password “新密码”  回车后要求输⼊旧密码
2、
在mysql >环境中,使⽤update 命令,直接更新mysql 库user 表的数据:
Update  mysql .user  set  password =password (‘新密码’)  where  user =’root’;
flush  privileges ;
注意:mysql 语句要以分号”;”结束
3、 在mysql >环境中,使⽤grant 命令,修改root ⽤户的授权权限。
grant  all  on  *.*  to  root@’localhost’  identified  by  ‘新密码’;
⼆、 如查忘记了mysql 数据库的ROOT ⽤户的密码,⼜如何做呢?⽅法如下:
1、 关闭当前运⾏的mysqld 服务程序:service  mysqld  stop (要先将mysqld 添加为系统服务)
2、 使⽤mysqld_safe
脚本以安全模式(不加载授权表)启动mysqld 服务/usr /local /mysql /bin /mysqld_safe  --skip -grant -table  &
3、 使⽤空密码的root ⽤户登录数据库,重新设置ROOT ⽤户的密码
#mysql  -u  root
Mysql > Update  mysql .user  set  password =password (‘新密码’)  where  user =’root’;
Mysql > flush  privileges
;答:
find /data / -type f -name "*.txt" | xargs sed -i 's/oldgirl/oldboy/g'
答:# mkdir -p /data /oldboy
spring boot启动常用注解# echo "inet addr: 10.0.0.8 Bcast: 10.0.0.255 Mask:255.255.255.0" >> /data/
答:
[root@localhost ~]# cat sum .sh
#!/bin /bash
num =1
sum =0
while  [ $num -le 100 ]
do
sum =$(expr $sum + $num )
let num ++
done
echo "1++100="$sum
[root@localhost ~]# sh sum .sh
1++100=5050
cat access_log | awk ‘{print $1}’ | uniq -c |sort -rn |head -10
awk '{print $1}' /var /log /nginx /access .log | sort | uniq -c | sort -nr -k1 | head -n 10
# netstat -n | awk '/^tcp/ {print $5}' | awk -F: '{print $1}' | sort | uniq -c| sort –rn
sort 命令:进⾏排序,-r 反向排序 -n 使⽤纯数字进⾏排序
uniq 将重复的数据仅仅列出⼀个来显⽰,uniq -c ,进⾏计数
awk -F : '{print $1}'  以F 为分界符,取出第⼀个:之前的数据
怎么查看当前磁盘的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源安装)
14.写⼀个脚本,实现批量添加20个⽤户,⽤户名为:user1-20,密码为user 后⾯跟着5个随机字符或数字
[root@localhost ~]# iostat -d -k 1 10
Linux 3.10.0-327.el7.x86_64 (localhost .localdomain ) 03/23/2017 _x86_64_(2 CPU )
Device :            tps    kB_read /s    kB_wrtn /s    kB_read    kB_wrtn
sda              16.60      597.83        29.44    384048      18909
切图用什么软件
scd0              0.03        0.10        0.00        66          0
dm -0            15.78      551.54        26.20
354311      16831
dm -1              0.22        1.97        0.00      1268          0
[root@localhost ~]# cat useradd .sh
#!/bin /bash
name ="user"
for  number in $(seq 1 20)
do
password =$(cat /dev /urandom | head -1 | md5sum | head -c 5)
useradd $name$number
echo "user$password" | passwd --stdin  user$number &> /dev /null
echo "$name$number user$password" >> userinfo .txt
done
$ 15.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模块
16、varnish nginx squid 各⾃缓存的优缺点[
root@localhost ~]# cat /proc /sys /net /netfilter /nf_conntrack_count
[root@localhost ~]# cat /proc /sys /net /netfilter /nf_conntrack_max
65536[
root@localhost ~]# sysctl -w net .nf_conntrack_max =100000
net .nf_conntrack_max = 100000
[root@localhost ~]# cat /proc /sys /net /netfilter /nf_conntrack_max
100000
sysctl -p
查询DNS 的深层结构
当 DNS 客户机需要查询程序中使⽤的名称时,它会查询本地DNS 服务器来解析该名称。客户机发送的每条查询消息都包括3条信息,以指定服务器应回答的问题。
● 指定的 DNS 域名,表⽰为完全合格的域名 (FQDN) 。
● 指定的查询类型,它可根据类型指定资源记录,或作为查询操作的专门类型。
● DNS域名的指定类别。
对于DNS 服务器,它始终应指定为 Internet 类别。例如,指定的名称可以是计算机的完全合格的域名,如im.qq,并且指定的查询类型⽤于通过该名称搜索地址资源记录。
DNS 查询以各种不同的⽅式进⾏解析。客户机有时也可通过使⽤从以前查询获得的缓存信息就地应答
查询。DNS 服务器可使⽤其⾃⾝的资源记录信息缓存来应答查询,也可代表请求客户机来查询或联系其他 DNS 服务器,以完全解析该名称,并随后将应答返回⾄客户机。这个过程称为递归。
另外,客户机⾃⼰也可尝试联系其他的 DNS 服务器来解析名称。如果客户机这么做,它会使⽤基于服务器应答的独⽴和附加的查询,该过程称作迭代,即DNS服务器之间的交互查询就是迭代查询。
DNS 查询的过程如下图所⽰。
lvs 的三种模式
要做cache 服务的话,我们肯定是要选择专业的cache 服务,优先选择squid 和varnish 。
oracle11g导出空表设置
Varnish
⾼性能、开源的反向代理服务器和内存缓存服务器。
优点:
1. ⾼性能;
2. 多核⽀持;
3. ⽀持0-60秒的精确缓存时间。
缺点:
1. 不具备⾃动容错和恢复功能,重启后数据丢失;
2. 在线扩容⽐较难。
3. 32位机器上缓存⽂件⼤⼩为最⼤2GB ;
4. 不⽀持集。
应⽤场景:
并发要求不是很⼤的⼩型系统和应⽤
nginx
1不⽀持带参数的动态链接
2Nginx 缓存内部没有缓存过期和清理的任何机制,这些缓存的⽂件会永久性地保存在机器上,如果要缓存的东西⾮常多,那就会撑暴整个硬盘空间。
3只能缓存200状态码,因此后端返回301/302/404等状态码都不会缓存,假如恰好有⼀个访问量很⼤的伪静态链接被删除,那就会不停穿透导致后端承载不⼩压4Nginx 不会⾃动选择内存或硬盘作为存储介质,⼀切由配置决定,当然在当前的操作系统⾥都会有操作系统级的⽂件缓存机制,所以存在硬盘上也不需要过分担Squid
Squid ,很古⽼的反向代理软件,拥有传统代理、⾝份验证、流量管理等⾼级功能,但是配置太复杂。它算是⽬前互联⽹应⽤得最多的反向缓存代理服务器,⼯作
squid 的优势在于完整的庞⼤的cache 技术资料,和很多的应⽤⽣产环境1、在浏览器中输⼊www .qq 域名,操作系统会先检查⾃⼰本地的hosts ⽂件是否有这个⽹址映射关系,如果有,就先调⽤这个IP 地址映射,完成域名解析。
2、如果hosts ⾥没有这个域名的映射,则查本地DNS 解析器缓存,是否有这个⽹址映射关系,如果有,直接返回,完成域名解析。
3、如果hosts 与本地DNS 解析器缓存都没有相应的⽹址映射关系,⾸先会TCP /ip 参数中设置的⾸选DNS 服务器,在此我们叫它本地DNS 服务器,此服务器收到
4、如果要查询的域名,不由本地DNS 服务器区域解析,但该服务器已缓存了此⽹址映射关系,则调⽤这个IP 地址映射,完成域名解析,此解析不具有权威性。
5、如果本地DNS 服务器本地区域⽂件与缓存解析都失效,则根据本地DNS 服务器的设置(是否设置转发器)进⾏查询,如果未⽤转发模式,本地DNS 就把请求
6、如果⽤的是转发模式,此DNS 服务器就会把请求转发⾄上⼀级DNS 服务器,由上⼀级服务器进⾏
解析,上⼀级服务器如果不能解析,或根DNS 或把转请求
从客户端到本地DNS 服务器是属于递归查询,⽽DNS 服务器之间就是的交互查询就是迭代查询。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。