6676 lines
360 KiB
Markdown
6676 lines
360 KiB
Markdown
1. 问题1:在linux中links(链接)分类?
|
||
硬链接(hard link) #创建硬链接:ln 文件名 文件名
|
||
符号链接(symbolic link) 又称为软链接 #创建符号链接:ln -s 文件名 文件名
|
||
问题2:符号链接和硬链接的区别?
|
||
A.符号链接可以跨文件系统,硬链接不可以;
|
||
B.符号链接可以对目录进行连接,硬链接不可以;
|
||
C.删除源文件之后,符号链接失效,硬链接无影响;
|
||
D.符号链接的源文件和链接文件inode不一样;硬链接的源文件和链接文件inode一样
|
||
E.两种链接都是通过ln命令创建的,不同的是符号链接创建时需要加-s参数
|
||
|
||
2.编写的shell脚本运行前赋予应给脚本添加什么权限?
|
||
x 执行权限
|
||
|
||
3、唯一标识每个用户得是?
|
||
uid和用户名 #uid查看方法:A.id 用户名 B.grep 用户名 /etc/passwd
|
||
|
||
4.在linux系统中,用来存放系统所需要的配置文件和子目录的目录是
|
||
/etc
|
||
|
||
5.结束后台进程命令?
|
||
kill
|
||
|
||
6.在超级用户下显示linux系统中正在运行的全部进程,应使用的命令及参数?
|
||
ps -ef
|
||
|
||
7.为脚本程序指定执行权限的命令和参数是?
|
||
chmod +x 脚本名
|
||
|
||
8.什么命令是删除文件和目录?
|
||
rm
|
||
|
||
9.什么命令是移动文件和目录的命令?
|
||
mv
|
||
|
||
10.增加一个用户得命令是?
|
||
useradd
|
||
adduser
|
||
|
||
11、终止一个前台进程可能用到的命令和操作 A
|
||
A.kill
|
||
B.ctrl+c
|
||
C.shut down
|
||
D.halt
|
||
|
||
12、在使用mkdir 命令创建新的目录时候,在其父目录不存在时 先创建父目录的选项是 D
|
||
A.-m
|
||
B.-d
|
||
C.-f
|
||
D.-p
|
||
|
||
13、一个文件名字为test.tar.gz, 可以用来解压缩的命令是 A
|
||
A.tar
|
||
B.gzip
|
||
C.compress
|
||
D.uncompress
|
||
|
||
14、若一台计算机的内存为 128MB 则交换分区(swap)的大小通常是 C
|
||
A.64MB
|
||
B.128MB
|
||
C.256MB
|
||
D.512MB
|
||
|
||
15、将光盘CD-ROM(hdc)挂在到文件系统的/mnt/cdrom目录下的命令是 C
|
||
A.mount /mnt/cdrom
|
||
B.mount /mnt/cdrom /dev/hdc
|
||
C.mount /dev/hdc /mnt/cdrom
|
||
D.mount /dev/hdc
|
||
|
||
16、有关归档和压缩命令,下面描述正确的是 B
|
||
A.用uncompress命令解压缩由compress命令生成的后缀为.zip的压缩文件(正确答案是.z)
|
||
B.unzip 命令和 gzip 命令 可以压缩相同类型的文件
|
||
C.tar 归档且压缩的文件可以由 Gzip命令压缩
|
||
D.tar 命令归档后的文件也是一种压缩文件
|
||
|
||
17、下列对shell变量FRUIT操作,正确的是 C
|
||
A.为变量赋值: \$FRUIT=apple
|
||
B.显示变量的值: fruit=apple
|
||
C.显示变量的值: echo \$FRUIT
|
||
D.判断变量是否有值:[ -f '$FRUIT']
|
||
|
||
18. 问题1:描述raid0、1、5的特点和优点?
|
||
raid0: 单盘0:一块盘 无冗余 利用率100% 全盘0:至少两块盘 无冗余 利用率100%
|
||
最少需要两块磁盘
|
||
数据条带式分布
|
||
没有冗余(一块坏,数据全丢),性能最佳(不存储镜像、校验信息)
|
||
不能应用于对数据安全性要求高的场合
|
||
raid1: 至少2块盘 有冗余 磁盘利用率50%
|
||
最少需要2块磁盘
|
||
提供数据块冗余
|
||
性能好
|
||
raid5: 最少3块盘 有冗余 有奇偶校验位 磁盘利用率(n-1)/n
|
||
最少3块磁盘
|
||
数据条带形式分布
|
||
以奇偶校验作冗余
|
||
适合多读少写的情景,是性能与数据冗余最佳的折中方案
|
||
问题2:简述raid0、raid1、raid5三种工作模式的工作原理及特点
|
||
raid0:条带卷,利用率100%,相对读写速率最快,相对安全性差.
|
||
raid1:镜像卷,利用率50%,相对读写速率一般,相对安全性高.
|
||
raid5:带奇偶校验的镜像卷,相对读写速率较快,相对安全性高可以添加热备磁盘作为冗余.
|
||
|
||
19.在/etc/fstab文件中指定的文件系统加载参数中, D 参数一般用于CD ROM
|
||
A.defaults
|
||
B.Sw
|
||
C.rw和ro
|
||
D.noauto
|
||
|
||
20.Linux文件权限一共10位长度,分成四段,第三段表示的内容是 C
|
||
A.文件类型
|
||
B.文件所有者的权限
|
||
C.文件所有者所在组的权限
|
||
D.其他用户
|
||
|
||
21.在使用mkdir命令创建新的目录时,在其父目录不存在时先创建父目录的选项 D
|
||
A.-m
|
||
B.-d
|
||
C.-f
|
||
D.-p
|
||
|
||
22.问题1:当前市场中有几种主流的浏览器? (至少列举出3种)。
|
||
firefox chrome chromium opera
|
||
问题2:请写出Linux系统关机命令、重启命令、文件夹赋权命令
|
||
关机
|
||
立即关机
|
||
init 0
|
||
poweroff
|
||
shutdown now
|
||
延迟关机
|
||
shutdown -h +10 #10分钟后关机。
|
||
重启
|
||
立即重启
|
||
init 6
|
||
reboot
|
||
延迟重启
|
||
shutdown -r +10 #10分钟后重启
|
||
赋权
|
||
chmod
|
||
问题3:请写出linux系统挂载分区命令
|
||
mount
|
||
问题4:请写出linux系统查看定时任务命令
|
||
crontab -l
|
||
|
||
23.在Windows操作系统和linux系统中如何查看MAC地址。
|
||
windows
|
||
A.右击右下角'网络'图标->'打开"网络和Internet"设置'->'属性'->最下面找到'物理地址'即可
|
||
B.win+r->输入control->'网络和Internet'->'查看网络状态和任务'->'更改适配器设置'->右击使用的网络->'状
|
||
态'->'详细信息' 即可看到'物理地址'
|
||
linux
|
||
A.ip a
|
||
|
||
24.linux新建一个用户名为oracle的命令为____,为oracle用户设置密码____
|
||
useradd oracle
|
||
echo 'password' | passwd --stdin oracle
|
||
|
||
25.Linux创建/datal/database/oracle(注:/datal目录不存在)目录的命令为____;进入/datal/database/oracle目录
|
||
的命令为____;
|
||
mkdir -p /datal/database/oracle
|
||
cd /datal/database/oracle
|
||
|
||
26.Linux从ip为10.0.4.100远程主机复制/root/script.sh文件到/database/oracle的命令为____
|
||
scp -r 10.0.4.100:/root/script.sh /database/oracle
|
||
|
||
27.请写出在Linux中查看进程中含有oracle关键字的进程信息的命令____;杀死PID为29231的进程的命令为____
|
||
ps aux | grep oracle
|
||
kill -9 29231
|
||
|
||
28.请写出查看Linux磁盘空间装载以及占用情况的命令____;请写出将/dev/sdb文件系统挂载到/data2目录下的命令为____
|
||
df -Th
|
||
mount /dev/sdb /data2
|
||
|
||
29.写出输出数字0到100中3的倍数(0 3 6 9...) 的命令
|
||
#!/usr/bin/bash
|
||
for i in {0..100}
|
||
do
|
||
if [ $(($i % 3 )) -eq 0 ];then
|
||
echo $i
|
||
fi
|
||
done
|
||
|
||
#!/usr/bin/python
|
||
for i in range(0,101):
|
||
if i%3==0:
|
||
print(i)
|
||
|
||
30.假设服务器具有6块900G本地磁盘,单块磁盘io约为150M/S,6块磁盘做成RAID5级别后实际存储大小、理论实际io为多少。
|
||
6块盘做raid5,一块冗余,因为有校验位.所以实际大小为:900*(6-1-1)=3600G
|
||
I/O大小:(6-1-1)*150M/S = 600 M/S 左右
|
||
|
||
31.常见协议端口号
|
||
ftp 20和21
|
||
ssh 22
|
||
telnet 23
|
||
smtp 25 简单邮件传输协议
|
||
dns 53
|
||
dhcp 客户端是以UDP 68服务器是以UDP 67
|
||
tftp 69 文件传输协议
|
||
http(nginx) 80
|
||
pop3 110
|
||
ntp 123
|
||
imap 143
|
||
https 443
|
||
rsynct 873
|
||
Microsoft SQL Server数据库 1433
|
||
squid 3128
|
||
mysql 3306
|
||
Windows操作系统远程桌面 3389
|
||
redis 6379
|
||
tomcat 8080
|
||
|
||
32.简述grep/netstat/sed/awk/sort/wc/tcpdump/tail/ldd/uniq作用:
|
||
grep 过滤
|
||
netstat 检测网络和端口
|
||
sed 流文本编辑工具
|
||
awk 字符处理工具
|
||
sort 排序
|
||
wc 统计
|
||
tcpdump 抓包
|
||
tail 从末尾查看
|
||
ldd 列出程序所需要的动态链接库
|
||
uniq 检查重复行
|
||
|
||
33.Linux查询某文件的路径,指令为?
|
||
find
|
||
|
||
34.raid的类型有?
|
||
raid0 raid1 raid5 raid10
|
||
|
||
35.Linux默认的定时任务,一般写入/etc/下的哪个文件?
|
||
/etc/crontab
|
||
|
||
36.Linux系统统计服务器服务连接数命令?
|
||
以tcp连接数为例
|
||
netstat -an | awk '/tcp/ {print $6}' | sort | uniq -c
|
||
|
||
37.http的错误代码含义
|
||
200 请求成功
|
||
301 永久重定向
|
||
302 临时重定向
|
||
400 客户端问题
|
||
403 权限被拒绝
|
||
404 找不到页面
|
||
500 服务器内部错误
|
||
502 网关错误
|
||
504 网关超时
|
||
|
||
38.请使用awk,sed,grep三个命令,举例写出命令语句
|
||
awk -F':' '{print $1}' filename
|
||
sed -i.bak 's/a/A/' filename
|
||
grep 'hello world' filename
|
||
|
||
39.简述tcp三次握手和四次挥手的过程
|
||
第一次握手:建立连接时,客户端发送syn包到服务器,并进入syn_sent状态,等待服务器确认
|
||
第二次握手:服务器收到syn包,必须确认客户的syn,同时也发送一个syn+ack包,此时服务器进入syn_rcvd状态
|
||
第三次握手:客户端收到服务器的syn+ack包,向服务器发送确认包ack(ack=k+1),此包发送完毕,客户端和服务器进入established状态,完成三
|
||
次握手,客户端与服务器开始传送数据
|
||
第一次挥手: 客户端发送一个FIN数据包给服务器,主动断开连接并告诉服务器。客户端进入FIN_WAIT_1状态。
|
||
第二次挥手: 服务器收到客户端的FIN数据包后,向客户端发送一个ACK数据包,确认收到客户端的数据包,此时服务器进入CLOSE_WAIT状态,客户端进入FIN_WAIT_2状态。
|
||
第三次挥手: 服务器向客户端发送一个FIN数据包并告诉客户端。服务器进入LAST_ACK状态。
|
||
第四次挥手:客户端收到服务器的FIN数据包后,向服务器发送一个ACK数据包,确认服务器的数据包,客户端进入TIME_WAIT状态,服务器进入CLOSED状态。
|
||
|
||
40.进程查看和调度分别使用什么命令?
|
||
进程查看的命令
|
||
ps top
|
||
进程调度的命令
|
||
at crontab kill
|
||
|
||
41.服务器A需要连接服务器B的端口8080,目前登录了的8080端口是否健康运行,可以使用linux命令____
|
||
netstat -ntpl |grep 8080
|
||
ss -anpt | grep 8080
|
||
|
||
42.快速定位当前目录下size最大的文件,命令行为
|
||
du -sk ./* | sort -rn | head -1 | awk '{print $2}'
|
||
#sort -rn 按数字从大到小排序
|
||
|
||
43.如何快速定位catalina.out 日志中最近发生的异常
|
||
tail -f catalina.out
|
||
|
||
44.系统中有一台数据库服务器,发现木马,症状是不定期向外网发包,影响服务器性能现登录该服务器,如何快速找到该木马进程?请写出命令行,并解释原因。
|
||
1、查看异常用户
|
||
cat /etc/passwd
|
||
2、查看异常进程
|
||
ps
|
||
3、查看异常定时任务
|
||
crontab -e 删除异常定时任务
|
||
|
||
45./code/java里面有一系列各种深度的子目录,其中有一个中包含HellWord这个字符,现需要通过一行命令找到该文件,请
|
||
写下命令____
|
||
find /code/java -name '*HellWord*'
|
||
|
||
46.将/usr/local/test目录下大于100k小于500k的文件转移到/tmp目录下
|
||
find /usr/local/test -size +100k -a -size -500k -a type f -exec mv -r {} /tmp \;
|
||
|
||
47.新增一个禁止登录的用户
|
||
useradd -s /sbin/nologin 用户名
|
||
|
||
48.如何安装软件
|
||
1、使用yum安装
|
||
2、用rpm安装
|
||
3、二进制方式安装
|
||
4、编译安装
|
||
|
||
49.、如何查看系统都开启了哪些端口
|
||
ss -anpt
|
||
netstat -auntpl
|
||
lsof
|
||
|
||
50.如何查看当前系统都有哪些进程
|
||
ps
|
||
top
|
||
lsof
|
||
|
||
51.获取tomcat pid 并杀掉进程
|
||
方法1:
|
||
ps aux|grep tomcat #获取进程id
|
||
kill -9 进程id
|
||
方法2:
|
||
pkill -9 tomcat
|
||
|
||
52.如何查看命令的具体使用方法
|
||
方法1:
|
||
命令 --help
|
||
eg : ps --help
|
||
方法2:
|
||
man 命令
|
||
eg: man ps
|
||
|
||
53.使用find命令删除/data/web下的所有.svn的文件
|
||
find /data/web -name "*.svn" -a type f -exec rm -rf {} \;
|
||
|
||
54.使用sed将文件file.txt中test替换为abc.com写出命令
|
||
sed -i 's/test/abc.com/g' file.txt
|
||
|
||
55.*/2 10 1 6 1 /sur/sbin/ntpdata ntp.api.bz 描述该语句功能
|
||
6月1号或周一的时候10点每隔两分钟 向ntp.api.bz 同步一次时间
|
||
|
||
56.写出linux系统开机的启动顺序
|
||
A.加电
|
||
B.BIOS初始化
|
||
C.引导管理器加载
|
||
D.内核引导
|
||
E.init进程启动
|
||
F.运行级别确定
|
||
G.启动服务
|
||
H.登录管理器启动
|
||
|
||
57.写一个脚本查找最后创建时间是3天前,后缀是*.log的文件并删除。
|
||
find / *.log -mtime +3 -a type f -exec rm -rf {} \;
|
||
|
||
58.被植入代码有哪些特点,怎样快速找到被植入的木马
|
||
可能定时执行,破坏系统文件
|
||
|
||
如何快速找到:
|
||
查看系统日志
|
||
查看系统用户
|
||
查看进程是否有异常进程
|
||
查看定时任务是有异常
|
||
|
||
59.问题1:由于磁盘空间紧张,如何找出哪些文件占用了大量的磁盘空间?
|
||
du -sh * | sort -r | awk '{print $1,$2}'
|
||
问题2:如何实现每周一下午三点将/tmp/logs目录下后缀为*.log的所有文件打包成'年月日-log-back.tar.gz',并由
|
||
rsync同步到备份服务器192.168.1.100中同样的目录下面?
|
||
vim /tmp/1.sh
|
||
#!/usr/bin/bash
|
||
date=$(date +%F_%T)
|
||
bak_filename="${date}-log-back.tar.gz"
|
||
tar czf /tmp/"$bak_filename" /tmp/log/*.log
|
||
rsync -av /tmp/"$bak_filename" root@192.168.1.100:/tmp/log/
|
||
chmod +x /tmp/1.sh
|
||
crontab -e(注意:时间格式须是cst)
|
||
0 3 * * 1 sh /tmp/1.sh
|
||
|
||
60.linux操作系统支持的文件系统类型是?
|
||
ext4
|
||
xfs
|
||
|
||
61.创建一个每周三1:00-4:00每三分钟执行一次的crontab指令。
|
||
crontab -e
|
||
*/3 1-4 * * 3 命令
|
||
|
||
62.删除文件名中含有2017关键字的文件?
|
||
rm -rf *2017*
|
||
|
||
63.进行字符串查找,使用什么命令?
|
||
grep
|
||
sed
|
||
awk
|
||
|
||
64.如何临时、永久关闭linux防火墙?
|
||
systemctl stop firewalld (重启失效)
|
||
systemctl disable firewalld(永久关闭)
|
||
|
||
65.将普通用户user加入到root组
|
||
gpasswd -a user root
|
||
|
||
66.使用rpm命令安装、卸载ntp-0.7.12.x86_64.rpm这个包。
|
||
rpm -ivh ntp-0.7.12.x86_64.rpm
|
||
rpm -e ntp-0.7.12.x86_64.rpm
|
||
|
||
67.linux系统中如何获取pid为1000的进程所监听的tcp端口,请写出详细命令?
|
||
ss -anpt | grep 1000 | awk '{print $4}' | awk -F ':' '{print $2}'
|
||
|
||
68.如何退出vim编辑器
|
||
:q :q! :wq (保存推出)
|
||
|
||
69.linux系统中结束后台进程的命令
|
||
通过ps命令查看进程号PID, 然后执行 kill %PID
|
||
通过jobs命令查看jobnum, 然后执行 kill %jobnum
|
||
|
||
70.在linux中压缩文件后生成后缀为.gz文件的命令是?
|
||
tar -czf 文件.tar.gz 文件
|
||
|
||
71.什么命令可以移动文件和目录,还可以为文件和目录重命名。
|
||
mv
|
||
|
||
72.linux系统在今晚23:00关机
|
||
shutdown -h 23 :00
|
||
|
||
73.搜索文件命令:
|
||
find 路径 -name 文件名
|
||
|
||
74.创建目录gpowe命令
|
||
mkdir gpowe
|
||
|
||
75.删除目录gpowe命令
|
||
rm -rf gpowe
|
||
|
||
76.在vi编辑器中的命令模式下,键入____可在光标当前所在行下添加一新行。
|
||
o
|
||
|
||
77.使用什么命令可以关闭linux系统?
|
||
shutdown
|
||
init 0
|
||
|
||
78./etc/fstab文件的作用是什么?
|
||
系统自动挂载的文件
|
||
|
||
79.显示已经 挂载的文件系统磁盘inode使用状况的命令是?
|
||
df -i
|
||
|
||
80.假设文件fileA的符号链接为fileB,那么删除fileA后,下面描述正确的是 B
|
||
A.fileB也随之删除
|
||
B.fileB仍存在,但是属于无效的文件
|
||
C.因为fileB未被删除,所以fileA会被系统自动重新新建立
|
||
D.fileB会随fileA的删除而被系统自动删除
|
||
|
||
81.改变文件所有者的命令? C
|
||
A.chmod
|
||
B.touch
|
||
C.chown
|
||
D.cat
|
||
|
||
82.在给定文件中查找与设定条件相符字符串的命令为 A
|
||
A.grep
|
||
B.gzip
|
||
C.find
|
||
D.sort
|
||
|
||
83.若要将当前目录中的myfile.txt文件压缩成myfile.txt.tar.gz,则实现的命令为?
|
||
tar -czf myfile.txt.tar.gz myfile.txt
|
||
|
||
84.存放linux基本命令的目录是什么?
|
||
/bin
|
||
|
||
85.若在文字界面下,需要键入何种指令才能进入图形界面(Xwindow)? B
|
||
A.reboot
|
||
B.start x
|
||
C.start window
|
||
D.get into
|
||
|
||
86.在linux中,要查看文件内容,可用什么命令?
|
||
cat filename
|
||
vi filename
|
||
|
||
87.字符界面下使用shutdown命令重启计算机时所用的参数?
|
||
shutdown -r +n #n为阿拉伯数字 代表n分钟后重启
|
||
|
||
88.cd命令可以改变用户的当前目录,当用户键入命令cd并按Enter键后 C
|
||
A.当前目录改为根目录
|
||
B.当前目录不变,屏幕显示当前目录
|
||
C.当前目录为用户主目录
|
||
D.当前目录为上一级目录
|
||
|
||
89.在linux系统添加新用户的命令是?
|
||
useradd username
|
||
adduser username
|
||
|
||
90.添加用户时使用____可以指定用户目录
|
||
useradd -d 用户目录
|
||
|
||
91.修改用户自身的密码可使用?
|
||
root passwd
|
||
其他用户 passwd 用户名
|
||
|
||
92.设计用户所使用的计算机系统上有两块IDE硬盘,linux系统位于第一块硬盘上,查询第二块硬盘的分区情况命令是?
|
||
fdisk -l /dev/hdb
|
||
|
||
93.统计磁盘空间或文件系统使用情况的命令是?
|
||
df -h
|
||
|
||
94.用于文件系统直接修改文件权限管理命令为?
|
||
chmod
|
||
|
||
95.若使pid进程无条件终止使用的命令是?
|
||
kill -9
|
||
|
||
96.显示系统主机名的命令是?
|
||
uname -n
|
||
hostname
|
||
|
||
97.查询已安装软件dhcp内所含文件信息的命令是?
|
||
rpm -ql dhcp
|
||
|
||
98.linux服务器发生可故障,使用df命令查看到某目录下有剩余空间,但无法创建文件,可能的原因是什么?
|
||
可能由于磁盘的inode分配完了,导致提示磁盘满
|
||
|
||
99.有一个普通用户想在每日凌晨零点零分定期备份/user/backup到目录下,该用户应如何做?
|
||
0 0 * * * cp -r filename /user/backup
|
||
|
||
100.以下文件中,只有root用户才能存取的是? BC
|
||
A.passwsd
|
||
B.shadow
|
||
C.group
|
||
D.password
|
||
|
||
101.在/home目录下查找文件名为.Profile的文件,找到后删除
|
||
find /home -name "*.Profile" -exec rm -rf {} \;
|
||
|
||
102.将test.tar.gz文件解压缩
|
||
tar xf test.tar.gz
|
||
|
||
103.创建一个用户,名为user02,所属私有组个标准组为sthff,用户家目录为/home/user2,用户登录shell为/bin/bash
|
||
useradd -s /bin/bash -d /home/user2 -G sthff
|
||
|
||
104.赋予所有用户读和写backup.tar.gz文件的权限
|
||
chmod 666 backup.tar.gz
|
||
|
||
105.请描述下列路径的内容是做什么?
|
||
/var/log/messages 存放的是系统的日志信息,它记录了各种事件,基本上什么应用都能往里写日志,在做故障诊断时可
|
||
以首先查看该文件内容
|
||
/var/log/secure 一般用来记录安全相关的信息,记录最多的是哪些用户登录服务器的相关日志,如果该文件很大,说
|
||
明有人在破解你的root密码
|
||
/var/spool/clientmqueue 是如果系统中有用户开启了cron,而cron中执行的程序有输出内容,输出内容会以邮件形式
|
||
发给cron的用户,而sendmail没有启动所以就产生了这些文件
|
||
/proc/interrupts 列出当前所以系统注册的中断,记录中断号,中断发生次数,中断设备名称
|
||
/etc/profile 记录环境变量 、开机自启动内容
|
||
|
||
106.Linux操作系统查看/etc/passwd文件前10行的命令为
|
||
head -10 /etc/passwd
|
||
|
||
107.将前10行追加到/etc/passwd_new文件结尾的命令是
|
||
head -10 /etc/passwd >> /etc/passwd_new。
|
||
|
||
108.计划每星期天早上8点服务器定时重启,如何实现?
|
||
# crontab -e
|
||
0 8 * * 0 reboot
|
||
|
||
109.问题1:ps aux中的VSZ代表什么意思?RSS代表什么意思?
|
||
VSZ:虚拟内存集,进程占用的虚拟内存空间
|
||
RSS:物理内存集,进程占用实际物理内存空间.
|
||
|
||
问题2:USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND PR NI VIRT RES SHR S
|
||
USER 运行进程的用户
|
||
PID 进程ID
|
||
%CPU CPU利用率
|
||
%MEM 内存利用率
|
||
VSZ(VIRT) 虚拟内存集
|
||
RSS(RES) 物理内存集
|
||
TTY 运行终端
|
||
STAT(s) 进程状态
|
||
START 进程的启动时间
|
||
TIME 进程占用CPU的总时间
|
||
COMMAND 命令行
|
||
PR 优先级
|
||
NI Nice值
|
||
SHR 共享内存大小
|
||
|
||
110.请简要描述Linux系统下源代码编译方式安装软件的大致步骤
|
||
1.部署基础环境:关闭防火墙; 关闭selinux; 安装编译器
|
||
2.下载、解压软件包
|
||
3、配置安装路径
|
||
4、编译
|
||
5、安装
|
||
|
||
111.保存当前磁盘分区的分区表,dd命令是个强大的命令,在复制的同时进行转换,请写出具体命令
|
||
dd if=/dev/sda of=./mbr.txt bs=1M count=512
|
||
|
||
112.如何关闭swap分区
|
||
swapoff -a #关闭所有的交换分区
|
||
swapoff /dev/sde #关闭sde交换分区
|
||
|
||
113.问题1:Linux操作系统启动服务名为kstoredb_NODEDBd的命令为?
|
||
systemctl start kstoredb_NODEDBd
|
||
问题2:Windows系统启动服务名为kstoredb_NODEDBd的命令为:
|
||
net start kstoredb_NODEDBd
|
||
|
||
114.ftp常用的两种模式
|
||
主动模式
|
||
ftp客户端连接到服务器的21端口,登陆成功后客户端随机开放端口(1024以上),发送port到服务器并告诉服务器采用
|
||
主动模式和端口号。服务器收到port命令后,通过20端口与客户端开发的端口进行连接。
|
||
被动模式
|
||
ftp客户端连接到服务器的21端口,登录成功后发送pasv命令到服务器,服务器随机开放端口(1024以上),将开放端口
|
||
告诉客户端,客户端连接到服务器开放的端口
|
||
|
||
115.升级安装vsftpd
|
||
yum -y install vsftpd
|
||
yum upgrade vsftpd(yum -y update vsftpd)
|
||
|
||
116.配置一台匿名ftp服务,应该修改那个文件
|
||
/etc/vsftpd/vsftpd.conf
|
||
|
||
117.AB网络是通的,最少列出三种传输文件服务?
|
||
scp
|
||
rsync
|
||
ftp
|
||
|
||
118.简述网络文件系统NFS,并说明其作用
|
||
A.NFS是应用层服务,主要用于文件或目录的共享
|
||
B.NFS使客户端可以像读取本地文件一样访问远程服务器上的文件且客户端无需登录操作
|
||
|
||
119.一次写出osi七层模型 TCP/IP4层(OSI的2347层)
|
||
物理层
|
||
数据链路层
|
||
网络层
|
||
传输层
|
||
会话层
|
||
表示层
|
||
应用层
|
||
|
||
120.找出/usr/local/apache2/logs中三天前以sd-360开头并以日期结尾的log并删除。
|
||
find / -mtime +3 -type f -a -name "sd-360*"" -exec rm {} -f \;
|
||
|
||
121.apache如何修改配置参数,将默认端口改为非默认端口。
|
||
vim /etc/httpd/conf/httpd.conf
|
||
Listen 80将其改为Listen n 即可 #不可与其它服务端口重复
|
||
sytemctl restart httpd
|
||
|
||
122.通过访问日志access. log统计每个ip地址的访问次数,按访问量列出前10名。日志格式样例如下
|
||
192.167.1.250 [02/Ju1/2010:23:44:59 +0800] “GET / HTTP/1.1”200 19
|
||
192.167.1.247 [02/Ju1/2010:23:44:59 +0800] “GET / HTTP/1.1”200 19
|
||
192.167.1.247 [02/Ju1/2010:23:44:59 +0800] “GET / HTTP/1.1”200 19
|
||
192.167.1.247 [02/Ju1/2010:23:44:59 +0800] “GET / HTTP/1.1”200 19
|
||
|
||
awk '{print $1}' access.log | sort |uniq -c |sort -r | head -10
|
||
|
||
123.某网站页面上的应展示图片和一些动态内容的一个展示框变为黑色,网站其他部分正常,可能的原因是什么?
|
||
网站页面源码的静态资源路径问题。
|
||
|
||
124.某日志路径 是/data/logs/a.txt. 如何跟踪该日志,以查看当时的运行状况?
|
||
tailf /data/logs/a.txt
|
||
|
||
125.apache和nginx的主配置文件是什么?
|
||
apache:/etc/httpd/conf/httpd.conf
|
||
nginx: /etc/nginx/nginx.conf
|
||
|
||
126.已知apache服务的访问日志按天记录在服务器本地目录/app/logs下,由于磁盘空间紧张,现在要求以后只能保留最近7天访问日志!请问如何解决
|
||
find /app/logs -type f -name "access*.log" -mtime +7 exec rm –f {} \;
|
||
|
||
127.apache在linux系统上安装的步骤和命令
|
||
yum install -y httpd
|
||
systemctl start httpd
|
||
|
||
128.配置Apache服务器需要修改的配置文件为 A
|
||
A.httpd.conf
|
||
B.access.conf
|
||
C.srm.conf
|
||
D.named.conf
|
||
|
||
129.nginx服务器的配置文件是?
|
||
/etc/nginx/nginx.conf
|
||
|
||
130.Apache如何修改配置参数,将默认端口改为非默认端口
|
||
vim /etc/httpd/conf/httpd.conf
|
||
Listen port
|
||
systemctl restart httpd
|
||
|
||
131.MySQL创建数据库的命令,创建表的命令,插入语句的命令
|
||
create database dbname character set 'utf8';
|
||
create table tname(id int);
|
||
insert into tname values(1);
|
||
|
||
132.关于DNS,下列说法错误的是 C
|
||
A.DNS,全称Domain Name System,即域名解析系统
|
||
B.DNS协议运行在UDP协议之上。
|
||
C.只有基于类Linux, Unix操作系统的服务器,才可以安装DNS服务器端软件
|
||
D.域名的最终指向是IP地址。
|
||
|
||
133.列举你所知道的域名解析记录类型
|
||
A
|
||
CAA
|
||
AAAA
|
||
MX
|
||
NS
|
||
SRV
|
||
TXT
|
||
CNAME
|
||
|
||
134.简述DNS进行域名解析的过程
|
||
输入网址 发出DNS请求 查看本地解析 逐级查找 找到后返回界面
|
||
|
||
135.简述DNS和DHCP的功能
|
||
DNS提供域名解析服务
|
||
DHCP提供动态ip分配
|
||
|
||
136.修改内核参数
|
||
vim /etc/sysctl.conf
|
||
sysctl -p
|
||
|
||
137.在1-39内取随机数
|
||
echo $[$RANDOM % 40]
|
||
|
||
138.如何用ansible获取远程服务器10.10.125.125的时间(环境配置已完成)
|
||
ansible 10.10.125.125 -m shell -a 'date'
|
||
|
||
139.你公司中将/var/www/html/data的文件,定期备份到192.168.90.11(centos系统)下的/var/backup下目录,请用简单的shell实现。
|
||
crontab -e
|
||
scp -r /var/www/html/data 192.168.90.11:/var/backup
|
||
|
||
140.只写一个命令,修改/tmp/input.txt文件内容要求:
|
||
问题1:删除所有空行
|
||
sed -ri '/^[ \t]*$/d' /tmp/input.txt
|
||
问题2:如果一行中包含‘11111’ ,则在前面插入‘AAA’,在后面插入‘BBB’如: 000AAA1111111BBB2222.
|
||
sed -ri 's/1111/AAA&/;s/1111/&BBB/' /tmp/input.txt
|
||
|
||
141.在bash shell 中 $0,$1,$?,$#,$*,$@分别代表什么?
|
||
$0 脚本名
|
||
$1 第一个参数
|
||
$* 所有的参数
|
||
$@ 所有的参数
|
||
$# 参数的个数
|
||
$$ 当前进程的PID
|
||
$! 上一个后台进程的PID
|
||
$? 上一个命令的返回值 0表示成功
|
||
|
||
142.正则表达式^d+[^d]+ 能匹配下列哪个字符: BC
|
||
A.12
|
||
B.dd12s
|
||
C.d123
|
||
D.d12d
|
||
|
||
143.在shell中变量的赋值有四种方法,其中name=12的方法称?
|
||
直接赋值
|
||
|
||
144.一个bash shell脚本的第一行是什么?
|
||
命令解释器
|
||
|
||
145.文件A.txt内容为‘12:34:56’ ,只输出A.txt中的34
|
||
awk -F":" '{print $2}' A.txt
|
||
|
||
146.用sed修改test.txt的23行test为tset
|
||
sed –i ‘23s/test/tset/g’ test.txt
|
||
---
|
||
147./usr/local/nginx/bin/nginx怎么样不打开文件 删掉空格和注释
|
||
---
|
||
|
||
148.已知表:
|
||
Create Table Department(
|
||
dept_ id varchar(2) not null, --部门编号
|
||
dept_ name varchar(20) not null, -- 部门名称
|
||
dept_ leader varchar(10) - 部门经理
|
||
|
||
Create Table Personnel(
|
||
id varchar(4) not null, --员工号
|
||
name varchar(10) not null, -姓名
|
||
dept id varchar(2) not null, -部门编号
|
||
age integer, -- 年龄
|
||
gzsj date, -- 参加工作时间
|
||
technical post varchar(10), 一职称
|
||
salary integer - 薪水
|
||
)
|
||
|
||
问题1:Department 增加一列字段notes,长度为10的字符串,默认值为‘0’ ,请写出相关SQL语句
|
||
alter Department add notes varchar(10) not null default 0;
|
||
问题2:查找工资大于2000元的员工记录,并按员工号id升序排列
|
||
select * from Personnel where salary > 2000 order by id;
|
||
问题3:查找工资大于2000元的员工所在部门、部门编号、部门经理、员工名称
|
||
select D.dept_name,D.dept_leader,D.dept_id,P.name from Personnel P left join Department D on
|
||
D.dept_id = P.dept_id where P.salary > 2000;
|
||
|
||
149.写出mysq数据库备份数据使用的命令
|
||
mysqldump
|
||
|
||
150.从A表中查询出字段B等于1的集合总数,通常我们用的SQL语句为?
|
||
select count(*) from a where b = 1;
|
||
|
||
151.写出mysql备份Db_test,Db_test2这两个库命令
|
||
mysqldump -uroot -proot --databases Db_test,Db_test2 >/tmp/user.sql
|
||
|
||
152.写出mysql更改root用户密码命令
|
||
set password for root@localhost = password('新密码');
|
||
|
||
153.mysql给新用户newuser赋予select\insert\delete 权限访问new_test库,只允许192.168.0.0/24网段访问,然后
|
||
回收delete权限。
|
||
grant select,insert,delete ON new_test to newuser@'192.168.0.*';
|
||
revoke delete ON new_test to newuser@‘192.168.0.*’;
|
||
|
||
154.如何产看mysql当前支持的存储引擎?
|
||
show engines;
|
||
|
||
155.包含主机名到ip地址的映射关系的文件是?
|
||
/etc/hosts
|
||
|
||
156.202.106.100.1是何类地址?
|
||
C类
|
||
|
||
157.当IP地址的主机地址全为1时表示?
|
||
对于该网络的广播地址
|
||
|
||
158.路由器的主要功能是?
|
||
选择信息包传送的最佳路径
|
||
|
||
159.问:显示CPU利用率的命令,查看系统版本的命令
|
||
CPU利用率的命令
|
||
top
|
||
sar -u
|
||
uptime
|
||
查看系统版本的命令
|
||
cat /etc/redhat-release
|
||
uname -a
|
||
|
||
160.问:找出/home下所有7天以前,以.ok结尾的文件列
|
||
find /home -name "*.ok" -mtime +7
|
||
#天数(+n n天前 -n n天之内)
|
||
-mtime modify 改变时间 #修改文件内容时间才会发生改变
|
||
-ctime change 修改时间 #修改文件名、权限时间才会发生改变
|
||
-atime access 访问时间 #cat/tail/head等操作会使时间发生改变
|
||
#分钟(+n n分钟前 -n n分钟后)
|
||
-amin 访问时间
|
||
-mmin 改变时间
|
||
-cmin 修改时间
|
||
|
||
161.问:快速生成一个10G的文件
|
||
dd if=/dev/zero of=test bs=1G count=10
|
||
|
||
162.问:列出Linux常见打包工具并写相应解压缩参数(至少三种)
|
||
压缩打包命令:
|
||
tar -czf filename.tar dirname
|
||
zip filename.zip dirname
|
||
gzip filename
|
||
bzip2 -z filename
|
||
解压包命令:
|
||
tar -xf filename.tar
|
||
unzip filename.zip
|
||
gzip -d filename.gz
|
||
bzip2 -d filename.bz2
|
||
|
||
163.标准端口的范围是?
|
||
1-65535
|
||
|
||
164.如何检查Selinux是否开启?
|
||
getenforce
|
||
|
||
165.检查服务器是否正常工作的最好办法是?
|
||
ping 服务器ip
|
||
ss -antul | grep 服务端口
|
||
ps aux | grep 服务名
|
||
systemctl status 服务名
|
||
|
||
166.Linux记录log的服务叫什么名字?
|
||
rsyslog
|
||
|
||
167.ping命令通过什么协议(internet控制信息协议)来实现?
|
||
icmp
|
||
|
||
168.计划任务在11月份,每天早上6点到12点中,每隔2小时执行一次/usr/bin/httpd.sh怎么实现?
|
||
0 06-12/2 * 11 * bash /usr/bin/httpd.sh
|
||
|
||
169.请写下Linux系统中cron定时任务,每天07至23点,每隔半小时执行apache重启
|
||
crontab-e
|
||
*/30 07-23 * * * systemctl restart httpd &>/dev/null
|
||
|
||
170.(计划任务)每五分钟pingwww.wanmel.com100次将错误和正确的输出覆盖到/root/network.log
|
||
*/5 * * * * ping -c 100 www.wanmel.com &>/root/network.log
|
||
|
||
171./var/www/html/是网站的发布目录,如何每天凌晨0点30分对其进行自动备份,每次备份成按时间生成不同的备份包,写
|
||
出操作步骤?
|
||
30 0 * * * tar -zcf `date +\%Y\%M\%D`.html.tar.gz /var/www/html
|
||
|
||
172.计划每星期天早8点服务器定时重启,如何实现?
|
||
0 8 * * 7 reboot
|
||
|
||
173.apache如何修改配置参数,将默认端口改为非默认端口
|
||
vim /etc/httpd/conf/httpd.conf
|
||
Listen 80改成想要的端口
|
||
保存 重启服务
|
||
|
||
174.修改ssh服务端端口:
|
||
vim /etc/ssh/sshd_config
|
||
/Port查找端口行,删除#,将22修改为目标端口
|
||
systemctl restart sshd
|
||
|
||
175.Linux shell中单引号,双引号及不加引号的简单区别
|
||
单引 直接输出单引内的内容
|
||
双引 先获取双引内的变量或命令的值再输出
|
||
不加引号 直接输出
|
||
|
||
176.请说出以下符号在bashshell中的意义:$0、$n、$#、$?、$*、$$、$(#aa)
|
||
$0 当前读取内容
|
||
$n 位置变量
|
||
$# 参数个数上一语句的返回值
|
||
$? 布尔值
|
||
$* 所有参数
|
||
$$ pid
|
||
$(#aa) $(#aa)的意思是将aa作为命令执行,并返回其输出的行数。
|
||
|
||
177.统计/var/log下文件(非目录)的个数
|
||
find /var/log -type f | wc-l
|
||
|
||
178.请写MYSQL数据库中的SQL查询,查找customer表中uid列内大于100的记录并以uid排序,正序输出前10条记录
|
||
select * from customer where uid>100 order by uid asc limit 10;
|
||
|
||
179.使用sql语句创建、删除数据库db_test?查询数据库列表的sql语句
|
||
创建:create database db_test;
|
||
查询:use db_test;
|
||
showtables;
|
||
select * from 表名; #查内容
|
||
drop database db_test;
|
||
|
||
180.用一条命令创建/tmp/bt.txt并把helloworld写入bt.txt里
|
||
echo "hello world" > /tmp/bt.txt
|
||
|
||
181.凌晨1:59删除/bt目录下的全部子目录和子文件用crontab计划任务写
|
||
crontab -e
|
||
59 1 * * * rm -rf /bt/*
|
||
|
||
182.某一天突然发现Linux系统文件只读,该怎么办呢?完整操作步骤。
|
||
首先把系统关机
|
||
然后以光盘启动进入救援模式(linuxrescue),执行"fsck.ext3 -y /dev/sda2"(假如只读的分区类型为ext3,分区为
|
||
/dev/sda2)
|
||
|
||
183./mnt目录主要用于什么?/root目录跟root用户有什么关系?/根目录与/boot目录有什么联系?
|
||
/mnt主要用来挂载外部设备
|
||
/root根目录是root用户的家目录
|
||
/boot目录是/根目录的子目录
|
||
|
||
184.某一天误操作,执行了rm -rf /*,会有哪些情况发生?请举例。
|
||
文件被彻底删除,很难恢复.
|
||
严重点系统瘫痪,数据全部丢失
|
||
|
||
185.在/tmp/目录下创建test.txt文件,内容为:Hello,World!,用一个命令写出来。
|
||
echo "Hello,World" > /tmp/test.txt
|
||
|
||
186.给test.txt文件除所有者之外增加执行权限,最终以数字写出文件的权限。
|
||
chmod 655 test.txt
|
||
##普通文件默认权限为655
|
||
|
||
187.用vim命令编辑test.txt,如何跳转到末行,首行、行首、行末,如何在光标行下行插入,如何复制5行,删除10行,查找dear
|
||
的字符、把dear替换为dear.com
|
||
末行:G
|
||
首行:gg
|
||
行首:^
|
||
行尾:$
|
||
光标下插入一行:o
|
||
复制5行:5yy(包括当前行)
|
||
删除10行:10dd(包括当前行)
|
||
替换::%s/dear/dear.com/g
|
||
|
||
188.查找linux系统下以.txt结尾,30天没有修改的文件大小大于20K同时具有执行权限的文件并备份到/data/backup/目录
|
||
下。
|
||
find / -name "*.txt" -mtime +30 -a -type f -a -size +20k -a -perm 655 -exec cp -r {}
|
||
/data/backup/ \;
|
||
|
||
189.当前test.txt所属的用户为root,组为abc,请将test.txt使拥有者为abc,组为root,写出命令。
|
||
方法1:
|
||
chown abc.root test.txt
|
||
方法2:
|
||
chown abc test.txt chgrp root test.txt
|
||
|
||
190.每次开机在/tmp目录下创建一个当天的的日期文件夹(提示:当前日期表示的方法为:`date +%Y%M%D`)
|
||
vi /etc/rc.local
|
||
mkdir -p /tmp/`date +%Y%M%D`
|
||
chmod 777 /etc/rc.d/rc.local
|
||
|
||
191.如何查看文件内容,命令有哪些?查看文件第1行到3行,查看文件最后一行。
|
||
cat more less
|
||
方法1:
|
||
sed '1,3p' test.txt
|
||
方法2:
|
||
head -3 test.txt,
|
||
最后一行:tail -1 test.txt
|
||
|
||
192.查看linux服务器IP的命令,同时只显示包含ip所在的行打印出来。
|
||
ifconfig | grep "inetaddr:"
|
||
|
||
193.将普通用户test加入root组的命令是?
|
||
usermod -G root test
|
||
|
||
194.请写出568A与568B的线序
|
||
568A线序排列:白绿、绿、白橙、蓝、白蓝、橙、白棕、棕。
|
||
568B线序排列:白橙、橙、白绿、蓝、白蓝、绿、白棕、棕。
|
||
|
||
195.linux系统中如何获取pid为100的进程所监听的tcp端口,请给出详细命令?
|
||
netstat -nlp | grep 100
|
||
|
||
196.删除/app/logs目录下7天前的日志
|
||
find /app/logs -mtime +7 -exec rm -rf {} \;
|
||
|
||
197.如何配置linux机器免密码登录?请写具体命令
|
||
两台先关闭防火墙
|
||
A主机
|
||
ps -ef | grep sshd
|
||
ssh-keygen
|
||
ssh-copy-id ip地址
|
||
ps -ef | grep sshd
|
||
ssh ip地址 date
|
||
配置好了A机登录B机不需要密码的方式。
|
||
|
||
198.请写出一条命令,将当前目录中创建时间超过七天的文件压缩成gz格式
|
||
find / -ctime +7 -exec gzip {} \;
|
||
|
||
199.问:如何在命令行查看一台linux机器的cpu、内存、SWAP分区信息?
|
||
查看CPU:
|
||
cat /proc/info
|
||
内存:
|
||
free -m
|
||
分区信息:
|
||
cat /proc/swaps
|
||
|
||
200.查看服务器当前正在连接IP列表的命令是?
|
||
netstat -an 查看所有信息用:top
|
||
|
||
201.Linux查看文件的命令是:
|
||
cat 由第一行开始显示内容,并将所有内容输出
|
||
tac 从最后一行倒序显示内容,并将所有内容输出
|
||
more 根据窗口大小,一页一页的现实文件内容
|
||
less 和more类似,但其优点可以往前翻页,而且进行可以搜索字符
|
||
head 只显示头几行 tail 只显示最后几行
|
||
nl 类似于cat -n,显示时输出行号 tailf 类似于tail -f
|
||
grep 针对文件内容进行过滤
|
||
|
||
202.修改完文件后,保存修改并退出的命令是
|
||
:wq!
|
||
|
||
203.打印当前工作目录的Linux命令是
|
||
pwd
|
||
|
||
204.用于当前扩展逻辑卷大小的命令分别是
|
||
lvextend -L 磁盘容量(+5G) -n /dev/卷组名(haha)/逻辑卷名(lv1) #在lv1逻辑卷原有容量上在加5G
|
||
lvextend -L 磁盘容量(5G) -n /dev/卷组名(haha)/逻辑卷名(lv1) #将lv1逻辑卷容量设为5G
|
||
|
||
205.请用Liunx命令行实现:查看/var/log目录下文件数:
|
||
ls /var/log/ | wc -l
|
||
|
||
206.Linux文件系统XFS格式,应该选择哪种分区?
|
||
若处理大量数据,且需存储持久化,那么ext4或XFS可能是最好的选择
|
||
若日常使用,且更关注文件系统的速度,那么ext2或ext3可能更适合
|
||
若需更好的多媒体支持,那么FAT更合适。
|
||
|
||
|
||
207.14日下午2点 date +%Y%M%D%H%M输出的时间是什么?
|
||
18年10月14日2点10分
|
||
|
||
208.能够查看储存空间的命令是?
|
||
df
|
||
|
||
209.查看文件修改时间指令
|
||
stat
|
||
|
||
210.查看文件最后10行内容
|
||
tali
|
||
|
||
211.实时查看日志文件:
|
||
tali -f
|
||
|
||
212.列出/etc/init.d/file文件中包含save字段的行:
|
||
cat /etc/init.d/file | grep save
|
||
|
||
213.用crontab每两个小时执行/data/scripts/back.sh脚本的语句:
|
||
crontab -e
|
||
0 */2 * * * /data/scripts/back.sh
|
||
|
||
214.分别在CnetOS6和CentOS7下,查看nginx服务的工作状态,并设置为开启自动启动:
|
||
Centos6-->service nginx status
|
||
Centos7-->systemctl status nginx
|
||
|
||
215.如何查看当前登陆用户?同时知道自己使用的账户名?
|
||
w
|
||
|
||
216.如何删除当前目录(包含子目录)下所有30天以前创建的文件名后缀为.log的文件?
|
||
find ./ -mtime -30 -name '*.log' -exec rm -rf {} \;
|
||
|
||
217.有两分区sda2和sda3(都已使用过,未挂载),sda2做成交换分区并激活,sda3做成xfs文件系统,挂在/tmp/sda3上,请写
|
||
出详细步骤
|
||
mkswap /dev/sda2
|
||
mkfs.xfs -f /dev/sda3
|
||
vim /etc/fstab
|
||
/dev/sda2 swap swap default 0 0
|
||
/dev/sda3 /tmp/sda3 xfs defaults 0 0
|
||
Mount -a
|
||
Swapon -a
|
||
df -Th和swapon -s #查看
|
||
|
||
218.将/home/data/wwwroot目录做归档压缩,压缩后生成webs.tar.gz文件,并将此文件保存到/home目录下,实现此任务的
|
||
tar命令___。
|
||
cd /home
|
||
tar -czf webs.tar.gz /data/wwwroot
|
||
|
||
219.怎么给文件/etc/passwd加上不可更改属性,从而防止非授权用户获得
|
||
chattr +i /etc/passwd 同时,创建一个普通登录用户,并取消直接root登录
|
||
useradd 'username'
|
||
passwd 'username'
|
||
vi /etc/ssh/sshd_config
|
||
PermitRootLogin no #取消root直接远程登录
|
||
其实,执行上面的chattr +i命令时,已经把这个文件都变成不可写的了,就算看了文件属性上写的是root用户可读写,此
|
||
文件还是无法被root用户写。所以如果想添加新用户,必须先把这个文件上的限制减掉
|
||
|
||
220.下的www.文件权限改为只有主用户有读取权限的有 A
|
||
A.chmod 400 /www
|
||
B.chmod 001 /www
|
||
C.chmod
|
||
D.chmod a-x,g-x,u-x /www
|
||
|
||
221.看内存使用率,CPU负载,I/O,磁盘使用率及这台服务器上的应用监控以Nginx为列查看其端口是否开启。
|
||
内存使用率:free -m | awk '/Mem/{print $3/$2*100"%"}'
|
||
CPU负载:vmstat |awk '{if(NR==3)print $15"%"}'
|
||
I/O使用率:iostat -xk|awk '/^[vs]/{print $1,"\t"$NF"%"}'
|
||
磁盘使用率:df -h|awk '/^\/dev/{print $1"\t"$5}'
|
||
Nginx端口是否开启:ss -antp |grep nginx
|
||
|
||
222.____命令可删除文件或目录
|
||
rm
|
||
|
||
223.在vi编辑环境下,使用____键,进行模式切换
|
||
ESC
|
||
|
||
224.进程/程序/线程之间的区别:
|
||
A.程序是一个软件的静态表现
|
||
B.进程是程序运行起来之后在内存里的表现形式 动态表现
|
||
C.进程是线程的容器 一个进程可拥有多个线程(一个进程至少有一个进程) 进程关闭线程也随之关闭线程关闭进程不一
|
||
定关闭
|
||
|
||
225.添加和删除一个用户的命令是
|
||
useradd
|
||
userdel
|
||
|
||
226.____目录用来存放系统管理员使用的管理程序。
|
||
/usr/sbin
|
||
|
||
227.解压acces.gz文件至access.log,保持源文件不删除解压:
|
||
cp access.gz /access.log/access1.gz
|
||
cd /access.log
|
||
gzip-daccess1.gz
|
||
|
||
228.若一台计算机的内存为128M,则交换分区的大小通常是
|
||
1.5到2倍 256M
|
||
|
||
229.目录下有ab两个文件,ls -a显示的是什么写出来
|
||
隐藏文件
|
||
|
||
230.Linux系统层面有哪些常见的安全防护方法
|
||
1.防火墙只开放对外的服务端口
|
||
2.修改sshd的服务端口
|
||
3.只允许公司出口IP连接sshd服务端口
|
||
4.禁止ROOT远程登录
|
||
5.修改/etc/passwd访问权限
|
||
6.修改执行命令历史记录数
|
||
7.禁用不用的服务和应用
|
||
8.检查系统日志
|
||
|
||
231.怎么理解存储和冗余?
|
||
存储是指将数据或文件存储在磁盘或网络存储设备上
|
||
冗余是一防止数据丢失或服务中断的技术手段 #说几个知道的冗余 raid lvm
|
||
|
||
232.请描述你是怎么优化Linux系统的?
|
||
1.不用root,添加普通用户,通过sudo授权管理。
|
||
2.更改默认的远程连接SSH服务端口及禁止root用户远程连接。
|
||
3.定时自动更新服务器时间。
|
||
4.配置yum更新源,从国内更新源下载安装rpm包。
|
||
5.关闭selinux及iptable。
|
||
6.调整文件描述符的数量。进程及文件的打开都会消耗文件描述符。
|
||
7.定时自动清理/var/spool/clientmquene/目录垃圾文件,防止inodes节点被占满。
|
||
8.精简开机自启动服务(crond,sshd,network,rsyslog)。
|
||
9.linux内核参数优化/etc/sysctl.conf,执行sysctl-p生效。
|
||
10.锁定关键系统文件。
|
||
11.清空/etc/issue,去除系统及内核版本登陆前的屏幕显示。
|
||
|
||
233.如何查看Linux系统每个IP的连接数
|
||
netstat -n | awk '/^tcp/ {print$5}' | awk -F ':'' '{print$1}' | sort | uniq -c| sort -rn
|
||
|
||
234.Linux系统下,如何修改test用户,最大的打开文件数量为10240,最大的进程数为20480?
|
||
vim/etc/security/limits.conf
|
||
test soft nofile 9000
|
||
test hard nofile 10240
|
||
vim/etc/security/limits.d/20-nproc.conf
|
||
root soft nproc unlimited
|
||
test hard nproc 20480
|
||
|
||
235.Linux应该从哪些方面提高安全性
|
||
1.取消不必要的服务
|
||
2.加密用户登录密码并设定用户账号安全等级
|
||
3.增强安全防护工具
|
||
|
||
236.utf-8和Unicode的区别是什么?
|
||
Unicode 是「字符集」,Unicode为世界上所有字符都分配个唯一的数字编号
|
||
UTF-8 是「编码规则」
|
||
|
||
237.安装linux系统时,swap分区应该设置多少?
|
||
物理内存在8G以下,swap设为与物理内存一样大,也可以设为物理内存的2倍。如果物理内存在8G以上,swap设为8G即可。
|
||
|
||
238.发现一个病毒文件你删除了他又自动创建怎么解决?
|
||
查看进程是否异常,查看计划任务crontab 是否有异常
|
||
|
||
239.简述二层交换机和三层交换机的区别
|
||
二层交换机位于数据链路层,三层交换机位于网络层
|
||
二层交换机基于MAC地址访问,只做数据的转发,不能配置IP地址;而三层交换机具有路由功能,支持不同vlan的IP地址
|
||
配置和vlan间的通讯
|
||
|
||
240.某网站页面上的应显示图片和一些动态内容的一个展示框变为黑色,网站其他部分正常,可能的原因是什么?
|
||
查看网站图片连接是否正常,图片是否存在,数据库是否可以正常访问
|
||
|
||
241.如何找回root密码?
|
||
1.在重启系统的时候通过不断按下上下选择键阻断系统进行入正常启动,而是进入启动选择界面,然后根据系统提示按下‘e’键去编辑选项
|
||
2.找到如下图中标记中的那一部分,这就是需要编辑的部分
|
||
3.将ro 以后到UTF-8结束的所有内容全部删掉,然后将ro改为rw rd.break根据系统提示的下一步同时按下Ctl+x进入密码修改
|
||
4.首先执行chroot /sysroot/进行入到系统根目录下然后执行passwd命令进行密码修改修改完成后在根下创建文件touch /.autorelabel,使得系统再次启动时能够识别修改
|
||
5.最后通过执行两次exit命令使系统重启,然后修改的密码就会生效了!
|
||
|
||
242.linux系统中用于打印队列查询的命令是?
|
||
ipstat
|
||
|
||
243.写出命令行发邮件,发件人:123@abc.com,收信人:abc@xyz.com。主题为test
|
||
mail -s 主题 -r 发件人 收件人
|
||
mail -s test -r 123@abc.com abc@xyz.com
|
||
|
||
244.系统中在/etc/resolv.conf配置dns服务器地址,但后期会被清除什么原因
|
||
可能是NetworkManager的原因
|
||
|
||
245.说5个常用的系统命令
|
||
sar ipconfig top ss ping
|
||
|
||
246.列出当前系统中所有的网络连接(包含进程名),请写出完整操作命令
|
||
netstat -anputl
|
||
-t TCP
|
||
-l 监听
|
||
-a 所有
|
||
-u UDP
|
||
-n 显示端口号和IPppid
|
||
|
||
247.grep -E '[Hh]enr(y|ietta)' file 的功能是?
|
||
匹配file中 Henry Henrietta henry henrietta
|
||
|
||
248.你熟悉的远程控制软件有哪些?请列列举三种以上。
|
||
向日葵
|
||
teamviewer
|
||
vnc
|
||
|
||
249.查看tcp连接情况
|
||
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
|
||
|
||
250.简述画出TCP/IP三次握手
|
||
|
||
|
||
251.查看TCP的并发请求数与其连接状态
|
||
netstat -ant | awk '{print $NF}' | grep -v '[a-z]'| sort | uniq -c
|
||
|
||
252.使用curl,wget查看www.baidu.com的head信息命令
|
||
curl -I http://baidu.com
|
||
wget http://baidu.com -S
|
||
|
||
253.在网络排错中,你经常会用到的操作命令的作用:
|
||
ping 查看网络是否互通
|
||
netstat 一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息。
|
||
nbtstat 用于查看在TCP/IP协议之上运行NetBIOS服务的统计数据,并可以查看本地远程计算机上的NetBIOS名称列表。
|
||
net
|
||
telnet 查看端口是否互通
|
||
ipconfig 显示IP地址
|
||
|
||
254.
|
||
|
||
|
||
|
||
Nginx篇
|
||
1.问题1:什么是请求头和响应头?
|
||
请求头:
|
||
是客户端发给服务器,含有客户端发起http请求的各种信息
|
||
响应头:
|
||
是服务器发给客户端,含有服务器对客户端发起http请求的响应信息
|
||
问题2:它们分别含有哪些内容?
|
||
请求头:
|
||
请求方法 请求资源路径 Host User-Agent Accept Content-Type
|
||
响应头:
|
||
状态码 服务器信息 Content-Type Content—Length
|
||
|
||
2.nginx请求头里的请求方法你都知道哪些?
|
||
get post delete put connect
|
||
|
||
3.请求头的get请求方法和post请求方法有什么区别?
|
||
A.get用于获取数据,不含请求体,参数会附加在url的查询字符串中;post用于发送数据,请求体中含需要发送的数据
|
||
B.get请求方法不包含Content-Type字段;post请求方法时,Content-Type字段指定了请求体的编码类型
|
||
C.get适用于获取资源,数据量较小且不敏感的情况;POST适用于需要保护数据安全且可能修改服务器状态的操作
|
||
|
||
4.nginx可以做什么用
|
||
web服务器、代理服务器、负载均衡器、邮件服务器
|
||
|
||
5.长连接(持久连接)是否默认开启?开启与关闭有什么区别?
|
||
默认开启
|
||
开启后可有效利用网络和系统资源,提升性能和效率.某些特定情况下关闭长连接有助于控制连接的生命周期
|
||
需要根据实际情况来确定长连接是否关闭或开启,从而达到最佳性能和资源利用效果
|
||
|
||
6.请简单描述nginx与php-fpm的两种连接方式及其优缺点
|
||
TCP
|
||
优:跨服务器通信,更灵活
|
||
缺:性能低,资源消耗高
|
||
socket
|
||
优:使用unix套接字通信,性能高,资源消耗少,本地连接快
|
||
缺:配置不当或权限不正确,套接字连接出问题
|
||
|
||
7.nginx如何配置能够获取用户的真实ip?
|
||
A.nginx反向代理及cdn:(当多层代理或使用CDN时,如果代理服务器不把用户的真实IP传递下去,那么业务服务器将永远不
|
||
可能获取到用户的真实IP)
|
||
proxy_set_header Host $http_host;
|
||
proxy_set_header X-Real-IP $remote_addr; #针对首层代理
|
||
proxy_set_header X-Forwarded-F $proxy_add_x_forwarded_for; #针对非首层代理
|
||
使用nginx自带模块realip获取用户IP地址:nginxrealip_module模块需要在编译nginx的时候加上参数--with-http_realip_module
|
||
#setuserrealiptoremoteaddr
|
||
set_real_ip_from ip段或地址
|
||
real_ip_header X-Forwarded-For;
|
||
|
||
|
||
8.下面nginx配置文件中的一段配置,请写出输出结果,并说明为什么?
|
||
location / test{
|
||
set $a32;
|
||
echo $a;
|
||
set $a56;
|
||
echo $a;
|
||
}
|
||
|
||
理论:输出3256
|
||
实际:nginx配置文件不识别echo命令服务起不来
|
||
|
||
9.客户端发起请求,需要Web代理服务器根据请求(GET和POST)的参数代理到不同的后端服务器,请选择Web代理软件并简述实
|
||
现的过程?
|
||
我们是用nginx做的代理软件
|
||
只需在nginx的location块下配置相应请求的路由
|
||
如:location / {
|
||
root /usr/share/nginx/html;
|
||
index index.html index.htm;
|
||
if($request_uri~*\.html$){
|
||
proxy_pass http://htmlserver;
|
||
}
|
||
再在nginx的相应子配置文件中配置upstream
|
||
如:upstream htmlserver{
|
||
server 192.168.122.10;
|
||
server 192.168.122.20;
|
||
}
|
||
编写nginxrewrite规则,http://192.168.1.1/ops/index.php/admin/idc转化成http://192.168.1.1/ops/index.php?act=admin&arg=idc?
|
||
location ~* /ops/index.php/admin/(.*)$ {
|
||
rewrite /ops/index.php/admin/(.*) /ops/index.php?act=admin&arg=$1 last;
|
||
}
|
||
|
||
10.nginx遇到盗链怎么解决的?
|
||
模块:ngx_http_referer_module Syntax: valid_referersnone|blocked|server_names|string...;
|
||
Default: —
|
||
Context:server,location
|
||
列子:
|
||
location ~*\.(gif|jpg|png|bmp)${
|
||
valid_referersnoneblocked*.qfcloud.topserver_names~tianyun~\.google\.~\.baidu\.;
|
||
if($invalid_referer){
|
||
return 403;
|
||
#rewrite .*http://qfcloud.top/403.jpg;
|
||
}}
|
||
|
||
11.nginx怎么控制一个ip访问的次数?
|
||
请求数限制模块:
|
||
Syntax: limit_req_zonekeyzone=name:sizerate=rate;
|
||
Default:p
|
||
—
|
||
Context:http
|
||
|
||
12.nginx503,502,504报错从哪几个方面去考虑
|
||
使用nginx代理,而后端服务器发生故障;或者php-cgi进程数不够用;php执行时间长,或者是php-cgi进程死掉;
|
||
已经执行fastCGI使用情况等都会导致502、504错误
|
||
502:进程数不够 max_children增加request_terminate_timeout也可以相应增加
|
||
503:用limit_conn_zone和limit_req指令配合使用来达到限制。e一旦并发连接超过指定数量,就会返回503错误
|
||
|
||
13.nginx后端有2台PHP服务器A和B,匹配url开头为Login的请求转发到服务器A8080端口;匹配以png和jpg结尾的请求转发到
|
||
服务器B的80端口,并指定的根目录为/appe/webroot/static/下,请简单编写nginx匹配转发规则
|
||
location / {
|
||
root /appe/webroot/static/;
|
||
if($request_uri~*\.(png|jpg)$){
|
||
proxy_pass http://phpb:80/;
|
||
}
|
||
if($request_uri^~/login){
|
||
proxy_pass http://phpa:8080/;
|
||
}}
|
||
|
||
14.nginx负载均衡算法:
|
||
A.rr:轮询算法
|
||
依次将用户的访问请求,平均的分配到后端的web集群中每个节点,此种算法不会考虑每个节点的性能,所以比较适用于
|
||
所有节点的性能一致的情况
|
||
B.wrr:权重算法
|
||
根据设定的权重值,权重值越大,被配到的请求次数也就越多,有效的解决了rr算法的缺点
|
||
C.ip_hash算法
|
||
根据用户访问的真实ip生成一个hash表,此后,同一个ip地址的访问请求都将会分配到这个节点上,可以解决session
|
||
会话共享的问题
|
||
D.url_hash(根据用户访问的url的hash结果,使每个url定向到同一个后端服务器上)
|
||
E.fair(更加智能的负载均衡算法,可以根据页面大小的和加载时间长短智能的进行负载均衡)
|
||
|
||
15.磁盘空间满了,删除一部分Nginxaccess日志,但磁盘空间还是满的,为什么?
|
||
若文件处于被打开状态(即进程正使用它),那进程仍可读取该文件,占据一定磁盘空间
|
||
解决的方法是查看并kill掉进程,再删除文件
|
||
|
||
16.我们想将/usr/local/nginx/logs中的log前一天做压缩,归档到 backup文件夹中,并保留7天的内容,你有什么好办法?
|
||
如果我们还想将log收集走并分析,使用什么工具?如果收集走并加以分析,你主要关注哪些指标?
|
||
使用find命令查找前一天的日志,或者在每天晚上12点将日志备份,打包压缩,使用shell脚本判断7天之前的文件删除。
|
||
分析日志可以使用elk或者通过python、shell脚本进行分析。
|
||
|
||
17.简述一下apache和nginx的异同点。
|
||
两者核心的区别在于apache是同步多进程模型,一连接对应一进程,而nginx是异步的,多连接(万级别)对应一个进程。一
|
||
般来说,需要性能的web服务,用nginx。如果要稳定,更考虑apache.更为通用的方案是,前端nginx抗并发,后端apache集群,
|
||
配合起来会更好。
|
||
|
||
18.如何实现nginx代理的节点访问日志记录客户的ip而不是代理的ip
|
||
修改nignx负载均衡器的/usr/local/nginx/conf/nginx.conf;
|
||
在location / 添加 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||
|
||
18.Nginx禁止访问test目录
|
||
location =/test {
|
||
return 404;
|
||
}
|
||
|
||
19.如何实现系统接入层nginx灰度发布?
|
||
nginx 做反向代理+负载均衡
|
||
如果是内部IP,则反向代理到预发布环境;如果不是则反向代理到生产环境。
|
||
|
||
20.列出你常用的nginx模块,用来做什么
|
||
ngx_http_access_module模块 :访问控制的模块
|
||
ngx_http_auth_basic_module模块 :使用basic机制进行用户验证
|
||
ngx_http_stub_status_module模块 :用来查看http的状态信息
|
||
ngx_http_log_module模块 :nginx的日志模块
|
||
ngx_http_gzip_module模块 :对传输的数据进行压缩
|
||
ngx_http_ssl_module模块 :设置https连接的模块
|
||
ngx_http_rewrite_module模块 :对用户的uri请求进行匹配,然后替换成指定的uri
|
||
ngx_http_referer_module模块 :做防盗链的模块,
|
||
|
||
21.写一个脚本(shell、python)实现nginx日志按天分割,并将前一天的日志进行压缩,总共保留10天的备份?
|
||
#!/bin/bash
|
||
nginxpid=`/usr/bin/ps aux|grep nginx|grep nginx|awk '/master/{print$2}'` #找出nginx服务的master进程并取出它的pid
|
||
accesslog=`/usr/sbin/lsof -p $nginxpid|awk '/access.log/{print $9}'` #找出pid文件的路径
|
||
log_path=`/usr/bin/dirname $accesslog` #取出它的目录
|
||
YESTERDAY=$(date -d "yesterday" +%Y%m%d) #找出昨天的日期例如:20190422
|
||
new_path=/usr/bin/new
|
||
if [ ! -d $new_path ];then
|
||
mkdir $new_path
|
||
fi
|
||
#在每天的0点切割日志
|
||
mv ${log_path}/access.log ${new_path}/access_${YESTERDAY}.log #将前一天的日志移到新目录下面
|
||
kill -USR1 `ps axu | grep "nginx: master process" | grep -v grep | awk '{print $2}'` #发送USR1信号,重新打开日志文件,否则会往mv后的文件写日志
|
||
#原因在于:linux系统中,内核是根据文件描述符来找文件的。如果不这样操作导致日志切割失败。
|
||
tar -zcf ${new_path}/access_${YESTERDAY}.tar.gz ${new_path}/access_${YESTERDAY}.log #将这个日志压缩
|
||
if [ $? != 0 ];then echo "命令执行错误";exit 1;fi #压缩出问题则退出
|
||
rm -f ${new_path}/access_${YESTERDAY}.log #没问题则删除原文件
|
||
#总共保留10天的压缩文件,那么就要删除11天前的文件,因为当前时间点还没有压缩文件
|
||
find ${new_path} -type f -mtime +11 -exec rm -f {} \;
|
||
|
||
22.写一个脚本实现nginx服务的管理
|
||
文件锁:编译安装时需要写此脚本;笔记上有答案5nginx安装7小步设置开机启动
|
||
vim /etc/init.d/nginx
|
||
#!/bin/bash
|
||
#chkconfig:- 99 20
|
||
#description:Oooothisismynginxstartupscript
|
||
PROG="/usr/local/nginx/sbin/nginx"
|
||
PIDF="/usr/local/nginx/logs/nginx.pid"
|
||
case "$1" in
|
||
start)
|
||
$PROG ;;
|
||
stop)
|
||
kill-sQUIT$(cat$PIDF) ;;
|
||
restart)
|
||
$0 stop
|
||
$0 start ;;
|
||
reload)
|
||
kill-sHUP$(cat$PIDF) ;;
|
||
*)
|
||
echo"Usage:$0{start|stop|restart|reload}"
|
||
exit1
|
||
esac
|
||
exit0
|
||
chmod +x /etc/init.d/nginx
|
||
chkconfig --add nginx
|
||
|
||
23.如何查看nginx的连接满了?
|
||
netstat -n | awk '/^tcp/ {++S[$NF]}END{for a in S print a,S[a]}'
|
||
|
||
24.nginx的工作原理:
|
||
A.nginx作为web服务器:
|
||
1.Nginx处理静态文件、索引文件,自动索引的效率非常高。
|
||
2.当Nginx接到一个HTTP请求时,它将通过查找配置文件将客户端请求映射到一个location block
|
||
3.在这个location中所配置的每个指令将会启动不同的模块去完成相应的工作。
|
||
B.nginx作为代理服务器:
|
||
接受internet上的连接请求,然后将其转给内部网络上的服务器,并将从得到的结果返回给请求连接的客户端
|
||
C.作为负载均衡:
|
||
1.客户端向反向代理发送请求。
|
||
2.反向代理根据某种负载机制转发请求至目标服务器。这些服务器都运行着相同的应用,并且可能根据配置被发往不同的服务器。
|
||
Nginx获取到后端服务器处理的结果并返回给客户端。
|
||
|
||
25.nginx负载均衡指定域名访问后端服务器怎么实现?
|
||
将ip换成域名
|
||
在负载均衡器上做好域名解析
|
||
DNS域名服务器
|
||
本地host文件
|
||
或:
|
||
vim/etc/nginx/nginx.conf
|
||
location / {
|
||
root /usr/share/nginx/html;
|
||
index index.html index.htm;
|
||
if($request_uri~*\.html$){
|
||
proxy_pass http://htmlserver;}
|
||
if($request_uri~*\.php$){
|
||
proxy_pass http://phpserver;} }
|
||
vim/etc/nginx/conf.d/test.conf
|
||
upstream htmlserver{
|
||
server 192.168.122.10;
|
||
server 192.168.122.20;}
|
||
upstream phpserver{
|
||
server 192.168.122.30;
|
||
server 192.168.122.40;}
|
||
|
||
26.用一条命令检测nginx语法平滑升级后启动命令
|
||
nginx -t -c /etc/nginx/nginx.conf && kill -HUP nginx主进程号
|
||
|
||
|
||
|
||
MySQL篇
|
||
拓
|
||
数据库技术构成
|
||
数据库管理系统-DBMS
|
||
数据库管理员-DBA
|
||
数据库系统-DBS
|
||
数据访问技术
|
||
ODBC PHP <.php>
|
||
JDBC JAVA <.jsp>
|
||
settings.py python <.py>
|
||
什么是数据库存储引擎?你知道有哪些引擎?它们有什么区别?
|
||
是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据
|
||
innodb 支持事务处理,支持外键,支持崩溃修复能力和并发控制
|
||
myisam 插入数据快,空间和内存使用比较低
|
||
memory 数据存储于内存,处理速度快,安全性不高
|
||
如何选择引擎?
|
||
若要提供提交、回滚、崩溃恢复能力的事物安全能力且要求实现并发控制,选择innodb
|
||
若数据表主要用来插入和查询记录,MyISAM引擎能提供较高的处理效率
|
||
若只是临时存放数据,数据量不大且不需要较高的安全性,可选择Memory引擎
|
||
|
||
|
||
1.问题1:mysql主从复制原理
|
||
A.主库的bin log日志,记录了主库所有的增删改查SQL语句(binlog线程)
|
||
B.从库的I/O线程把主库的bin log文件的SQL语句复制到自己的中继日志relay log(io线程)
|
||
C.从库的relay log重做日志文件,再执行一次这些sql语句。(sql执行线程)
|
||
问题2:怎么配置主从复制
|
||
A.所有机器
|
||
a.所有机器关闭防火墙和selinux
|
||
b.修改主机名
|
||
c.本地解析
|
||
d.时间校正(确保所有机器时间一致)
|
||
e.装好Mysql(所有机器版本须一致)
|
||
f.主从节点机器开启bin log日志和gtid(配置完成后主从节点机器须重启服务)
|
||
B.单个机器
|
||
b.主节点建立远程登录用户
|
||
c.从节点使用远程登录用户连接主节点
|
||
d.开启并查询从节点状态(I/O和SQL进程状态均为YES即成功)
|
||
|
||
2.问题1:mysql宕机了怎么办
|
||
A.查看日志文件,确认宕机原因(例:资源耗尽/磁盘空间不足等等原因)
|
||
B.确定原因后,及时处理并重启服务
|
||
问题2:mysql断电了怎么办
|
||
A.排查线路问题,及时恢复供电并重启服务
|
||
注:
|
||
A.定期备份数据,避免数据丢失
|
||
B.使用可靠的硬件设备和电源,确保供电的稳定性
|
||
C.根据实际情况调整MySQL的配置,避免资源的耗尽
|
||
D.定期监控数据库的性能与运行状态,及时发现潜在问题并处理
|
||
|
||
3.数据丢失,如何解决?
|
||
A.查看是否有丢失数据的备份,若有备份恢复即可
|
||
B.使用数据恢复软件.如:TestDisk/PhotoRec等等
|
||
C.若仍无法找回,花钱找专业数据恢复人员
|
||
|
||
4.mysql主库数据量大造成从库同步延迟怎么办
|
||
A.优化从库的硬件配置
|
||
B.优化SQL语句
|
||
C.调整主从复制参数(例:调整binlog_format来选择更高效的日志格式,或调整slave_parallel_workers(MySQL5.6及以上才支持)来增加并行
|
||
复制的线程数)
|
||
|
||
5.问题1:MySQL备份方案有哪些?
|
||
增量备份
|
||
差异备份
|
||
完整备份
|
||
问题2:MySQL备份方式有哪些?
|
||
分类1:
|
||
物理备份:直接复制数据库文件,适用于大型数据库,不受存储引擎限制 不能恢复到不同的MySQL版本
|
||
逻辑备份:备份的是建表建库插入等操作所执行的SQL语句,适合中小型数据库,效率较低
|
||
分类2:
|
||
热备份:数据库启动情况即可
|
||
冷备份:数据库需关闭或暂停服务
|
||
问题3:MySQL备份工具有哪些?
|
||
mysqldump
|
||
XtraBackup
|
||
phpMyBackup
|
||
|
||
6.系统启动后,不能连接数据库,可能是哪些方面的原因?
|
||
配置错误
|
||
数据库未打开
|
||
数据库端口不对
|
||
数据库密码不对
|
||
检查数据库是否正常可被连接
|
||
检查磁盘是否正常
|
||
|
||
7.数据库如何优化?
|
||
创建索引
|
||
优化查询语句
|
||
优化数据库和表结构
|
||
使用缓存技术
|
||
|
||
8.写一个脚本将数据库备份并打包至远程服务器192.169.1.1/backup目录下
|
||
#!/bin/bash
|
||
mysqldump -uroot -p***** -R --routines --events --triggers 库名 >/mysqlbackup/库名+日期.sql
|
||
scp /mysqlbackup/库名+日期.sql 129.169.1.1:/backup
|
||
|
||
9.数据库表和视图的区别?存储过程和函数的区别?
|
||
表 是真实存在的,它占内存空间
|
||
视图 是虚拟表,不存储数据,存储的是sql,检索他的时候实际上是执行定义它的sql语句,不占任何内存
|
||
存储过程在编译后可以生成执行计划,这使得每次执行存储过程的时候效率将会更高,这是存储过程,另外台提交参数的时候,使用存储过程将会减少网络带宽流量,这是存储过程相对于普通的sql语句在性能上的最大的优势
|
||
函数:只能返回一个变量的限制。而存储过程可以返回多个。
|
||
函数是可以嵌入在sql中使用的,可以在select中调用,而存储过程不行
|
||
执行的本质都一样。
|
||
函数限制比较多,比如不能用临时表,只能用表变量.还有一些函数都不可用等等.而存储过程的限制相对就比较少
|
||
|
||
10.简述drop, truncate, delete操作的异同( 假设delete不带where语句)
|
||
drop 彻底删除
|
||
truncate 清除表内容
|
||
delete 不加where 删除表内容 加where 指定条件
|
||
|
||
11.sql优化的过程
|
||
1.通过show status 了解各种SQL的执行频率
|
||
2.定位执行效率低的SQL语句
|
||
3.通过explain分析低效SQL执行计划
|
||
4.通过show profile分析SQL
|
||
5.通过trace分析优化器如何选择执行计划
|
||
|
||
12.表t1数据有1000w,求表tl中字段id的最大值和最小值,如何查询速度更快?
|
||
select max(id) from t1
|
||
select min(id) from t1
|
||
|
||
13.表t2中数据有1000w,其中tel字段创建了索引.找出所有137开头的手机号。
|
||
select * from t2 where left(tel,3) = '137';
|
||
|
||
14.分别写出Mysql, Sql serer,Oracle 数据库的客户端管理工具。
|
||
mysql: mysql phpmyadmin
|
||
sql server: SSMS
|
||
oracle: oracle client
|
||
|
||
15.写出备份和恢复Oracle数据库的方法。
|
||
Oracle数据库有三种常用的备份方法,分别是导出/导入(EXP/IMP)、热备份和冷备份。导出/导入备份是一种逻辑备份,相对于导出/导入来说,热备
|
||
份、冷备份是一种物理备份。
|
||
|
||
16.要清空一个几百万数据的表A里的数据,通常我们用的SQL语句为?
|
||
delete from a
|
||
truncate table a
|
||
|
||
17.如何做服务器的安全、容灾、以数据库为例
|
||
A.每天定时备份数据库
|
||
B.mysql按需求进行主从复制、主主复制、读写分离等保证数据即时备份
|
||
C.利用keepalived等工具使数据库进行高可用
|
||
|
||
18.mysql一主多从,主库宕机,如何合理切换到从库,其他的从库有如何处理
|
||
A.首先停业务
|
||
B.查看SQL线程的执行状态:
|
||
show slave status\G;
|
||
查看Slave_SQL_Running_State是否为Slave has read all relay log;waiting for more updates,如下:
|
||
Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
|
||
或执行show processlist;
|
||
如果有Slave has read all relay log; waitingfor more updates 则表示从库都同步完成了。
|
||
C.所有从库执行show slave status\G;
|
||
对比所有从库的Relay_Master_Log_File,Exec_Master_Log_Pos两个参数的值,数值最大的作为新的主库,如果所有从库的值都相同,都没有
|
||
落后于主库,选择哪个从库都可以做为新主库.
|
||
D.选好准主库后,执行stop slave;reset slave ;reset master;
|
||
E.在准主库上用户授权,其他从库上change master指向主库,配置主从复制。
|
||
|
||
19.请举一个生产中你实际遇到网站打开慢由于访问mysql数据库慢导致的
|
||
一次调用后台数据特别慢,经查询是mysql前期插入数据未加上有效的索引
|
||
检查:首先show full processlist 查看数据库中的线程是否有都是有用的线程或者是否有线程卡住,经检查是一个查询语句的线程时间过长。
|
||
explain select *** 语句,发现该查询语句查询的是原始数据,没找索引。
|
||
最初发现直接插入索引,执行一个小时没反应,并且会导致锁表。
|
||
解决:
|
||
导出原表数据
|
||
创建新表与原表结构保持一致,在该表上执行alter语句添加索引;
|
||
将表数据导入创建的新表;
|
||
修改新建的表名为原表名。
|
||
|
||
20.mysql通过____作为媒介来实现主从数据同步
|
||
二进制日志
|
||
|
||
21.是否有数据库维护工作,列出高可用方案,备份及还原方案
|
||
备份:每天定时用mysqldump 备份数据库
|
||
高可用 :keepalived + mysql主从,当主库宕掉后,会有脚本将从库只读改为读写并将其提升为主库,保证服务的不中断。
|
||
|
||
22.mysql数据库有每日备份和binlog,简述恢复数据库到指定时间的思路。
|
||
查看位置点
|
||
mysqlbinlog 查看详细位置
|
||
mysqlbinlog 命令把截取的pos点导出sql语句:eg:
|
||
mysqlbinlog --start-position=214 --stop-position=1257 /data/3307/mysql-bin.000006 > /tmp/binlog.sql
|
||
source sql语句
|
||
|
||
23.mysql数据库如何实现读写分离
|
||
A.可以在配置文件中设置一台mysql只读,另一台可以读写
|
||
B.利用软件mycat实现
|
||
|
||
24.在mysql客户端查询中,如何获取当前所有连接的进程信息。
|
||
show full processlist;
|
||
|
||
25.mysql的innodb如何定位锁问题,mysql如何减少主从复制延迟?
|
||
A.show engine innode status ;查看锁问题
|
||
B.使用多台slave来分摊读请求;
|
||
配置有用的参数,
|
||
eg:–slave-net-timeout=seconds 单位为秒 默认设置为 3600秒,\#参数含义:当slave从主数据库读取log数据失败后,等待多久重新
|
||
建立连接并获取数据;
|
||
–master-connect-retry=seconds 单位为秒 默认设置为 60秒 #参数含义:当重新建立主从连接时,如果连接建立失败,间隔多久后重试
|
||
修改配置文件,尽量让主库的DDL快速执行
|
||
sync_binlog=1,innodb_flush_log_at_trx_commit = 1 之类的设置,而slave则不需要这么高的数据安全,完全可以讲sync_binlog设
|
||
置为0或者关闭binlog,innodb_flushlog也 可以设置为0来提高sql的执行效率
|
||
架构上实行读写分离,半同步等;
|
||
|
||
26.Oracle查询sql:select 1 from table_name where a=1 and b=2 中那个查询条件会先执行?
|
||
a=1
|
||
|
||
27.oracle清空表数据,不能留归档日志的DML命令是什么?
|
||
delete truncate
|
||
|
||
28.在oracle 中,下面那个函数与||运算符有相同的功能 B
|
||
A.ltrim
|
||
B.contract
|
||
C.substr
|
||
D.instr
|
||
|
||
29.mysql实现级联同步,需要修改那些参数?
|
||
log-bin
|
||
server-id
|
||
|
||
30.mysql如何查看某一用户的权限?
|
||
show grants for user@""
|
||
|
||
31.如何定位执行时间过长的sql语句?
|
||
A.开启慢日志
|
||
B.show full processlist ; 通过state time command 查看连接时间超长的进程
|
||
|
||
32.mysql如何查看正在执行的查询语句?
|
||
show full processlist ; 通过command、state列 查看
|
||
|
||
33.写出备份恢复mysql中gpower数据库的命令
|
||
备份:mysqldump -u root -p pass gpower > gpower.sql
|
||
恢复:进库 mysql > source gpower.sql
|
||
|
||
34.mysql索引 调优 索引对性能的影响 建立五个索引和六个的区别 索引实现原理 索引的数据结构
|
||
|
||
35.mysql表分区 mysql数据量超过1000w怎么实现性能优化(加缓存,分表分库)
|
||
|
||
36.如何实现对MySQL数据库进行分库逻辑备份,请用脚本实现
|
||
Mysqldump
|
||
#vim mysqldump.sh
|
||
mysqldump -uroot -p'QianFeng@123' -A --single-transaction --routines--triggers--master-data=2 --flush-logs
|
||
>/backup/`date +%F-%H`-mysql-all.sql
|
||
|
||
37.MySQL:主从复制集群,高可用,具体配置,关系型数据库原则,怎么在集群中实现分库分>表,锁机制
|
||
|
||
主从复制集群:
|
||
1、mysql主
|
||
开启二进制文件:#vim/etc/my.cnf(写入如下内容)
|
||
[mysqld]
|
||
log_bin
|
||
server-id=1
|
||
gtid_mode=ON
|
||
enforce_gtid_consistency=1
|
||
重启服务:
|
||
systemctl restart mysqld
|
||
进入数据库,为从服务器授权
|
||
mysql -uroot -p'123'
|
||
grant rep licationslave,replicationclienton *.* to 'rep'@'IP或网段' identified by'123';
|
||
flushprivileges;
|
||
2、mysql从
|
||
测试rep用户是否可用:#mysql -h 'mysql主IP' -urep -p'123'
|
||
启动服务序:#vim/etc/my.cnf
|
||
[mysqld]
|
||
log_bin
|
||
server-id=2
|
||
gtid_mode=ON
|
||
enforce_gtid_consistency=1
|
||
重启服务:
|
||
systemctl restart mysqld
|
||
再次测试rep用户是否可用:
|
||
mysql -h 'mysql主IP' -urep -p'123'
|
||
从设备上设置主服务
|
||
change master to master_host='mysql主IP',master_user='rep',master_password='123',master_auto_position=1;(自动获取)
|
||
3、主主、多从
|
||
高可用:
|
||
mysql主主同步
|
||
在两台mysql上安装keepalived:#yum-yinstallkeepalived
|
||
keepalived主备配置文件:#vim/etc/keepalived/keepalived.conf
|
||
!ConfigurationFileforkeepalived
|
||
global_defs{
|
||
router_idmysql1}
|
||
vrrp_scriptcheck_run{//定义配置健康检查脚本的配置名称check_run
|
||
script"python/root/keepalived_check_mysql.sh"
|
||
interval5//执行健康检查的时间间隔单位s(每5秒钟检查一次)}
|
||
vrrp_instanceVI_1{
|
||
stateMASTER
|
||
interfaceens33
|
||
virtual_router_id88
|
||
priority100
|
||
advert_int1//检查keepalived本身服务的时间间隔
|
||
authentication{
|
||
auth_typePASS
|
||
auth_pass1111
|
||
}
|
||
track_script{
|
||
check_run//名字必须和上面的脚本配置名称一致
|
||
}
|
||
virtual_ipaddress{
|
||
192.168.122.100devens33
|
||
} }
|
||
编写mysql状态检测脚本(主主):
|
||
#vim/root/bin/keepalived_check_mysql.sh
|
||
#chmod755/root/keepalived_check_mysql.sh
|
||
#/etc/init.d/keepalivedstart
|
||
测试及诊断
|
||
|
||
38.关系型数据库原则:
|
||
ACID(注:数据库事务通常指对数据库进行读或写的一个操作序列)
|
||
1.A(Atomicity)原子性是说事务里的所有操作要么全部做完,要么都不做,事务成功的条件是事务里的所有操作都成功,
|
||
只要有一个操作失败,整个事务就失败,需要回滚。
|
||
2.C(Consistency)一致性是说数据库要一直处于一致的状态,事务的运行不会改变数据库原本的一致性约束。如完整性约
|
||
束a存款+b存款=2000。
|
||
3.I(Isolation)隔离性是指并发的事务之间不会互相影响,如果一个事务要访问的数据正在被另外一个事务修改,只要另
|
||
外一个事务未提交,它所访问的数据就不受未提交事务的影响。
|
||
4.D(Durability)持久性是指一旦事务提交后,它所做的修改将会永久的保存在数据库上,即使出现宕机也不会丢失
|
||
|
||
39.
|
||
分库:
|
||
垂直拆分:按照业务垂直划分,将系统中不存在关联关系或者需要join的表可以放在不同的数据库不同的服务器中
|
||
水平拆分:按照规则划分,一般水平分库是在垂直分库之后的。比如每天处理的订单数量是海量的,可以按照一定的规则水平划分
|
||
读写分离:对于时效性不高的数据,可以通过读写分离缓解数据库压力
|
||
分表:指将一张表按一定的规则分解成N个具有独立存储空间的实体表。
|
||
常见的分表策略:
|
||
1.Range(范围)
|
||
2.Hash(哈希)
|
||
3.按照时间拆分
|
||
4.Hash之后按照分表个数取模
|
||
5.在认证库中保存数据库配置,就是建立一个DB,这个DB单独保存user_id到DB的映射关系
|
||
锁机制:用于保护数据的完整性,当并发事务同时访问一个资源时,有可能导致数据不一致,因此需要一种机制来将数据访问顺序化,以保证数据库
|
||
数据的一致性,锁是其中的一种。
|
||
|
||
40.如何实现对Mysql数据库进行分库加分表备份,请用脚本实现
|
||
#!/bin/bash
|
||
user=root
|
||
pass=test
|
||
database=`mysql -u$user -p"$pass" -e "show databases;" | sed d | grep -v 'schema'`
|
||
mkdir /mysql_backup
|
||
mysql -u$user -p"$pass" -e "show databases;" &>/dev/null
|
||
if [ $? -ne 0 ];then
|
||
read -p "Mysqldonotrunning,startit?(yes/no):" choice
|
||
if [[ "$choice" -eq "yes" ]];then
|
||
systemctl start mysqld &>/dev/null
|
||
else
|
||
echo -e "\033[31m请开启mysql服务,以过滤库、表\033[0m"
|
||
exit2
|
||
else
|
||
echo -e "\033[33m==================backupstart=====================\033[0m"
|
||
for i in $database
|
||
do
|
||
tables=`mysql-u$user-p"$pass"-e"use$i;showtables;"|sed1d`
|
||
for j in $tables
|
||
do
|
||
mysqldump -u$user -p"$pass" -B--databases$i--tables$j >/mysql_backup/${i}-${j}-`date+%F`.sql
|
||
[ $? -eq 0 ]
|
||
echo $i-$jok >>/mysql_backup/table.log || echo $i-$jfailed >>/mysql_backup/table.log
|
||
[ $? -eq 0 ]&& echo -e "$i-$j\033[32mok!\033[0m" || echo -e "$i-$j\033[31mfailed!\033[0m"
|
||
done
|
||
done
|
||
echo -e "\033[32m==================backupcomplete===================\033[0m"
|
||
|
||
41.如何监控MySQL主从同步是否异常?
|
||
#!/bin/bash
|
||
#Date:2018-9-27
|
||
#Author:zz(1608843551@qq.com)
|
||
#version1.0
|
||
while true
|
||
do
|
||
array=($(mysql -uroot -p'123' -e "showslavestatus\G" | egrep '_Running | Behind_Master | Last_SQL_Errno' | awk '{print$NF}'))
|
||
if [ "${array[0]}" == "Yes" -a "${array[1]}" == "Yes" -a "${array[2]}" == "0" ];then
|
||
echo "MySQLisslaveisok"
|
||
else
|
||
if [ "${array[3]}" -ne 0 ];then
|
||
mysql -uroot -p '123' -e "stopslave&&setglobalsql_slave_skip_counter=1;startslave;"
|
||
echo "错误代码${array[3]}"
|
||
fi
|
||
char="MySQLslaveisnotok,错误代码${array[3]}"
|
||
echo "$char"
|
||
echo "$char" | mail-s"$char"1608843551@qq.com
|
||
fi
|
||
sleep 60
|
||
done
|
||
|
||
42.Mysql备份命令是什么?Mysql如何让给用户daxiang对库daxiang授权网段为192.168.96.0/24远程访问权限,密码为daxiang@123,请写出命令
|
||
备份:物理备份:
|
||
完整备份:innobackupex--user=daxiang--password='daxiang@123'/xtrabackup/full
|
||
增量备份:innobackupex--user=daxiang--password='daxiang@123' --incremental/xtrabackup/
|
||
--incremental-basedir=/xtrabackup/`date+%Y-%m-%d-%H`
|
||
逻辑备份:mysqldump -p'daxiang@123' -A >/mysql_backup/`date+%F-%H`-mysql.sql
|
||
授权:
|
||
mysql>grant all on daxiang.* to daxiang@'192.168.96.0/24' identified by 'daxiang@123' with grantoption;
|
||
|
||
43.数据库用于事务回滚和提交的SQL语句分别是
|
||
ROLLBACK和COMMIT
|
||
|
||
44.创建表空间neuspace,数据文件命名为neudata.dbf,存放在d:\data目录下,文件大小为200MB设为自动增长,增量5MB,
|
||
文件最大为500MB的SQL为
|
||
create table space neuspace datafile 'd:\data\neudata.dbf' size 200m auto extendonnext 5m maxsize 500m
|
||
|
||
45.SQL语言支持数据库三级模式结构,在SQL中外模式、模式对应于_____,内模式对应于_____
|
||
基本表全体 存储文件或数据文件
|
||
|
||
46.简述数据库中索引的用法及原理
|
||
索引在mysql中也叫键,是存储引擎用于快速找到记录的一种数据结构
|
||
用法:与查阅图书是一个道理:先定位到章,然后定位到章下的一个小节,再定位到页。
|
||
原理:通过不断地缩小想要获取数据的范围来筛选出最终想要的结果,同时把随机的事件变成顺序的事件。
|
||
|
||
47.请写出数据库事务的ACID特性并简述唯一(UNIQUE)约束和主键(PRIMARYKEY)约束的异同点
|
||
每个表可以有多个UNIQUE约束,而只能有一个PRIMARYKEY
|
||
主键:PRIMARYKEY
|
||
约束唯一标识数据库表中的每条记录
|
||
主键必须包含唯一的值;主键不能包含NULL值
|
||
每个表都应该有一个主键,并且每个表只能有一个主键
|
||
唯一:UNIQUE
|
||
约束唯一标识数据库表中的每条记录
|
||
UNIQUE和PRIMARYKEY约束均为列或列集合提供了唯一性的保证。
|
||
PRIMARYKEY约束拥有自动定义的UNIQUE约束。
|
||
|
||
48.解释冷备份和热备份的不同点以及各自的优点
|
||
热备份针对归档模式的数据库,再数据库仍旧处于工作状态时进行备份。而冷备份指数据库关闭后进行备份,适用于所有数据库。
|
||
不同点:
|
||
热备份:备份时数据库仍旧处于运行状态
|
||
冷备份:备份时数据处于关闭状态
|
||
优点:
|
||
热备份:在备份时,数据库仍可以使用并且可以将数据库恢复到任意一个时间点
|
||
冷备份:它的备份和恢复操作相当简单,并且冷备份可以工作在非归档模式下,数据库性能会比归档模式稍好
|
||
|
||
49.列举三种表连接算法以及各自高性能的场景
|
||
三种连接算法:①嵌套循环连接 ②合并连接 ③Hash连接
|
||
嵌套循环连接:通常在小数据量并且语句比较简单的场景中使用
|
||
合并连接:在SQL数据库中,如果查询优化器,发现要连接的两张对象表,在连接上都已经排序并包含索引,那么优化器
|
||
将会极大可能选择“合并”连接策略。条件是:两个表都是排序的,并且两个表连接条件中至少有一个等号连接,查询分析器会去
|
||
选择合并连接
|
||
Hash连接:当我们尝试将两张数据量较大,没有排序和索引的两张表进行连接时,SQLServer的查询优化器会尝试使用
|
||
HashJoin
|
||
|
||
50.Mysql客户端工具中,请问如何让查询当前所有的连接进程信息
|
||
show process list;
|
||
|
||
51.mysql主从,主库宕机,主从切换步骤?
|
||
主机故障或者宕机:
|
||
在salve执行:
|
||
stopslave;
|
||
resetmaster;
|
||
查看是否只读模式
|
||
show variables like 'read_only';
|
||
只读模式需要修改my.cnf文件,注释read-only=1并重启mysql服务。
|
||
或者不重启使用命令关闭只读,但下次重启后失效:setglobalread_only=off;
|
||
查看
|
||
show slave status\G;
|
||
查看
|
||
show master status\G;
|
||
|
||
52.将从库IP地址改为主库IP地址,测试应用连接是否正常。
|
||
正常切换
|
||
1、检查slave同步状态
|
||
在开始切换之前先对主库进行锁表:
|
||
flush tables with readlock
|
||
flush data
|
||
切换完成后可以释放锁
|
||
2、在master执行:showprocesslist;
|
||
3、在slave执行:showprocesslist;
|
||
检查IO及SQL线程是否正常,如果为NO表明同步不一致,需要重新将slave同步保持主从数据一致。
|
||
4、停止slaveio线程
|
||
在slave执行
|
||
mysql>STOP SLAVE IO_THREAD
|
||
mysql>SHOW PROCESSLIST;
|
||
确保状态为
|
||
hasreadallrelaylog
|
||
以上都执行完成后可以把slave提升为master:
|
||
5、提升slave为master
|
||
Stop slave;
|
||
Reset master;
|
||
Reset slave all;在5.6.3版本之后
|
||
Reset slave;在5.6.3版本之前
|
||
查看slave是否只读模式:show variables like 'read_only';
|
||
只读模式需要修改my.cnf文件,注释read-only=1并重启mysql服务。
|
||
或者不重启使用命令关闭只读,但下次重启后失效:setglobalread_only=off;
|
||
6、将原来master变为slave
|
||
在新的master上创建同步用户:
|
||
grant replication slave on *.* repl@'IPofslave' identified by 'replpwd';
|
||
在新的slave上重置binlog:
|
||
Reset master;
|
||
change master to master_host='192.168.0.104',#//Master服务器
|
||
Ipmaster_port=3306,master_user='repl',master_password=’replpwd’,master_log_file='master-bin.000001',//Master服务器产生的日志
|
||
master_log_pos=?;//masterbinlogpos
|
||
以上最后两步可以在master执行:showmasterstatus
|
||
启动slave:
|
||
start slave;
|
||
并查看slave状态:show slave status\G;
|
||
|
||
53.如何让校验主从数据不一致?出现不一致时如何处理?
|
||
pt-table-check #监测主从一致
|
||
数据库不支持emoji表情,如何操作让数据库支持?
|
||
修改库级别的字符集:更换字符集utf8-->utf8mb4
|
||
utf8与utf8mb4说明:
|
||
UTF-8:UnicodeTransformationFormat-8bit,允许含BOM,但通常不含BOM。是用以解决国际上字符的一种
|
||
多字节编码,它对英文使用8位(即一个字节),中文使用24为(三个字节)来编码。UTF-8包含全世界所有国家需要用到的字
|
||
符,是国际编码,通用性强。UTF-8编码的文字可以在各国支持UTF8字符集的浏览器上显示。如果是UTF8编码,则在外国人的英
|
||
文IE上也能显示中文,他们无需下载IE的中文语言支持包。
|
||
UTF8MB4:MySQL在5.5.3之后增加了utf8mb4的编码,mb4就是mostbytes4的意思,专门用来兼容四字节的unicode。
|
||
表中有大字段X(例如:text类型),且字段X不会经常更新,以读写为主,请问:
|
||
1您是选择拆成子表,还是继续放在一起;
|
||
2写出您这样选择的理由
|
||
|
||
拆成字表
|
||
理由:避免大数据被频繁的从buffer重换进换出,影响其他数据的缓存;
|
||
|
||
54.MySQLbinlog的几种日志录入格式以及区别
|
||
1binlog的日志格式的种类和分别
|
||
2适用场景
|
||
3结合第一个问题,每一种日志格式在复制中的优劣
|
||
三种日志格式:Statement MiXED ROW
|
||
Statement:每一条会修改数据的sql都会记录在binlog中。
|
||
优点:不需要记录每一行的变化,减少了binlog日志量,节约了IO,提高性能。(相比row能节约多少性能与日志量,这个
|
||
取决于应用的SQL情况,正常同一条记录修改或者插入row格式所产生的日志量还小于Statement产生的日志量,但是考虑到如
|
||
果带条件的update操作,以及整表删除,alter表等操作,ROW格式会产生大量日志,因此在考虑是否使用ROW格式日志时应该跟
|
||
据应用的实际情况,其所产生的日志量会增加多少,以及带来的IO性能问题。)
|
||
缺点:由于记录的只是执行语句,为了这些语句能在slave上正确运行,因此还必须记录每条语句在执行的时候的一些
|
||
相关信息,以保证所有语句能在slave得到和在master端执行时候相同的结果。另外mysql的复制,像一些特定函数功能,slave
|
||
可与master上要保持一致会有很多相关问题(如sleep()函数,last_insert_id(),以及user-definedfunctions(udf)会出
|
||
现问题).
|
||
Row:不记录sql语句上下文相关信息,仅保存哪条记录被修改。
|
||
优点:binlog中可以不记录执行的sql语句的上下文相关的信息,仅需要记录那一条记录被修改成什么了。所以
|
||
rowlevel的日志内容会非常清楚的记录下每一行数据修改的细节。而且不会出现某些特定情况下的存储过程,或function,以
|
||
及trigger的调用和触发无法被正确复制的问题
|
||
缺点:所有的执行的语句当记录到日志中的时候,都将以每行记录的修改来记录,这样可能会产生大量的日志内容,比如
|
||
一条update语句,修改多条记录,则binlog中每一条修改都会有记录,这样造成binlog日志量会很大,特别是当执行
|
||
altertable之类的语句的时候,由于表结构修改,每条记录都发生改变,那么该表每一条记录都会记录到日志中。
|
||
Mixedlevel:是以上两种level的混合使用,一般的语句修改使用statment格式保存binlog,如一些函数,statement无法
|
||
完成主从复制的操作,则采用row格式保存binlog,MySQL会根据执行的每一条具体的sql语句来区分对待记录的日志形式,也就
|
||
是在Statement和Row之间选择一种.新版本的MySQL中队rowlevel模式也被做了优化,并不是所有的修改都会以rowlevel来
|
||
记录,像遇到表结构变更的时候就会以statement模式来记录。至于update或者delete等修改数据的语句,还是会记录所有行
|
||
的变更。
|
||
|
||
55.MySQL数据库cpu飙升到500%的话他怎么处理?
|
||
1多实例的服务器,先to一个进程,哪个端p查看是那口占用CPU多;
|
||
2showprocesseslist查看是否由于大量并发,锁引起的负载问题;
|
||
3否则,查看慢查询,找出执行时间长的sql;explain分析sql是否走索引,sql优化;
|
||
4再查看是否缓存失效引起,需要查看buffer命中率;
|
||
|
||
56.SQL优化中explain各字段的含义
|
||
table:显示这一行的数据是关于哪张表
|
||
type:这是重要的列,显示连接使用了何种类型。
|
||
possible_keys:显示可能应用在这张表的索引
|
||
key:实际使用的索引
|
||
key_len:使用的索引的长度
|
||
ref:显示索引的哪一列被使用了
|
||
rows:mysql认为必须检查的用来返回请求数据的行数
|
||
extra:关于mysql如何解析查询的额外信息
|
||
Distinct:一旦mysql找到了与行相匹配的行,就不再搜索
|
||
Notexists:MYSQL优化了LEFTJOIN,一旦它找到了匹配LEFTJOIN标准的行,就不再搜索了
|
||
RangecheckedforeachRecord(indexmap:#):没有找到理想的索引,因此对于从前面表中来的每一个行组合,MYSQL检查使用哪个索引,并用它来从表中返回行。这是使用索引的最慢的连接之一
|
||
Usingfilesort:看到这个的时候,查询就需要优化了。
|
||
Usingindex:列数据是从仅仅使用了索引中的信息而没有读取实际的行动的表返回的,这发生在对表的全部的请求列都是同一个索引的部分的时候
|
||
Usingtemporary看到这个的时候,查询需要优化了
|
||
const:表中的一个记录的最大值能够匹配这个查询
|
||
range:这个连接类型使用索引返回一个范围中的行,比如使用>或<查找东西时发生的情况
|
||
index:这个连接类型对前面的表中的每一个记录联合进行完全扫描
|
||
ALL:这个连接类型对于前面的每一个记录联合进行完全扫描
|
||
https://blog.csdn.net/u012888052/article/details/79499796
|
||
|
||
57.请写下命令在MYSQL数据库中检查当前从库的同步状态,然后将同步配置修改为binlog文件"mysql-bin.000001",偏移量为"4"。
|
||
检查状态:
|
||
mysql>show slave status;
|
||
Slave_IO_RunningI/O线程是否被启动并成功地连接到主服务器上。(状态信息为YesNo)
|
||
Slave_SQL_RunningSQL线程是否被启动(状态信息为YesNo)
|
||
Seconds_Behind_Master测量SQL线程和I/O线程的时间差(即延迟,单位为秒)
|
||
mysql通过mysqldump命令如何做全量和增量备份
|
||
全量备份:
|
||
mysqldump- u用户名 -p密码 数据库名 >备份文件.sql
|
||
增量备份:
|
||
每日定时使用MySQLadminflush-logs来创建新日志,恢复增量备份时恢复全量备份之后的binlog
|
||
例如: mysqlMySql-bin.000002 | MySQL -uroot -p密码
|
||
|
||
58.如何用mysql命令进程备份和恢复?以test库为例,创建一个备份,并再用此备份进行恢复
|
||
备份:
|
||
mysqldump -uroot -p密码 test > 备份文件.sql
|
||
恢复:
|
||
mysql -uroot -p密码 < 备份文件.sql
|
||
|
||
60.Mysql创建数据库的命令,创建表的命令,插入语句的命令?
|
||
创建库的命令:
|
||
create database 库名;
|
||
创建表的命令:
|
||
create table 表名;
|
||
插入表的语句:
|
||
insert into 表名(记录);
|
||
|
||
61.数据库中有一个6亿的表a,一个3亿的表b,通过外键tid进行关联。
|
||
|
||
62.你如何最快的查询出:满足条件的第50000到第50200中的这200条数据记录?
|
||
select * from a,b where a.tid=b.tid and a.tid BETWEEN 50000 AND 50200;
|
||
|
||
63.对于数据库备份正确的做法是什么?
|
||
同时使用多个备份设备,使得备份可以同时写入所有设备。同样,也可以同时从多个设备还原备份。
|
||
使用数据库备份、差异数据库备份和事务日志备份的组合,使得将数据库恢复到故障点所用的备份数量减到最少
|
||
使用文件和文件组备份以及事务日志备份,使得可以只备份或还原那些包含相关数据的文件,而不用备份整个数据库。
|
||
使用快照备份将备份和还原时间减到最少。
|
||
|
||
64.有如下表的结构: 写出SQL命令
|
||
emp员工表(empno员工号/ename员工姓名/job工作/mgr上级编号/hiredate受雇日期/sal薪金/comm佣金/deptno部门编号)
|
||
dept部门表(deptno部门编号/dname部门名称/loc地点)
|
||
CREATE TABLE DEPT--部门表
|
||
(
|
||
DEPTNO int CONSTRAINTPKDEPT PRIMARY KEY,--部门编号
|
||
DNAME VARCHAR(14),--部门名称
|
||
LOC VARCHAR(13) --所在地点
|
||
);
|
||
CREATE TABLE EMP --员工表
|
||
(
|
||
EMPNO int CONSTRAINTPKEMP PRIMARY KEY, --员工号
|
||
ENAME VARCHAR(10), --员工姓名
|
||
JOB VARCHAR(9), --工作
|
||
MGR int, --上级编号
|
||
HIRE DATEDATE, --受雇日期
|
||
SAL float , --薪金
|
||
COMM float, --佣金
|
||
DEPTNO int CONSTRAINTFKDEPTNOREFERENCESDEPT --部门编号);
|
||
|
||
问题1:列出至少有一个员工的所有部门
|
||
select distinctEMP.DEPTNO,DEPT.DNAME from EMP,DEPT where EMP.DEPTNO=DEPT.DEPTNO
|
||
2:列出所有员工的姓名及其上级的姓名
|
||
select ename,(select ename from emp where empno in(emp.mgr))from emp;
|
||
3:列出受雇日期晚于其直接上级的所有员工
|
||
select empno,ename from empa where hiredate >(select hiredate from emp where empno=a.mgr);
|
||
4:列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门
|
||
select dname,emp.*fromdept,empwheredept.deptno=emp.deptno;
|
||
5:列出薪金高于公司平均薪金的所有员工
|
||
select empno from emp where sal>(avg(sal));
|
||
6:列出与“SCOTT”从事相同工作的所有员工
|
||
select ename from emp where job=(select job form emp where ename=SCOTT) and ename not in(SCOTT);
|
||
7:列出所有员工的姓名、部门名称和工资
|
||
select ename,dname,(sal+nvl(comm,0))from emp,dept where emp.deptno=dept.deptno
|
||
8:列出薪金高于在部门30工作的所有员工的薪金的员工姓名和薪金
|
||
select * from emp where sal >all(select sal from emp where deptno=30);
|
||
9:列出所有部门的详细信息(包括部门表的所有字段)和部门人数
|
||
select * from deptaleftjoin(select deptno,count(*) from emp group by deptno)bona.deptno=b.deptno;
|
||
10:列出各种工作的最低工资
|
||
select jobmin(sal+nvl(comm,0))from empgroupbyjob
|
||
|
||
65.事务有几大特性?分别代表什么意思?
|
||
事务的四种隔离级别
|
||
1.原子性(atomicity):事务是一个完整的操作。事务的各步操作是不可分的;要么都执行、要么都不执行。
|
||
2.一致性(consistency):当事务完成时,数据必须处于一致状态。
|
||
3.隔离性(isolation):对数据进行修改的所有并发事务是彼此隔离的,这表明事务必须是独立的,它不应以任何方式
|
||
依赖于或影响其他事务。
|
||
4.持久性(durability):事务完成后,它对数据库的修改被永久保存,事务日志能保持事务的永久性。
|
||
事务的四种隔离级别?
|
||
隔离级别分为:
|
||
ReadUncommitted(读未提交)、ReadCommitted(读提交)、RepeatableRead(可以重复读)、Serializable(序列化)
|
||
事务是如何让通过日志来实现的(Redo)?
|
||
在Innodb存储引擎中,事务日志是通过redo和innodb的存储引擎日志缓冲(Innodblogbuffer)来实现的,当开始一
|
||
个事务的时候,会记录该事务的lsn(logsequencenumber)号;当事务执行时,会往InnoDB存储引擎的日志的日志缓存里面插
|
||
入事务日志;当事务提交时,必须将存储引擎的日志缓冲写入磁盘(通过innodb_flush_log_at_trx_commit来控制),也就是
|
||
写数据前,需要先写日志。这种方式称为“预写日志方式”,innodb通过此方式来保证事务的完整性。也就意味着磁盘上存储的数
|
||
据页和内存缓冲池上面的页是不同步的,是先写入redolog,然后写入datafile,因此是一种异步的方式。通过show
|
||
engineinnodb status\G来观察之间的差距
|
||
|
||
66.为100G的MySQL的数据库制定备份计划,简述mysqldump以及xtranbackup的实现
|
||
原理
|
||
1备份计划:
|
||
2xtrabackup实现原理
|
||
mysqldump属于逻辑备份。加入--single-transaction选项可以进行一致性备份。后台进程会先设置session的
|
||
事务隔离级别为RR(SETSESSIONTRANSACTIONISOLATIONLEVELREPEATABLEREAD),之后显式开启一个事务(STARTTRANSACTI
|
||
ON/*!40100WITHCONSISTENTSNAPSHOT*/),这样就保证了该事务里读到的数据都是事务事务时候的快照。之后再把表的数据
|
||
读取出来。如果加上--master-data=1的话,在刚开始的时候还会加一个数据库的读锁(FLUSHTABLESWITHREADLOCK),等开启
|
||
事务后,再记录下数据库此时binlog的位置(showmasterstatus),马上解锁,再读取表的数据。等所有的数据都已经导完,就可
|
||
以结束事务。
|
||
xtrabackup属于物理备份,直接拷贝表空间文件,同时不断扫描产生的redo日志并保存下来。最后完成innodb的备
|
||
份后,会做一个flushenginelogs的操作(老版本在有bug,在5.6上不做此操作会丢数据),确保所有的redolog都已经落盘(涉
|
||
及到事务的两阶段提交概念,因为xtrabackup并不拷贝binlog,所以必须保证所有的redolog都落盘,否则可能会丢最后一组
|
||
提交事务的数据)。这个时间点就是innodb完成备份的时间点,数据文件虽然不是一致性的,但是有这段时间的redo就可以让数
|
||
据文件达到一致性(恢复的时候做的事情)。然后还需要flushtableswithreadlock,把myisam等其他引擎的表给备份出来,备
|
||
份完后解锁。这样就做到了完美的热备。
|
||
备份计划:视库的大小来定,一般来说100G内的库,可以考虑使用mysqldump来做,因为mysqldump更加轻巧灵活,备份
|
||
时间选在业务低峰期,可以每天进行都进行全量备份(mysqldump备份出来的文件比较小,压缩之后更小)。
|
||
100G以上的库,可以考虑用xtranbackup来做,备份速度明显要比mysqldump要快。一般是选择一周一个全备,其余每天
|
||
进行增量备份,备份时间为业务低峰期。
|
||
备份恢复时间:物理备份恢复快,逻辑备份恢复慢
|
||
|
||
67.备份恢复失败如何处理:
|
||
首先在恢复之前就应该做足准备工作,避免恢复的时候出错。比如说备份之后的有效性检查、权限检查、空间检查等。如果
|
||
万一报错,再根据报错的提示来进行相应的调整。
|
||
|
||
68.Server-id存在作用:
|
||
mysql同步的数据中是包含server-id的,而server-id用于标识该语句最初是从哪个server写入的。因此server-id一定
|
||
要有的
|
||
Server-id不能相同的原因:每一个同步中的slave在master上都对应一个master线程,该线程就是通过slave的
|
||
server-id来标识的;每个slave在master端最多有一个master线程,如果两个slave的server-id相同,则后一个连接成功时
|
||
,slave主动连接master之后,如果slave上面执行了slavestop;则连接断开,但是master上对应的线程并没有退出;当
|
||
slavestart之后,master不能再创建一个线程而保留原来的线程,那样同步就可能有问题;
|
||
|
||
69.MySQL中myisam与innodb的区别
|
||
1.不同点有哪些?
|
||
1>.InnoDB支持事物,而MyISAM不支持事物 2>.InnoDB支持行级锁,而MyISAM支持表级锁
|
||
3>.InnoDB支持MVCC,而MyISAM不支持 4>.InnoDB支持外键,而MyISAM不支持
|
||
5>.InnoDB不支持全文索引,而MyISAM支持。
|
||
2.存储结构
|
||
MyISAM:每个MyISAM在磁盘上存储成三个文件。第一个文件的名字以表的名字开始,扩展名指出文件类型。.frm文件存
|
||
储表定义。数据文件的扩展名为.MYD(MYData)。索引文件的扩展名是.MYI(MYIndex)
|
||
InnoDB:所有的表都保存在同一个数据文件中(也可能是多个文件,或者是独立的表空间文件),InnoDB表的大小只受
|
||
限于操作系统文件的大小,一般为2GB。
|
||
3.存储空间
|
||
MyISAM:可被压缩,存储空间较小.支持三种不同的存储格式:静态表(默认,但是注意数据末尾不能有空格,会被去掉)、
|
||
动态表、压缩表.
|
||
InnoDB:需要更多的内存和存储,它会在主内存中建立其专用的缓冲池用于高速缓冲数据和索引。
|
||
4.可移植性、备份及恢复
|
||
MyISAM:数据是以文件的形式存储,所以在跨平台的数据转移中会很方便。在备份和恢复时可单独针对某个表进行操作。
|
||
InnoDB:免费的方案可以是拷贝数据文件、备份binlog,或者用mysqldump,在数据量达到几十G的时候就相对痛苦了。
|
||
5.事务支持
|
||
MyISAM:强调的是性能,每次查询具有原子性,其执行数度比InnoDB类型更快,但是不提供事务支持。
|
||
InnoDB:提供事务支持事务,外部键等高级数据库功能。具有事务(commit)、回滚(rollback)和崩溃修复能力
|
||
(crashrecoverycapabilities)的事务安全(transaction-safe(ACIDcompliant))型表。
|
||
6.AUTO_INCREMENT
|
||
MyISAM:可以和其他字段一起建立联合索引。引擎的自动增长列必须是索引,如果是组合索引,自动增长可以不是第一
|
||
列,他可以根据前面几列进行排序后递增。
|
||
InnoDB:InnoDB中必须包含只有该字段的索引。引擎的自动增长列必须是索引,如果是组合索引也必须是组合索引的
|
||
第一列。
|
||
7.表锁差异
|
||
MyISAM:只支持表级锁,用户在操作myisam表时,select,update,delete,insert语句都会给表自动加锁,如果加锁
|
||
以后的表满足insert并发的情况下,可以在表的尾部插入新的数据。
|
||
InnoDB:支持事务和行级锁,是innodb的最大特色。行锁大幅度提高了多用户并发操作的新能。但是InnoDB的行锁,只
|
||
是在WHERE的主键是有效的,非主键的WHERE都会锁全表的。
|
||
8.全文索引
|
||
MyISAM:支持FULLTEXT类型的全文索引
|
||
InnoDB:不支持FULLTEXT类型的全文索引,但是innodb可以使用sphinx插件支持全文索引,并且效果更好。
|
||
9.表主键
|
||
MyISAM:允许没有任何索引和主键的表存在,索引都是保存行的地址。
|
||
InnoDB:如果没有设定主键或者非空唯一索引,就会自动生成一个6字节的主键(用户不可见),数据是主索引的一部分,
|
||
附加索引保存的是主索引的值。
|
||
10.表的具体行数
|
||
MyISAM:保存有表的总行数,如果selectcount(*)fromtable;会直接取出出该值。
|
||
InnoDB:没有保存表的总行数,如果使用selectcount(*)fromtable;就会遍历整个表,消耗相当大,但是在加了
|
||
wehre条件后,myisam和innodb处理的方式都一样。
|
||
11.CURD操作
|
||
MyISAM:如果执行大量的SELECT,MyISAM是更好的选择。
|
||
InnoDB:如果你的数据执行大量的INSERT或UPDATE,出于性能方面的考虑,应该使用InnoDB表。DELETE从性能上
|
||
InnoDB更优,但DELETEFROMtable时,InnoDB不会重新建立表,而是一行一行的删除,在innodb上如果要清空保存有大量数据
|
||
的表,最好使用truncatetable这个命令。
|
||
12.外键
|
||
MyISAM:不支持
|
||
InnoDB:支持
|
||
13.两种引擎者selectcount(*)哪个更快,为什么?
|
||
innodb引擎的表在使用selectcount的时候,如果表的总行数在1-2万条以内,速度应该不是瓶颈,但是一旦超过了这个
|
||
值,随着行数的增多,selectcount查询效率会迅速的下降。
|
||
测试表大约4.3万行
|
||
Myisam引擎:
|
||
SELECT SQL_NO_CACHECOUNT(*) FROM `roundmember2`;
|
||
耗费105微秒
|
||
innodb引擎:
|
||
耗费10335微秒
|
||
可以看出innodb引擎耗时是myisam引擎的98倍!这还是仅仅是4万多行的数据下测试的差距,随着记录行的增加,这个
|
||
差距会越来越大。
|
||
MyISAM会保存表的总行数,这段代码在MyISAM存储引擎中执行,MyISAM只要简单地读出保存好的行数即可。因此,如果
|
||
表中没有使用事务之类的操作,这是最好的优化方案。然而,innodb表不像myisam有个内置的计数器,InnoDB存储引擎不会保存
|
||
表的具体行数,因此,在InnoDB存储引擎中执行这段代码,InnoDB要扫描一遍整个表来计算有多少行。
|
||
|
||
70.MySQL中varchar与char的区别以及varchar(50)中的50代表的涵义
|
||
1.varchar与char的区别
|
||
CHAR(char):固定长度,最多255个字符
|
||
VARCHAR(varchar):固定长度,最多65535个字符
|
||
CHAR的长度是固定的 VARCHAR长度是可以变化的
|
||
固定与可变是针对存储介质(硬盘)来说的
|
||
2.varchar(50)中50的涵义 ----- 设置表里的最多字符是50
|
||
3.int(9)中9的涵义 ----- 设置表里整数的最多数字是9个字节
|
||
|
||
71.mysqldump中备份出来的sql,如果我想sql文件中,一行只有一个insert...value()的话,怎么办?如果备份需要带上
|
||
master的复制点信息怎么办?
|
||
1.--skip-extended-insert
|
||
2.--master-date=1
|
||
|
||
72.mysql的架构,怎么保证它的安全性
|
||
1、避免从互联网访问MySQL数据库,确保特定主机才拥有访问特权
|
||
2、禁用或限制远程访问
|
||
3、定期备份数据库
|
||
4、设置root用户的口令并改变其登录名
|
||
5、移除测试(test)数据库
|
||
6、禁用LOCALINFILE
|
||
7、移除匿名账户和废弃的账户
|
||
8、降低系统特权
|
||
9、降低用户的数据库特权
|
||
10、移除和禁用.mysql_history文件
|
||
11、保持数据库为最新稳定版本,因为攻击者可以利用上一个版本的已知漏洞来访问企业的数据库。
|
||
12、启用日志
|
||
13、改变root目
|
||
14、禁用LOCALINFILE命令
|
||
|
||
73.设计一个shell程序,每5分钟执行一次获取当前服务器的基本情况(内存使用率,CPU负载,I/O,磁盘使用率),保存到
|
||
120.20.20.20数据库上数据库帐号aaa密码bbb库名test表名host,表结构自行设计
|
||
crontab -e
|
||
*/5 * * * * bash /serverstatus.sh
|
||
vim /serverstatus.sh
|
||
mysql -h 120.20.20.20 -u aaa -p'bbb' -e 'create test.host(cipan varchar(20),mem varchar(20),
|
||
loadaver1 varchar(20),loadaver2 varchar(20),loadaver3 varchar(20),ioaverage varchar(20))'
|
||
|
||
74.mysql备份和恢复
|
||
mysql备份方式有物理备份和逻辑备份
|
||
物理备份:有tar备份、lvm快照备份、利用percona-xtrabackup软件进行物理备份
|
||
逻辑备份示例:mysqldump-u用户名-p'123'-Btest>/mysql_backup/`date+%D`-mysql.test.sql
|
||
备份之后用mysqlbinlog查看:mysqlbinlog/mysql_backup/`date+%D`-mysql.test
|
||
恢复:
|
||
mysql -u用户名 -p'密码' </mysql_backup/`date+%D`-mysql.test.sql
|
||
mysqldump常用选项
|
||
#mysqldump -p'密码' --databases 库名--single-transaction --routines--triggers--master-data=2\ --flush-logs\
|
||
\>目标路径 --master-data=n n的取值范围为0-20表示不记录二进制日志文件以及路径位置
|
||
1表示以changemasterto的方式记录位置,可用于恢复启动后直接启动从服务器
|
||
2表示以changemasterto的方式记录位置,但是默认为被注释掉
|
||
--flush_logs:备份之前自动执行日志刷新到磁盘
|
||
--single-transaction启动热备份,启动热备份就无需我们手动锁表
|
||
--routines:存储过程,存储函数 --triggers:触发器
|
||
|
||
75.mysql主从延迟的各种原因
|
||
1、从库太多导致复制延迟 优化:建议从库数量3-5个为宜
|
||
2、从库的硬件比主库差 优化:提升硬件性能
|
||
3、慢SQL语句过多 优化:SQL语句执行时间太长,需要优化SQL,包括建立索引或者采用分库分表等。
|
||
4、主从复制的设计问题
|
||
优化:主从复制单线程,可以通过多线程IO方案解决;另外mysql5.6.3支持多线程的IO复制。
|
||
5、主从之间的网络延迟 优化:尽量采用短的链路,提升端口的带宽
|
||
6、主库读写压力大 优化:前端加buffer和缓存。主从延迟不同步
|
||
|
||
76.判断主从延迟的方法?
|
||
通过show slave status进行查看,比如可以看看Seconds_Behind_Master参数的值来判断,是否有发生主从延时。
|
||
NULL-表示io_thread或是sql_thread有任何一个发生故障,也就是该线程的Running状态是No,而非Yes.
|
||
0-该值为零,是我们极为渴望看到的情况,表示主从复制状态正常
|
||
|
||
|
||
|
||
ansible篇
|
||
1.常用的运维自动化工具写出两种:
|
||
saltstack ansible
|
||
2.请写出saltstack或者ansible中你常用的5个管理模块。
|
||
saltstack:
|
||
cmd acl cloud cp cron
|
||
ansible:
|
||
shell copy yum service cron user
|
||
3.ansible你用过它的哪些模块,ansbile同时分发多台服务器的过程很慢(它是逐台分发的),你想过怎么解决吗?
|
||
说几个常用的模块
|
||
通过ansible的异步和并发设置:async和pollw或者在配置文件中设置forks,并发进程数。
|
||
|
||
4.ansible用过没有,熟不熟,问对四百台服务器设置IP和不同的网关怎么做?
|
||
先确定机器和新ip、网关的对应关系,然后通过script模块执行shell脚本完成配置
|
||
|
||
5.版本发布用ansible吗?
|
||
|
||
6.Ansible有哪些优点
|
||
无需安装客户端
|
||
直接执行命令
|
||
基于ssh连接
|
||
|
||
7.怎么优化ansible?
|
||
优化异步(async)和并发(pollw)设置
|
||
优化ssh配置
|
||
优化缓存
|
||
优化Playbook结构
|
||
合理使用模块,避免使用过于复杂的模块
|
||
|
||
8.使用ansible-playbook创建一个abc用户并赋予644权限,hosts为all
|
||
vim /etc/ansible/create_user.yaml
|
||
---
|
||
- hosts: all
|
||
user: root
|
||
tasks:
|
||
- name: creat user
|
||
shell: useradd abc
|
||
- name: ugo
|
||
shell: chmod -R 644 /home/abc
|
||
|
||
9.请写出saltstack或者ansible中你常用的5个管理模块
|
||
文件模块:copy file blockinfile lineinfile find replace
|
||
包管理模块:yum_repository yum
|
||
命令模块:command shell script
|
||
系统类模块:cron,service,user,group
|
||
收集模块:setup
|
||
|
||
10.Linux下使用ansible实现批量修改50台机器上面的test用户密码。请写出实现方法
|
||
方法一:
|
||
---
|
||
- hosts: test
|
||
gather_facts: false
|
||
tasks:
|
||
- name: change user passwd
|
||
user: name={{item.name}}password={{item.chpass|password_hash('sha512')}}update_password=alwayscreaton
|
||
with_items: #创建和校验哈希密码
|
||
- {name:'root',chpass:'123'}
|
||
- {name:'rep',chpass:‘123’} 注释:对迭代项的引用,固定变量名为"item”,使用with_item属性给定要迭代的元素;
|
||
|
||
11.ansible都用来做什么
|
||
实现了批量系统配置
|
||
批量程序部署
|
||
批量运行命令
|
||
自动化运维工具
|
||
|
||
12.Ansible的优缺点?
|
||
优点:基于ssh连接,不需要服务端,使用时直接运行命令即可。轻量级不用安装客户端分布式的
|
||
缺点:二次开发难,ssh如果拷贝公钥不成功,无法实现批量管理。如果控制的机器少不适合用ansible
|
||
|
||
13.ansible原理 平时怎么用的
|
||
ansible的工作原理:
|
||
ansible在管理节点将ansible模块通过ssh协议推送到被管理端执行,执行完后自动删除,可以使用svn等来管理自定义模块及编排剧本或者命
|
||
令
|
||
vim /etc/ansible/test.yaml
|
||
- hosts:all
|
||
tasks:
|
||
- name:create user abc
|
||
user:name=abc state=present
|
||
ansible all -m user -a 'name=qianfeng state=present'
|
||
|
||
14.Ansible怎么去实现推送脚本和批量管理主机的
|
||
剧本(调用copy模块)
|
||
|
||
15.Ansible通过什么管理不同服务器
|
||
|
||
16.ansible部署zabbix-agent
|
||
vim /etc/ansible/install_zabbix-agent.yaml
|
||
---
|
||
- hosts: all
|
||
user: root
|
||
tasks:
|
||
- name: install epel-release
|
||
yum: name=epel-release
|
||
- name: install zabbix-agent
|
||
yum: name=zabbix-agent
|
||
- name: start zabbix-agent
|
||
service: name=zabbix-agent state=started
|
||
|
||
17.ansible部署zabbix的agent端的时候怎么定义主机组的
|
||
|
||
18.playbook怎么写的?格式?如何传参?
|
||
|
||
19.ansible的playbook怎么配置,变量怎么定义,怎么调用
|
||
|
||
20.ansible怎么查看集群内其他服务器的内存
|
||
ansible 主机名/主机组/ip/别名 -m shell -a 'free -m'
|
||
|
||
21.ansible执行流程
|
||
确定可用资源
|
||
生成 playbook
|
||
运行 playbook
|
||
验证结果
|
||
自动化
|
||
|
||
22.怎么使用playbook批量nginx,具体到流程,且会用到什么模块
|
||
写好脚本 写个剧本 执行剧本
|
||
yum service copy shell
|
||
|
||
|
||
|
||
tomcat篇
|
||
1.请写出Tomcat程序的主配置文件名
|
||
在conf目录下:server.xml
|
||
|
||
2.Tomcat:调优工作模式基于什么协议
|
||
tomcat的运行模式有3种,即BIO、NIO和APR。 tomcat基于HTTP协议
|
||
|
||
3.Tomcat服务的配置文件是哪个?
|
||
tomcat服务的配置文件是server.xml
|
||
|
||
4.Tomcat调整JVM内存大小需要修改那些配置文件
|
||
在catalina.sh文件中,找到cygwin=false,在这一行的前面加入参数,具体如下
|
||
# vi TOMCAT_HOME/bin/catalina.sh
|
||
JAVA_OPTS="-server -Xms800m -Xmx800m -XX:PermSize=256m -XX:MaxPermSize=512m -XX:MaxNewSize=512m"
|
||
xms 最小堆大小
|
||
xmx 最大堆大小
|
||
-XX:PermSize 设置了永久代的最小大小
|
||
-XX:MaxPermSize 设置了永久代的最大大小
|
||
-XX:MaxNewSize 参数设置了新生代(包括Eden区和两个Survivor区)的最大大小
|
||
|
||
5.Tomcat服务器配置为2核4G,CATALINA.OUT日志目前6.2G,我们需要打开文件并搜索一些关键词,并分析上下文。用什么命
|
||
令查看比较合适,为什么?
|
||
vi catalina.out 进入后 /关键词
|
||
|
||
6.tomcat jvm内存参数,在物理内存充足的情况下,是否越大越好,为什么?
|
||
不是
|
||
1、如果系统上不止有tomcat,那么会影响其他服务的运行
|
||
2、tomcat有GC垃圾回收机制
|
||
|
||
7.优化tomcat你会如何操作
|
||
1.利用缓存和压缩
|
||
配置 Tomcat 使用 Gzip 压缩静态资源,以减少传输时间和带宽消耗。可以在 server.xml 中的 <Connector> 元素
|
||
中添加 compression 和 compressionMinSize 属性来启用压缩,并使用 compressableMimeType 属性指定要压缩的资
|
||
源类型。配置静态资源的缓存策略,通过设置合适的缓存头(如 Expires 和 Cache-Control),以减轻服务器负载并提高
|
||
响应速度。
|
||
2.优化内存
|
||
vi TOMCAT_HOME/bin/catalina.sh
|
||
JAVA_OPTS="-server -Xms800m -Xmx800m -XX:PermSize=256m -XX:MaxPermSize=512m -XX:MaxNewSize=512m"
|
||
xms 最小堆大小
|
||
xmx 最大堆大小
|
||
-XX:PermSize 设置了永久代的最大大小
|
||
-XX:MaxPermSize 设置了永久代的最小大小
|
||
-XX:MaxNewSize 参数设置了新生代(包括Eden区和两个Survivor区)的最大大小
|
||
3.优化连接配置
|
||
需要修改conf/server.xml文件,主要是优化连接配置,关闭客户端dns查询。
|
||
<Connector port="8080" #指定端口
|
||
protocol="org.apache.coyote.http11.Http11NioProtocol" #指定协议
|
||
connectionTimeout="20000" #指定连接超时时间
|
||
redirectPort="8443" #指定监听重定向的端口
|
||
maxThreads="500" #可处理的最大线程数
|
||
minSpareThreads="20" #空闲最小线程数
|
||
acceptCount="100" #无请求队列情况下,接受并处理的请求对列长度
|
||
disableUploadTimeout="true" #上传时是否因超时而中断
|
||
enableLookups="false" #否在接受连接时执行DNS查找
|
||
URIEncoding="UTF-8" /> #处理URL时使用的字符编码为UTF-8
|
||
|
||
8.写一个脚本,实现tomcat的web服务监控
|
||
监控tomcat的开启和关闭;或是端口8005,8009;http与tomcat连接是8080端口;与nginx是不需要端口
|
||
1.可以写脚本+计划任务
|
||
#vim/tomcat_monitor.sh
|
||
if [ $1 -eq 8080 ];then
|
||
lsof-i:8080
|
||
return $?
|
||
elif [ $1 -eq 8005 ];then
|
||
lsof-i:8005
|
||
return $?
|
||
else
|
||
return 8
|
||
fi
|
||
2.可以使用nagios
|
||
3.可以使用zabbix在agent的配置文件内定义key: (vim/etc/zabbix/zabbix_agentd.conf)
|
||
UserParameter=tomcat_port[*]:/tomcat_monitor.sh$ 编写脚本:
|
||
|
||
|
||
|
||
zabbix篇
|
||
1.zabbix怎么监控的 监控项都有哪些
|
||
操作系统最大文件打开数 操作系统最大进程数 cpu使用率 cpu数量 cpu信息 目录大小 文件大小
|
||
2.zabbix怎么维护的
|
||
|
||
3.zabbix监控的优缺点。
|
||
zabbix优点:
|
||
1.数据采集:可用性和性能检测,自动发现,支持agent、snmp、JMX、telnet等多种采集方式,支持主动和被动模式数据传输、支持用户自定义插
|
||
件,自定义间隔收集数据
|
||
2.高可用:server对设备性能要求低,支持proxy分布式监控,分布式集中管理,有自动发现功能,可以实现自动化监控;开放式接口,扩展性强,
|
||
插件编写容易
|
||
3.告警管理:支持多条件告警,支持多种告警方式,支持多组模板,模板继承。
|
||
4.告警设置:告警周期,告警级别,告警恢复通知、告警暂停,时段阈值、支持维护周期、支持单机停用
|
||
5.图形化展示:允许自定义创建多监控项视图,网络拓扑,自定义面板展示,自定义IT服务可用性
|
||
6.历史数据:历史数据查询可配置,内置housekeeping数据清理机制
|
||
7.安全审计:具备安全的用户审计日志,权限认证,用户可以限制允许维护的列表。
|
||
zabbix缺点:
|
||
1.性能瓶颈,监控系统没有低估高峰期,具有持续性和周期性,机器量越大,数据的增大会使数据库的写入成为一定的瓶颈,官网给出的单机上限
|
||
5000台,届时就需要增加proxy,增加成本。
|
||
2.Zabbix采集数据有pull方式,也就是server主动模式,当目标机器量大之后,pull任务会出现积压。采集数据会延迟
|
||
3、项目二次开发,需要分析MySQL表结构,表结构比较复杂,通过API开发对开发能力有要求。
|
||
4、内置housekeeping在执行过程中会对数据库增加压力,需要对数据库进行优化
|
||
|
||
4.zabbix界面出现字符乱码如何处理?
|
||
linux
|
||
直接更改字体
|
||
windows
|
||
解决方案:Win+R打开运行,输入fonts,回车进入Windows字体目录,找到微软雅黑-常规字体,复制出来将文件名修改为msyh.ttf,注意后缀ttf
|
||
,将msyh.ttf上传到服务器zabbix字体目录中:/usr/share/zabbix/fonts/,查看字体配置
|
||
#grep FONT_NAME /usr/share/zabbix/include/defines.inc.php-n,执行快捷替换:sed-i"s/graphfont/msyh/g"
|
||
/usr/share/zabbix/include/defines.inc.php
|
||
确认是否替换成功:grepFONT_NAME/usr/share/zabbix/include/defines.inc.php-n45:define
|
||
('ZBX_GRAPH_FONT_NAME','msyh');//fontfilename 93:define('ZBX_FONT_NAME','msyh');
|
||
字体配置修改成功后,刷新图形界面即可看到图形字体显示正常了。
|
||
|
||
5.zabbix如何判断MySQL是否存活?
|
||
1.将MySQL机器加到被监控机器
|
||
2.采用监控端口 采用查询服务状态
|
||
3.可以采用模块(net.tcp.listen[port])或自定义key 采用自定义key 将active值切出来
|
||
4.添加触发器 检测不到时触发 状态为dead时触发
|
||
5.添加用户 动作 报警媒介
|
||
|
||
6.写下之前工作中在生产环境配置使用过的监控系统?针对网络或服务配置过哪些监控项?使用什么方法进行报警通知
|
||
zabbix监控:
|
||
服务器启动分区剩余空间 服务器网络接口进出流量 服务器服务状态 服务器进程数量 服务器CPU状态 磁盘IO情况 文件修改磁盘总和
|
||
报警方式:邮件报警,微信报警,
|
||
|
||
7.使用何种工具监控的数据库?监控哪些指标?
|
||
zabbix
|
||
使用mysql自带的模板
|
||
监控:QPS(增删改查)、mysql请求流量带宽,mysql响应流量带宽,监控主从(show slave status\G);
|
||
TPS(每秒事务的处理数量);监控缓冲池使用情况;缓存碎片;慢查询数量;当前连接数;吞吐量;端口和服务状态;
|
||
mysql正常运行的时间;
|
||
|
||
|
||
|
||
Lvs篇
|
||
1.描述Lvs负载均衡的五种调度算法。
|
||
静态算法:rr(轮询调度算法),wrr(权重调度算法),sh(源地址散列),dh(目标地址散列,把同一个ip地址的请求,发送给同一个server)
|
||
动态调度算法:LC(最少连接),wlc(加权最少连接),sed(最短延迟调度),nq(永不排队,改进的sed)
|
||
|
||
2.LVS支持几种模式,工作过程是什么?
|
||
NAT模式
|
||
原理
|
||
过网络地址转换(NAT)实现的。在这种模式下,负载均衡器(LB)会重写请求报文的目标地址,包括IP和MAC,根据预设的调度算法,将请求分派
|
||
给后端的真实服务器(RS)。RS处理完请求后,返回的响应报文通过LB时,报文的源地址会被重写,修改为LB的MAC和IP,再返回给客户端,完成整个负载
|
||
调度过程。
|
||
TUN模式(隧道模式)
|
||
原LVS服务器和后端服务器之间通过IP隧道进行通信。客户端请求首先到达LVS服务器,LVS服务器根据负载均衡算法选择一个后端服务器,并将
|
||
请求通过IP隧道转发到后端服务器上。后端服务器处理请求并将响应返回给LVS服务器,LVS服务器再将响应通过IP隧道转发回客户端。
|
||
DR模式(直接路由模式)
|
||
原理
|
||
客户端向vip发出请求,根据负载均衡算法选择一台活跃的的节点且将节点网卡的mac地址作为目标mac地址,发送到局域网里,节点在局域
|
||
网中收到这个帧,拆开后发现目标IP(VIP)与本地匹配,于是处理这个报文.随后重新封装报文,发送到局域网.此时IP包的目标ip是客户端,源ip是自己
|
||
的vip地址。
|
||
LVS-FULLNAT转发模式
|
||
FULLNAT转发数据包是类似NAT模式,IN和OUT数据包都是经过LVS;
|
||
唯一的区别:后端RealServer 或者交换机不需要做任何配置。FULLNAT的主要原理是引入local address(内网ip地址),cip-vip转换为
|
||
lip->rip,而 lip和rip均为IDC内网ip,可以跨vlan通讯
|
||
|
||
3.介绍一下lvs具体在每一层都怎么实现的?
|
||
lvs集群里:
|
||
LVS是(LinuxVirtualServer)的简写,意即Linux虚拟服务器.是国人章文嵩发起的一个开源项目,是一个虚拟的服务
|
||
器集群系统.可以做四层的负载均衡.早期使用lvs需要修改内核才能使用。但是由于性能优异,现在已经被收入内核。
|
||
一般来说,LVS集群采用三层结构,其主要组成部分为:
|
||
A、负载调度器(loadbalancer),它是整个集群对外面的前端机,负责将客户的请求发送到一组服务器上执行,而
|
||
客户认为服务是来自一个IP地址(我们可称之为虚拟IP地址)上的。
|
||
B、服务器池(serverpool)是一组真正执行客户请求的服务器,执行的服务有WEB、MAIL、FTP和DNS等。
|
||
C、共享存储(sharedstorage),它为服务器池提供一个共享的存储区,这样很容易使得服务器池拥有相同的内容,
|
||
提供相同的服务。
|
||
调度器是服务器集群系统的唯一入口点(SingleEntryPoint),它可以采用IP负载均衡技术、基于内容请求分发技术
|
||
或者两者相结合
|
||
负载均衡层:处于整个集群的最前端,由一台或者多台调度器构成,LVS模块部署在调度器上,调度器根据既定的算法来
|
||
实现将网络请求调度到不同后端服务器,完成对应的功能。
|
||
服务器集群层:由一组实际运行着应用服务的服务器构成,后端服务器支持的服务包括,web服务,邮件服务,FTP服务,
|
||
DNS服务等一个或者多个,每个服务器之间可以通过LAN或者更大范围的WAN相连,在实际的应用场景中,调取服务器也可以作为
|
||
应用服务器提供服务。
|
||
共享数据层:向服务器集群中的所有realserver提供共享存储空间和内容一致性的存储区域。一般是由磁盘阵列组成,
|
||
提供数据的一致性。也可以由NFS提供。目前来说磁盘阵列更为适合,NFS受网络影响较大,不太稳定。
|
||
|
||
4.说一下为什么选择lvs
|
||
优点:
|
||
1.抗负载能力强、是工作在网络4层之上仅作分发之用,无流量的产生,这个特点也决定了它在负载均衡软件里的性能最强的,对内存和cpu资源消耗比较低。
|
||
2.配置性比较低,这是缺点也是优,因没有可太多配置的东西,所以并不需要太多接触,大大减少了人为出错的几率。
|
||
3.工作稳定,因为其本身抗负载能力很强,自身有完整的双机热备方案,如LVS+Keepalived,不过我们在项目实施中用得最多的还是LVS/DR+Keepalived。
|
||
4.无流量,LVS只分发请求,而流量并不从它本身出去,这点保证了均衡器IO的性能不会收到大流量的影响。
|
||
5.应用范围比较广,因为LVS工作在4层,所以它几乎可以对所有应用做负载均衡,包括http、数据库、在线聊天室等等。
|
||
缺点:
|
||
1.软件本身不支持正则表达式处理,不能做动静分离;而现在许多网站在这方面都有较强的需求,这个是Nginx/HAProxy+Keepalived的优势所在。
|
||
2.如果是网站应用比较庞大的话,LVS/DR+Keepalived实施起来就比较复杂了,特别后面有WindowsServer的机器的话,如果实施及配置还有维护过程就比较复杂了,相对而言,Nginx/HAProxy+Keepalived就简单多了。
|
||
|
||
|
||
|
||
Keepalived篇
|
||
1.请简单阐述keepalived的故障切换工作原理
|
||
keepalived通过vrrp协议来实现故障切换转移。在主节点正常工作的时候,不断向备节点发送心跳消息,告诉备节点自己还活着,当主节点发生故障
|
||
的时候,备节点就无法收到主节点的心跳消息,即可判定主节点发生故障,进而接管主节点的IP资源及服务。当主节点被修复时,备节点会释放自己所接管的IP资源和服务,恢复到原来备用的角色。
|
||
|
||
2.简述keepalived实现高可用部署的原理
|
||
Keepalived实现高可用部署的原理是基于VRRP协议。在高可用环境中,有两个主要的角色:VIP(Virtual IP)和Master。VIP是虚拟IP地址,可被多
|
||
节点共享,客户端可以通过VIP来访问服务。而Master节点则是当前正在提供服务的节点,当Master节点出现故障时,备用节点会接管主节点的IP资源和服务,从而保证服务的高可用性。
|
||
|
||
3.keepalived的协议?keepalived的核心
|
||
VRRP(虚拟路由冗余协议)
|
||
cron
|
||
|
||
4.请详细说明LVS DR模式的原理以及Keepalived高可用服务工作原理?
|
||
LVS DR:客户端向目标vip发出请求,LVS根据负载均衡算法选择一台活跃的的节点,将此节点的ip所在网卡的mac地址作为
|
||
目标mac地址,发送到局域网里,节点在局域网中收到这个帧,拆开后发现目标IP(VIP)与本地匹配,于是处理这个报文.随后重新
|
||
封装报文,发送到局域网.此时IP包的目标ip是客户端,源ip是自己的vip地址。
|
||
Keepalived高可用:keepalived通过vrrp协议来实现故障切换转移。在主节点正常工作的时候,不断向备节点发送心跳消
|
||
息,告诉备节点自己还活着,当主节点发生故障的时候,备节点就无法收到主节点的心跳消息,即可判定主节点发生故障,进而接
|
||
管主节点的IP资源及服务。当主节点被修复时,备节点会释放自己所接管的IP资源和服务,恢复到原来备用的角色。
|
||
|
||
5.Lvs和keepalived的区别?
|
||
lvs用于负载均衡,分担服务器压力
|
||
keepalived实现高可用,通常会对负载均衡集群实现高可用
|
||
|
||
6.keepalived的三大模块?
|
||
core
|
||
check
|
||
vrrp
|
||
|
||
|
||
|
||
Iptables和firewalld篇
|
||
1.问题1:禁止来自10.0.0.188ip地址访问80端口的请求
|
||
方法1:
|
||
iptables -t filter -A INPUT -s 10.0.0.188 -p tcp --dport 80 -j REJECT
|
||
方法2:
|
||
iptables -t filter -A INPUT -s 10.0.0.188 -p tcp --dport 80 -j DROP
|
||
问题2:用iptables添加一个规则允许192.168.0.123访问本机端口
|
||
iptables -t filter -A INPUT -s 192.168.0.123 -j ACCEPT
|
||
|
||
2.iptables是否支持time时间控制用户行为,如有请写出其具体操作步骤
|
||
支持。
|
||
需要增加相关支持的内核补丁,并且要重新编译内核。
|
||
或者使用crontab配合iptables
|
||
vi/deny.bat输入/sbin/iptables -A OUTPUT -p tcp -s 192.168.1.0/24 --dport 80 -j DROP
|
||
打开crontab-e
|
||
输入:00 21 * * * /bin/sh/deny.bat
|
||
|
||
3.如何将本地80端口的请求转发到8080端口,当前主机IP为192.168.16.1,其中本地网卡eth0
|
||
方法1:
|
||
iptables -t nat -A PREROUTING -i eth0 -d 192.168.16.2 --p tcp -m tcp --dport 22 -j DNAT --to 192.168.122.3:22
|
||
方法2:
|
||
iptables -t nat -A PREROUTING -i eth0 -d 192.168.16.1 -p tcp -m tcp --dport 80 -j REDIRECT --to -ports 8080
|
||
|
||
4.请注释说明以下iptables规则中划线部分中实现的功能
|
||
-A POSTROUTING -s 192.168.0.0/255.255.0.0 -j RETURN
|
||
-A POSTROUTING -d 192.168.0.0/255.255.0.0 -j RETURN
|
||
-I FORWARD -d 192.168.3.150 -j ACCEPT -m comment --comment "redisserver"
|
||
-A FORWARD -d 192.168.0.0/255.255.0.0 -j REJECT --reject-with_icmp-port-unreachable
|
||
-A POSTROUTING -s 10.0.1.0/255.255.255.0 -o eth0 -J MASQUERADE
|
||
|
||
5.centos7默认防火墙允许80端口外网访问,写出相应安全策略。
|
||
firewall-cmd --zone=public --add-port=80/tcp --permanent
|
||
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
|
||
|
||
6.service iptables stop与iptables -F有何区别?
|
||
service iptables stop停止iptables服务,防火墙设定的所有规则都失效,但表和链中的规则还在
|
||
iptables -F,清空所有表所有链中的规则,iptables服务是运行状态,链中的默认策略还生效
|
||
|
||
7.请问如何用iptables工具阻断来自192.168.0.1的所有网络连接
|
||
iptables -A INPUT -s 192.168.0.1 -j DROP
|
||
|
||
8.请写出iptables做NAT转发的步骤及iptables命令
|
||
DNAT目标地址转换
|
||
iptables -t nat -A PREROUTING -p tcp --d port80 -j DNAT --to 192.168.0.3:80
|
||
把从ppp0进来的要访问tcp/80的数据包的地址改为192.168.0.3
|
||
SNAT网络地址转换
|
||
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to 1.1.1.1
|
||
将内网192.168.0.0/24的源地址改为1.1.1.1
|
||
|
||
9.诊断DNAT映射是否成功的最好方法(命令)是?
|
||
elinks
|
||
http://映射前的ip
|
||
|
||
10.配置iptables,允许221.166.247.12访问本机(eth1:221.100.247.10,eth0:172.20.46.254)的8080端口,并将本机(eth1:221.100.247.10)的8080端口转发到172.20.46.30的80端口(使用NAT)(无需考虑系统限制及路由,写出iptables的配置即可)
|
||
iptables -A INPUT -p tcp --dport 8080 -s 221.166.247.12 -j ACCEPT
|
||
iptables -t nat -A PREROUTING -p tcp --dport 8080 -d 221.100.247.10 -j DNAT --to 172.20.46.30:80
|
||
|
||
11.实现把访问10.0.0.3:80的请求转到172.16.1.17:80
|
||
iptables -t nat -A PREROUTING -d 10.0.0.3 -p tcp --dport 80 -j DNAT --to 172.16.1.17:80
|
||
|
||
12.允许本机对外连接80端口(本机能连外界服务器为80)
|
||
iptables -A OUTPUT -p tcp –dport 80 -j ACCEPT
|
||
|
||
13.使用iptables拒绝8.8.8.8访问本机的53端口
|
||
iptables -I INPUT -s 8.8.8.8 -p tcp --dport 53 -j REJECT
|
||
|
||
14.如何将本地80端口的请求转发到8080端口,当前主机ip192168.2.1
|
||
iptables -t nat -A PREROUTING -d 192.168.2.1 -p tcp --dport 80 -j REDIRECT --to 8080
|
||
|
||
15.禁止外界ping本服务器
|
||
iptables -A INPUT -p icmp -j DROP
|
||
|
||
16.iptables的4表5链分别是什么
|
||
|
||
|
||
17.iptables如果仅对数据转发而不流入应该经过哪几个链
|
||
prerouting forward postrouting
|
||
数据包流入的话应该经过prerouting input outout postrouting
|
||
|
||
18.有IP恶意刷流量怎么办
|
||
将对应ip禁掉
|
||
iptables -t filter -A INPUT -s ip -p tcp --dport 80 -j REJECT
|
||
或者
|
||
iptables -t filter -A INPUT -s ip -p tcp --dport 80 -j DROP
|
||
|
||
|
||
Docker篇
|
||
1.如何批量清理临时镜像文件?
|
||
docker rmi $(sudo docker images -q -f danging=true)
|
||
|
||
2.如何查看镜像支持的环境变量?
|
||
docker run IMAGE env
|
||
|
||
3.本地的镜像文件都存放在哪里
|
||
于Docker相关的本地资源存放在/var/lib/docker/目录下,其中container目录存放容器信息,graph目录存放镜像信息,aufs目录下存放具体的
|
||
镜像底层文件。
|
||
|
||
4.构建Docker镜像应该遵循哪些原则?
|
||
A.整体远侧上,尽量保持镜像功能的明确和内容的精简,要点包括:
|
||
B.尽量选取满足需求但较小的基础系统镜像
|
||
C.清理编译生成文件、安装包的缓存等临时文件
|
||
D.安装各个软件时候要指定准确的版本号,并避免引入不需要的依赖
|
||
E.从安全的角度考虑,应用尽量使用系统的库和依赖#
|
||
F.使用Dockerfile创建镜像时候要添加dockerignore文件或使用干净的工作目录
|
||
|
||
5.容器退出后,通过docker ps 命令查看不到,数据会丢失么?
|
||
容器退出后会处于终止(exited)状态,此时可以通过 docker ps -a 查看,其中数据不会丢失,还可以通过docker star 来启动,只有删除容器
|
||
才会清除数据。
|
||
|
||
6.如何停止所有正在运行的容器?
|
||
使用docker kill $(sudo docker ps -q)
|
||
|
||
7.如何清理批量后台停止的容器?
|
||
使用docker rm $(sudo docker ps -a -q)
|
||
|
||
8.如何临时退出一个正在交互的容器的终端,而不终止它?
|
||
按Ctrl+p,后按Ctrl+q,如果按Ctrl+c会使容器内的应用进程终止,进而会使容器终止。
|
||
|
||
9.很多应用容器都是默认后台运行的,怎么查看它们的输出和日志信息?
|
||
使用docker logs,后面跟容器的名称或者ID信息
|
||
|
||
10.使用docker port 命令映射容器的端口时,系统报错Error: No public port ‘80’ published for …,是什么意思?
|
||
创建镜像时Dockerfile要指定正确的EXPOSE的端口,容器启动时指定PublishAllport=true
|
||
|
||
11.可以在一个容器中同时运行多个应用进程吗?
|
||
一般不推荐在同一个容器内运行多个应用进程,如果有类似需求,可以通过额外的进程管理机制,比如supervisord来管理所运行的进程
|
||
|
||
12.如何控制容器占用系统资源(CPU,内存)的份额?
|
||
在使用docker create命令创建容器或使用docker run 创建并运行容器的时候,可以使用-c|–cpu-shares[=0]参数来调整同期使用CPU的权重,
|
||
使用-m|–memory参数来调整容器使用内存的大小。
|
||
|
||
13.Docker的配置文件放在那里。如何修改配置?
|
||
Ubuntu系统下Docker的配置文件是/etc/default/docker,CentOS系统配置文件存放在/etc/sysconfig/docker
|
||
|
||
14.如何更改Docker的默认存储设置?
|
||
Docker的默认存放位置是/var/lib/docker,如果希望将Docker的本地文件存储到其他分区,可以使用Linux软连接的方式来做。
|
||
|
||
15.Docker与LXC(Linux Container)有何不同?
|
||
LXC利用Linux上相关技术实现容器,Docker则在如下的几个方面进行了改进:
|
||
移植性:通过抽象容器配置,容器可以实现一个平台移植到另一个平台;
|
||
镜像系统:基于AUFS的镜像系统为容器的分发带来了很多的便利,同时共同的镜像层只需要存储一份,实现高效率的存储;
|
||
版本管理:类似于GIT的版本管理理念,用户可以更方面的创建、管理镜像文件;
|
||
仓库系统:仓库系统大大降低了镜像的分发和管理的成本;
|
||
周边工具:各种现有的工具(配置管理、云平台)对Docker的支持,以及基于Docker的Pass、CI等系统,让Docker的应用更加方便和多样化。
|
||
|
||
16.Docker与Vagrant有何不同?
|
||
两者的定位完全不同Vagrant类似于Boot2Docker(一款运行Docker的最小内核),是一套虚拟机的管理环境,Vagrant可以在多种系统上和虚拟机软件中运行,可以在Windows。Mac等非Linux平台上为Docker支持,自身具有较好的包装性和移植性。原生Docker自身只能运行在Linux平台上,但启动和运行的性能都比虚拟机要快,往往更适合快速开发和部署应用的场景。
|
||
|
||
17。开发环境中Docker与Vagrant该如何选择?
|
||
Docker不是虚拟机,而是进程隔离,对于资源的消耗很少,单一开发环境下Vagrant是虚拟机上的封装,虚拟机本身会消耗资源。
|
||
|
||
18.Docker能在非Linux平台(Windows+MacOS)上运行吗?
|
||
可以
|
||
|
||
19.如何将一台宿主机的docker环境迁移到另外一台宿主机?
|
||
停止Docker服务,将整个docker存储文件复制到另外一台宿主机上,然后调整另外一台宿主机的配置即可
|
||
|
||
20.Docker容器创建后,删除了/var/run/netns 目录下的网络名字空间文件,可以手动恢复它:
|
||
查看容器进程ID,比如1234
|
||
sudo docker inspect --format='{{. State.pid}}' $container_id 1234
|
||
到proc目录下,把对应的网络名字空间文件链接到/var/run/netns,然后通过正常的系统命令查看操作容器的名字空间。
|
||
|
||
21.对docker都知道些什么
|
||
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器或Windows机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口
|
||
|
||
22.vmware和docker的区别
|
||
VM(VMware)在宿主机器、宿主机器操作系统的基础上创建虚拟层、虚拟化的操作系统、虚拟化的仓库,然后再安装应用;
|
||
Container(Docker容器),在宿主机器、宿主机器操作系统上创建Docker引擎,在引擎的基础上再安装应用。
|
||
|
||
23.Docker 和虚拟机有啥不同?
|
||
Docker 是轻量级的沙盒,在其中运行的只是应用,虚拟机里面还有额外的系统
|
||
|
||
24.docker 的三大组件是什么?分别的作用?
|
||
镜像(Image)、容器(Container)、仓库(Repository)是我们常说的Docker的三大组件
|
||
Docker镜像就是一个Linux的文件系统(Root FileSystem),这个文件系统里面包含可以运行在Linux内核的程序以及相应的数据。
|
||
容器是通过镜像来创建的,所以必须先有镜像才能创建容器,而生成的容器是一个独立于宿主机的隔离进程,并且有属于容器自己的网络和命名空间
|
||
仓库(Repository)是集中存储镜像的地方,这里有个概念要区分一下,那就是仓库与仓库服务器(Registry)是两回事,像我们上面说的Docker Hub,就是Docker官方提供的一个仓库服务器,不过其实有时候我们不太需要太过区分这两个概念。
|
||
|
||
25.docker中-v -ps分别是什么
|
||
版本 活动的docker
|
||
|
||
26.docke容器技术有哪些优势和不足?
|
||
容器的优点
|
||
敏捷环境:容器技术最大的优点是创建容器实例比创建虚拟机示例快得多,容器轻量级的脚本可以从性能和大小方面减少开销。
|
||
提高生产力:容器通过移除跨服务依赖和冲突提高了开发者的生产力。每个容器都可以看作是一个不同的微服务,因此可以独立升级,而不用担心同步。
|
||
版本控制:每一个容器的镜像都有版本控制,这样就可以追踪不同版本的容器,监控版本之间的差异等等。
|
||
运行环境可移植:容器封装了所有运行应用程序所必需的相关的细节比如应用依赖以及操作系统。这就使得镜像从一个环境移植到另外一个环境更加灵活。比如,同一个镜像可以在 Windows 或 Linux 或者 开发、测试或 stage 环境中运行。
|
||
标准化: 大多数容器基于开放标准,可以运行在所有主流 Linux 发行版、Microsoft 平台等等。
|
||
安全:容器之间的进程是相互隔离的,其中的基础设施亦是如此。这样其中一个容器的升级或者变化不会影响其他容器。
|
||
容器的缺点
|
||
复杂性增加:随着容器及应用数量的增加,同时也伴随着复杂性的增加。在生产环境中管理如此之多的容器是一个极具挑战性的任务,可以使用Kubernetes 和 Mesos 等工具管理具有一定规模数量的容器。
|
||
原生 Linux 支持:大多数容器技术,比如 Docker,基于 Linux 容器(LXC),相比于在原生 Linux 中运行容器,在Microsoft 环境中运行容器略显笨拙,并且日常使用也会带来复杂性。
|
||
不成熟:容器技术在市场上是相对新的技术,需要时间来适应市场。开发者中的可用资源是有限的,如果某个开发者陷入某个问题,可能需要花些时间才能解决问题。
|
||
|
||
27.如何批量删除已停止运行的容器?
|
||
docker ps -a|grep Exited|awk '{print $1}'
|
||
docker rm `docker ps -a|grep Exited|awk '{print $1}'`
|
||
|
||
28.查看容器名为rancher-scrvcr的输出日志?
|
||
docker logs -f -t --tail 行数 容器名
|
||
|
||
29.容器有几种网络模式?分别有哪些特点?
|
||
三种
|
||
Container:这个模式指定新创建的容器和已经存在的一个容器共享一个 Network Namespace,而不是和宿主机共享。新创建的容器不会创建
|
||
自己的网卡,配置自己的 IP,而是和一个指定的容器共享IP、端口范围等。同样,两个容器除了网络方面,其他的如文件系统、进程列表等还是隔离的。两个容器的进程可以通过 lo 网卡设备通信。
|
||
None:该模式关闭了容器的网络功能。
|
||
Bridge:此模式会为每一个容器分配、设置IP等,并将容器连接到一个docker0虚拟网桥,通过docker0网桥以及Iptables nat表配置与宿主机通信。
|
||
|
||
30.写出下列操作对应的命令
|
||
删除pod
|
||
kubectl delete pod pod名
|
||
查看 pod
|
||
kubectl get pod
|
||
查看 service列表
|
||
kubectl get svc
|
||
查看所有 Docker容器
|
||
docker ps -a
|
||
删除 Docker容器
|
||
docker rm -f $(docker ps -a -q)
|
||
查看Docker镜像
|
||
docker images
|
||
删除 Docker镜像
|
||
docker rmi image名
|
||
获取镜像
|
||
docker pull image名
|
||
|
||
31.Dockerfile如何优化?
|
||
编写.dockerignore 文件
|
||
容器只运行单个应用
|
||
将多个 RUN 指令合并为一个
|
||
基础镜像的标签不要用 latest
|
||
每个 RUN 指令后删除多余文件
|
||
选择合适的基础镜像(alpine 版本最好)
|
||
设置 WORKDIR 和 CMD
|
||
使用 ENTRYPOINT (可选)
|
||
在 entrypoint 脚本中使用 exec
|
||
COPY 与 ADD 优先使用前者
|
||
合理调整 COPY 与 RUN 的顺序
|
||
设置默认的环境变量,映射端口和数据卷
|
||
使用 LABEL 设置镜像元数据
|
||
添加 HEALTHCHECK
|
||
|
||
32.描述一下服务器虚拟化技术和容器技术原理,以及各自的优劣
|
||
虚拟化的优点:
|
||
1、资源池化,将硬件资源虚拟化为抽象的资源从而提升了资源利用率;
|
||
2、具有易拓展性,当物理资源不够时可以增添物理资源再将其抽象成虚拟资源以供使用。
|
||
3、为云服务的到来打下基础;这时我们发现虚拟化技术并没有解决全部的问题,
|
||
缺点:
|
||
每一个虚拟机环境都需要在一个完整的OS之上运行,当虚拟机个数较多时就会对物理资源造成很大的占用。同时依旧需要物理服务器的支持,且可移植性的问题依旧没有解决。
|
||
在后来就有了容器技术,它将软件及其运行环境打包成一个整体从而主要解决了可移植性、开发和运维环境差异等带来的问题,它和云计算结合更是解决了必须具备物理服务器的问题,随之而来的问题也就迎刃而解了;
|
||
|
||
33.docker容器其中的命令有哪些,举例说明。
|
||
docker run --name myredis –d redis 运行一个name为myredis的容器
|
||
docker ps 查看运行中的容器
|
||
docker start container-name/container-id 启动一个容器
|
||
docker stop container-name/container-id 停止一个容器
|
||
docker rm container-id 删除一个容器
|
||
|
||
34.如何查看容器挂载了哪些目录?
|
||
docker inspect container_name | grep Mounts -A 20
|
||
|
||
35.为什么构建镜像要尽量小?哪些措施可以使构建镜像更小?
|
||
因为传输和部署体积较小的镜像速度更快。
|
||
尽量在同一层运行更多的命令
|
||
如果在镜像中通过yum安装软件包,尽量在一行装完,不要多行,同样安装完后运行,clean all后对大小影响很大
|
||
|
||
36.可以在一个Docker Container中同时运行多个应用进程吗?
|
||
可以同时运行,但不建议
|
||
|
||
37.了解docker和别的虚拟化技术的区别吗?
|
||
1.标准化应用发布,docker容器包含了运行环境和可执行程序,可以跨平台和主机使用;
|
||
2.节约时间,快速部署和启动,VM启动一般是分钟级,docker容器启动是秒级;
|
||
3.方便构建基于SOA架构或微服务架构的系统,通过服务编排,更好的松耦合;
|
||
4.节约成本,以前一个虚拟机至少需要几个G的磁盘空间,docker容器可以减少到MB级;
|
||
5.方便持续集成,通过与代码进行关联使持续集成非常方便;
|
||
6.可以作为集群系统的轻量主机或节点,在IaaS平台上,已经出现了CaaS,通过容器替代原来的主机。
|
||
7.应用隔离
|
||
|
||
38..docker资源限制
|
||
|
||
39.docker优化
|
||
|
||
40.docker-compose 启动的一组容器之间可以用localhost互相通信吗?
|
||
|
||
41.docker如何查看磁盘信息?docker网络模式?
|
||
|
||
42.docker进入容器的方式有哪些?有什么区别?
|
||
|
||
43.如何通过Dockerfile创建镜像文件?有几种方式?
|
||
|
||
44.docker怎么创建网络,网络是什么类型
|
||
|
||
45.如何把服务迁移到docker上?
|
||
|
||
46.docker镜像分层
|
||
|
||
47.docker是否生产中常用,有没有上线过什么项目
|
||
|
||
48.docker怎么做资源限制,基于什么机制
|
||
|
||
49.宿主机访问不通docker容器,但是服务是正常的,网络层面的问题,还有其他的方面
|
||
|
||
50..docker的核心是什么,基于什么实现的,cgroup是做什么用的?说一下常用的模块,ADD和copy的区别,CMD和RUN的区别
|
||
|
||
51.如何尽可能写最小的docker镜像?
|
||
|
||
|
||
|
||
Kubernetes篇
|
||
1.什么是kubernetes? 有何优势?怎么安装(说说安装方法、分别的理解) ?
|
||
Kubernetes一个用于容器集群的自动化部署、扩容以及运维的开源平台。通过Kubernetes,你可以快速有效地响应用户需求;快速而有预期地部署你的应用;极速地扩展你的应用;无缝对接新应用功能;节省资源,优化硬件资源的使用。为容器编排管理提供了完整的开源方案。
|
||
优势
|
||
快速部署:因为你可以快速的创建并且发布一个小型服务
|
||
更容易迭代:因为可以独立的为每个服务添加新功能
|
||
更加灵活:就算单个服务(组件)不能使用,其他的服务仍能正常运行。
|
||
安装
|
||
Kubernetes有用二进制安装包安装的方式,但是比较费劲,所以k8s推出了kubeadm的安装方式,将k8s的各个组件都安装在docker之上,以容器的方式运行,也是官方推荐的方式。
|
||
|
||
2.kubernetes怎么做版本回退?谈谈你的理解。
|
||
kubernetes的版本回退,因为已经在线上使用挺久的时间了,是利用kubernetes deployment的rollout histrory回退到指定版本。
|
||
|
||
3.能否通过kubernetes部署一一个简单的web (nginx)? 说说思路。
|
||
KubernetesDeployment为Pod 和Replica Set(下一代Replication Controller)提供声明式更新。只需要在 Deployment 中描述想要的目
|
||
标状态是什么,Deployment Controller 就会帮开发者将 Pod 和 ReplicaSet 的实际状态改变成目标状态。开发者可以定义一个全新的Deploymen
|
||
t来创建 ReplicaSet 或者删除已有的 Deployment 并创建一个新的来替换。使用Deployment能够更加方便地管理Pod,包括扩容、缩容、暂停、滚动更新、回滚等。在Choerodon中用实例的方式来展现Deployment,同时支持在线升级,停止,删除等多元化功能
|
||
|
||
4.kubernetes 集群由那些主要组件组成?各个组件的功能是什么,它们之间是如何交互的?
|
||
Pod 安排在节点上,包含一组容器和卷。同一个Pod里的容器共享同一个网络命名空间,可以使用localhost互相通信。Pod是短暂的,不是持续性实体
|
||
Lable
|
||
一些Pod有Label(enter image description here)。一个Label是attach到Pod的一对键/值对,用来传递用户定义的属性。上面。
|
||
Replication Controller
|
||
确保任意时间都有指定数量的Pod“副本”在运行。如果为某个Pod创建了Replication Controller并且指定3个副本,它会创建3个Pod,且持续
|
||
监控它们。如果某个Pod不响应,那么Replication Controller会替换它,保持总数为3.
|
||
如果之前不响应的Pod恢复了,现在就有4个Pod了,那么Replication Controller会将其中一个终止保持总数为3。如果在运行中将副本总数改为5,Replication Controller会立刻启动2个新Pod,保证总数为5。还可以按照这样的方式缩小Pod,这个特性在执行滚动升级时很有用。
|
||
当创建Replication Controller时,需要指定两个东西:
|
||
Pod模板:用来创建Pod副本的模板
|
||
Label:Replication Controller需要监控的Pod的标签。
|
||
Service
|
||
Service是定义一系列Pod以及访问这些Pod的策略的一层抽象。Service通过Label找到Pod组。因为Service是抽象的,所
|
||
Node
|
||
节点(上图橘色方框)是物理或者虚拟机器,作为Kubernetes worker,通常称为Minion。每个节点都运行如下Kubernetes关键组件:
|
||
Kubelet:是主节点代理。
|
||
Kube-proxy:Service使用其将链接路由到Pod,如上文所述。
|
||
Docker或Rocket:Kubernetes使用的容器技术来创建容器。
|
||
Master
|
||
集群拥有一个Kubernetes Master(紫色方框)。Kubernetes Master提供集群的独特视角,并且拥有一系列组件,比如Kubernetes API Server。API Server提供可以用来和集群交互的REST端点。master节点包括用来创建和复制Pod的Replication Controller。
|
||
|
||
5.kubernetes中的pod内有几个容器它们之间是什么关系?
|
||
Pod中的容器们运行在一个逻辑“主机”上。他们使用同一个网络命名空间(network namespace,换句话讲,就是同样的IP地址和端口空间),以及同样的IPC(inter-process communication,进程间通信)命名空间,他们还使用共享卷(shared volume)。这些特征使得Pod内的容器能互相高效地通信。同时,Pod使得你可以将多个紧耦合的应用容器当做一个实体来管理。
|
||
|
||
6.K8s 集群中有一个节点notready.请说明排查该节点故障流程。
|
||
检查master到node节点的网络,或者重启一下网络pod,
|
||
|
||
7.如何通过kubectl查看某个 label 关联的所有pod。
|
||
kubectl get pods -l name=<label-name>
|
||
|
||
8.kubectl get pod的时候某个pod一直处理terminating, 以什么命令可以强制删除。
|
||
使用kubectl中的强制删除命令
|
||
kubectl delete pod podName -n NAMESPACE --force --grace-period=0
|
||
|
||
9.请问你在kubernetes中用过有状态服务吗?有哪些?
|
||
有,mysql数据库、kafka、zookeepe
|
||
|
||
10.如何从外部(kubernetes集群之外), 访问到kubernetes里创建的service?
|
||
根据创建Service的type类型不同,可分成4种模式:
|
||
ClusterIP: 默认方式。根据是否生成ClusterIP又可分为普通Service和Headless Service两类:
|
||
普通Service:通过为Kubernetes的Service分配一个集群内部可访问的固定虚拟IP(Cluster IP),实现集群内的访问。为最常见的方式。
|
||
Headless Service:该服务不会分配Cluster IP,也不通过kube-proxy做反向代理和负载均衡。而是通过DNS提供稳定的网络ID来访问,DNS会将headless service的后端直接解析为podIP列表。主要供StatefulSet使用。
|
||
NodePort:除了使用Cluster IP之外,还通过将service的port映射到集群内每个节点的相同一个端口,实现通过nodeIP:nodePort从集群外访问服务。
|
||
LoadBalancer:和nodePort类似,不过除了使用一个Cluster IP和nodePort之外,还会向所使用的公有云申请一个负载均衡器(负载均衡器后端映射到各节点的nodePort),实现从集群外通过LB访问服务。
|
||
ExternalName:是 Service 的特例。此模式主要面向运行在集群外部的服务,通过它可以将外部服务映射进k8s集群,且具备k8s内服务的一些特征(如具备namespace等属性),来为集群内部提供服务。此模式要求kube-dns的版本为1.7或以上。这种模式和前三种模式(除headless service)最大的不同是重定向依赖的是dns层次,而不是通过kube-proxy。
|
||
|
||
11.请写出一些你用过的K8s常用命令,并简要说明用途。
|
||
kubectl get nodes
|
||
kubectl get pods --all -namesapces 获取所有pod
|
||
kubectl get ns
|
||
|
||
12.k8s如何对一个应用进行升级?
|
||
|
||
13.简述一下k8s的组件
|
||
|
||
14.k8s的服务有哪些
|
||
|
||
15.k8s的组件,service作用,有哪几种方式暴露端口
|
||
|
||
16.如何将一个服务部署到k8s集群中
|
||
|
||
17.k8s访问域名的请求怎么到容器里面
|
||
|
||
18.k8s资源限制
|
||
|
||
|
||
|
||
Redis篇
|
||
1.你配置过那些redis的参数,作用是什么?
|
||
Redis默认监听端口 port 6379
|
||
指定日志输出的文件名,可设为/dev/null屏蔽日志 logfile ""
|
||
保存数据到disk的策略:
|
||
900 秒有 1 条改变保存到disk save 900 1
|
||
300 秒有 10 条改变保存到disk save 300 10
|
||
60 秒有 10000 条改变保存到disk save 60 10000
|
||
本地数据库存放路径,默认值为 ./ dir ./
|
||
|
||
2.redis有几种高可用方案,每个方案的优缺点
|
||
Redis多副本(主从)
|
||
优点:
|
||
1、高可靠性,一方面,采用双机主备架构,能够在主库出现故障时自动进行主备切换,从库提升为主库提供服务,保证服务平稳运行。另一方面,开启数据持久化功能和配置合理的备份策略,能有效的解决数据误操作和数据异常丢失的问题。
|
||
2、读写分离策略,从节点可以扩展主库节点的读能力,有效应对大并发量的读操作。
|
||
RedisSentinel:
|
||
1、RedisSentinel集群部署简单
|
||
2、能够解决Redis主从模式下的高可用切换问题
|
||
3、很方便实现Redis数据节点的线形扩展,轻松突破Redis自身单线程瓶颈,可极大满足对Redis大容量或高性能的业务需求。
|
||
4、可以实现一套Sentinel监控一组Redis数据节点或多组数据节点
|
||
RedisCluster
|
||
1、无中心架构
|
||
2、数据按照slot存储分布在多个节点,节点间数据共享,可动态调整数据分布。
|
||
3、可扩展性,可线性扩展到1000多个节点,节点可动态添加或删除。
|
||
4、高可用性,部分节点不可用时,集群仍可用。通过增加Slave做standby数据副本,能够实现故障自动failover,节点之间通过gossip协议交换状态信息,用投票机制完成Slave到Master的角色提升。
|
||
5、降低运维成本,提高系统的扩展性和可用性。
|
||
|
||
3.redis的备份方式,有没有做过redis集群
|
||
RDB(RedisDataBase)是在不同的时间点,将redis存储的数据生成快照并存储到磁盘等介质上;
|
||
AOF(AppendOnlyFile)则是换了一个角度来实现持久化,那就是将redis执行过的所有写指令(每秒钟)记录在日志中,在下次redis重新启动时,只要把这些写指令从前到后再重复执行一遍,就可以实现数据恢复了。
|
||
|
||
4.redis有几种持久化存储化的方式?工作原理?两者是否能够共存?
|
||
有2种:AOF和RDB
|
||
RDB方式原理:当redis需要做持久化时(执行SAVA或者BGSAVA命令,或者是达到配置条件时执行),redis会fork一个子进程,子进程将数据写到磁盘上一个临时RDB文件中,当子进程完成写临时文件后,将原来的RDB替换掉(默认文件名为dump.rdb)
|
||
AOF方式原理:AOF可以做到全程持久化,Redis每执行一个修改数据的命令,都会把这个命令添加到AOF文件中,当Redis重启时,将会读取AOF文件进行“重放”以恢复到Redis关闭前的最后时刻。由于os会在内核中缓存write做的修改,所以可能不是立即写到磁盘上。这样aof方式的持久化也还是有可能会丢失部分修改。不过我们可以通过配置文件告诉redis我们想要通过fsync函数强制os写入到磁盘的时机。
|
||
可以共存
|
||
|
||
5.redis如何设置最大连接数
|
||
|
||
6.redis的缓存雪崩以及怎么预防。
|
||
|
||
7.redis的日常使用命令
|
||
|
||
|
||
|
||
|
||
Elk篇
|
||
1.
|
||
|
||
|
||
239.线上访问的WEB页面出现504,如何处理?
|
||
504表示超时,也就是客户端所发出的请求没有到达网关,请求没有到可以执行的php-fpm。
|
||
与nginx.conf的配置也有关系
|
||
fastcgi_connect_timeout 60 fastcgi_send_timeout 60 fastcgi_read_timeout 60
|
||
设置更久的nginx连接超时时间
|
||
|
||
244.包过滤防火墙与代理应用防火墙有什么区别,能列出几种相应的产品吗?
|
||
包过滤防火墙工作在网络协议IP层,它只对IP包的源地址、目标地址及相应端口进行处理,因此速度比较快,能够处理的并发连接比较多,缺点是对应用层的攻击无能为力。
|
||
代理服务器防火墙将收到的IP包还原成高层协议的通讯数据,比如http连接信息,因此能够对基于高层协议的攻击进行拦截。缺点是处理速度比较慢,能够处理的并发数比较少。
|
||
代理应用防火墙:天融信GFW4000
|
||
包过滤防火墙:华为NE16E
|
||
|
||
245.什么是NAT,常见分为哪几种,DNAT与SNAT有什么不同,应用事例有哪些?
|
||
NAT(NetworkAddressTranslation,网络地址转换)是将IP数据包头中的IP地址转换为另一个IP地址的过程。
|
||
分为DNAT(目的网络地址转换)和SNAT(源网络地址转换)
|
||
SNAT主要是用于内网主机通过路由器或网关访问外网
|
||
DNAT将外部地址和端口的访问映射到内部地址和端口
|
||
|
||
Haproxy可以做web中间件吗?
|
||
不可以Haproxy可以作web负载均衡。
|
||
|
||
ha-proxy作为目前流行的负载均衡软件,必须有其出色的一面。下面介绍一下ha-proxy相对LVS,Nginx等负载均衡软件的优点。
|
||
支持tcp/http两种协议层的负载均衡,使得其负载均衡功能非常丰富。
|
||
支持8种左右的负载均衡算法,尤其是在http模式时,有许多非常实在的负载均衡算法,适用各种需求。
|
||
性能非常优秀,基于事件驱动的链接处理模式及单进程处理模式(和Nginx类似)让其性能卓越。
|
||
拥有一个功能出色的监控页面,实时了解系统的当前状况。 功能强大的ACL支持,给用户极大的方便。
|
||
|
||
您用过的几种中间件/Web应用服务器软件产品,各是什么?
|
||
中间件:php:php-fpm php-mysql php-gd php-cli
|
||
jsp:Tomcat,Resin,JBOSS,WebSphere(IBM),Weblogic(Oracle)
|
||
Web应用服务器软件产品:
|
||
Apache,由于其跨平台和安全性被广泛使用,是最行流行的web服务器端软件之一;
|
||
tomcat服务器是一个免费的开放源代码的Web应用服务器nginx
|
||
|
||
后端Java,客户端访问慢,从哪几点考虑?
|
||
服务器内存java虚拟机内存分配问题并发设置进程设置
|
||
|
||
列出作为完整邮件系统的软件,至少二类
|
||
Sendmail,(邮件传输代理程序)
|
||
postfix,(WietseVenema在IBM的GPL协议之下开发的MTA(邮件传输代理)软件)
|
||
qmail(qmail是一个因特网邮件传送代理(简写为MTA),它运行在linux/Unix兼容系统下,是一个直接代替UNIX下Sendmail软件的邮件传送程序。)
|
||
|
||
你可以采取任何设备和不同操作系统服务设计对两台WWW服务器和两台FTP服务器作负载均衡,用网络拓扑图表示并加以说明!(方法越多越好)
|
||
这是利用DNS处理域名解析请求的同时进行负载均衡的一种方案。
|
||
在DNS服务器中配置多条A记录,
|
||
每次域名解析请求都会根据负载均衡算法计算一个不同的IP地址返回,这样A记录中配置的多个服务器就构成一个集群,并可以实现负载均衡。
|
||
www1INA192.168.1.1
|
||
www2INA192.168.1.2
|
||
www3INA192.168.1.3
|
||
ftp1INA192.1.1.4
|
||
ftp2INA192.1.1.5
|
||
ftp3INA192.1.1.6
|
||
wwwINCNAMEwww1
|
||
wwwINCNAMEwww2
|
||
wwwINCNAMEwww3
|
||
ftpINCNAMEftp1
|
||
ftpINCNAMEftp2
|
||
ftpINCNAMEftp3
|
||
|
||
请用画图的方法说明并讲解你曾经接触过的规模最大的服务器集群架构
|
||
client:客户端 cdn加速:内容分发网络 firewall:防火墙 wiki:(多人协作的写作系统) dr:负载均衡器 rabbitMQ:消息队列集群 站内搜索服务器solr(做集群,工具由开发选用)
|
||
memcachedx3:缓存堆(不能做集群,但可用多个。与gelara集群并行)
|
||
redis集群:(keepalived提供一个唯一ip入口)
|
||
pxe服务器:批量安装操作系统,初始化使用服务器 ansible:统一部署
|
||
zabbix:监控服务器(可用做高可用)(分布式监控:核心监控,代理层监控下的服务器才是真正被监控的机器)
|
||
ELK:开源实时日志分析平台 ips:入侵防御系统 ids:入侵检测系统
|
||
cmdb资产管理:配置管理数据库,通过识别、控制、维护,检查企业的IT资源,从而高效控制与管理不断变化的IT基础架构与IT服务
|
||
|
||
rsync+inotify是做什么的?加什么参数才能实现实时同步?--delete参数又是什么意思?
|
||
Linux内核从2.6.13版本开始提供了inotify通知接口,用来监控文件系统的各种变化情况,如文件存取、删除、移动等。
|
||
利用这一机制,可以非常方便地实现文件异动告警、增量备份,并针对目录或文件的变化及时作出响应。
|
||
使用rsync工具与inotify机制相结合,可以实现触发式备份(实时同步)
|
||
|
||
加什么参数才能实现实时同步?
|
||
inotify wait -m
|
||
|
||
--delete参数又是什么意思?
|
||
文件或目录被删除在监控目录中
|
||
|
||
虚拟化vSphere,Hyper-V,kvm
|
||
1、VMwarevSphere集成容器(VIC)建立了一个在轻量级虚拟机内部署并管理容器的环境。
|
||
2、Hyper-V是微软提出的一种系统管理程序虚拟化技术,能够实现桌面虚拟化
|
||
3、KVM是一个开源的系统虚拟化模块,自Linux2.6.20之后集成在Linux的各个主要发行版本中。它使用Linux自身的调度器进行管理,所以相对于Xen,其核心源码很少。KVM目前已成为学术界的主流VMM(虚拟机监控器)之一。
|
||
|
||
请简述非对称加密算法工作过程
|
||
1.乙方生成两把密钥(公钥和私钥)
|
||
2.甲方获取乙方的公钥,然后用它对信息加密。
|
||
3.乙方得到加密后的信息,用私钥解密,乙方也可用私钥加密字符串
|
||
4.甲方获取乙方私钥加密数据,用公钥解密
|
||
|
||
问:采用四层负载均衡的可以用哪种方式?
|
||
lvs haproxy 硬件负载均衡器(F5-BigIpRedware)
|
||
|
||
描述rabbitmq集群搭建步骤
|
||
通过Erlang的分布式特性(通过magiccookie认证节点)进行RabbitMQ集群,各RabbitMQ服务为对等节点,即每个节点都提供服务给客户端连接,进行消息发送与接收。
|
||
这些节点通过RabbitMQHA队列(镜像队列)进行消息队列结构复制。本方案中搭建3个节点,并且都是磁盘节点(所有节点状态保持一致,节点完全对等),只要有任何一个节点能够工作,RabbitMQ集群对外就能提供服务。
|
||
RabbitMQ集群安装在3个节点上:192.168.1.1、192.168.1.2、192.168.1.3;
|
||
HAProxy安装在192.168.1.1上,用于对外提供RabbitMQ均衡
|
||
|
||
你都知道哪些web服务器?
|
||
nginx apache tengine tomcat IIS
|
||
|
||
根据服务器硬件配置,安装Linux操做系统时如何分区? (硬件配置1:硬盘2T. 内存32G)、(便件配置2:硬盘6T. 内在128G)
|
||
1: /boot 50m swap 64G / 500G /home 1T /var 剩余 #boot是linux的核心
|
||
2: /boot 50m swap 256G / 1T /home 4.5G /var 剩余
|
||
|
||
根据服务器硬件配置,安装Linux操作系统时如何分区?
|
||
(硬件配置1:硬盘2T,内存32G)、(硬件配置2:硬盘6T,内存128G)
|
||
fdisk: swap分区根分区boot分区 8到16G剩下的给根 10G或20G
|
||
gdisk: 超过2T必须使用gdisk swap分区根分区boot分区 32G到64G
|
||
|
||
根据服务器硬件配置,安装linux操作系统时如何分区?(硬件配置1:硬盘2T,内存32G)、(硬件配置2:硬盘6T,内存128G)
|
||
硬件配置1:/boot 200M /swap 64G /1984G
|
||
硬件配置2:/boot 200M /swap 256G /5888G
|
||
其他分区根据生产环境配置
|
||
|
||
使用tcpdump监听tcp80端口来自192.168.0.1的所有流量,请写出命令.
|
||
tcpdump –i eth0 tcp and host 192.168.0.1 and port 80
|
||
tcpdump src 192.168.1.10 and tcp and port 80
|
||
|
||
使用rsync同步/var/log目录下的多个文件到test的log模块下,并记录log
|
||
rsync -avz user@ip:/var/log /test/log
|
||
|
||
配置zookeeper节点(列入:server.1=llhadoop009:9502:9503),需要修改的配置文件是
|
||
zoo.cfg
|
||
|
||
Squid有什么用?
|
||
Squid是一个高性能的代理缓存服务器,可以加快内部网浏览互联网的速度,提高客户机的访问命中率.Squid不仅仅支持
|
||
HTTP协议,还支持FTP,gopher,SSL和WAIS等协议,还可以做代理服务器,降低服务器负载。
|
||
|
||
一个文件名字为rr.Z可以用来解压的命令是?
|
||
uncompress
|
||
|
||
你对现在运维工程师的理解和以及对其工作的认识
|
||
运维工程师需要保障公司系统服务的正常运行,需要配和其他部门例如研发部门的发布工作,需要给公司进行系统搭建等等
|
||
运维工程师在公司当中责任重大,需要保证时刻为公司及客户提供稳定、安全的服务。保障公司正常对外提供服务。运维工
|
||
程师的一个小小的失误,很有可能会对公司及客户造成重大损失,因此运维工程师的工作需要严谨。
|
||
同时在工作中也要能及时发现问题,解决问题,记录问题。在工作中以及工作之余不断充实完善自己,更好的服务公司。
|
||
|
||
Linux运维工程师都需要具备哪些技能和职业品质?
|
||
熟练使用shell,最好也能掌握python的使用。
|
||
熟悉运维自动化工具和平台的使用,能整合、研发更好,通过自动化,实现运维数据可视化、生成报表;
|
||
能够独立进行运维的问题跟踪与管理,故障处理和隐患排查,定期给出业务运维状况和容量报告;
|
||
能够研究移动互联网应用服务架构及其依赖的软硬件环境,跟踪各个子系统的内部运行状况,不断提高系统的健壮性与效率;
|
||
能熟练应对协助开发完成日常变更,上下线等的维护事务;
|
||
能对系统和业务数据进行统一存储、备份和恢复,对网络设备、服务器设备、操作系统运行状况进行监控。
|
||
首先要有良好的品行需要有发现问题,解决问题的能力。遇事沉着冷静。动动你的小脑袋夸夸自己,
|
||
不过一定要积极向上,杜绝消极思想。
|
||
|
||
平时在公司都干些什么?
|
||
1.处理报警,查看报警的原因,和开发一起解决,并且尽量找出避免再次发生的方法,例如添加一些定时清理脚本
|
||
2.处理发布,基本都是自动化,但是总有发布不成功或者需要回滚的时候,这时候就需要手工介入,找到原因,并跟开发一起讨论最后是否撤销还是重上
|
||
3.日常一起能够自动化的工作尽量找到自动化的方法
|
||
4.会启动一些和运维相关的项目,所以有时候也兼职项目开发 5.参与例会 6.学习,看看新闻,学习资料等等。
|
||
或者
|
||
1.等待监控系统报警
|
||
2.核心系统巡检,备份系统备份任务完成情况巡检
|
||
3.等待用户报障
|
||
4.例行任务计划攥写,例行任务执行,比如新开用户,存储扩容等;
|
||
5.项目性的工作,比如新购存储,新的监控系统,新的操作系统,应用系统验证
|
||
6.学习新知识,看技术文档或者公司的各种通知 7,和不同供应商(工程师),内部人员开会
|
||
|
||
Linux运维工程师都需要具备哪些技能和职业品质?
|
||
技能:
|
||
1.足够专业的知识面储备
|
||
2.凭熟悉程度+相关文档结合配置服务,以便提高工作效率又防止漏配
|
||
品质:
|
||
1.学会去积累,网络、系统、数据库领域知识多如牛毛,以便于跟不同人士进行交流
|
||
2.对排错过程,问题以及解决方法做好笔记,等下个问题来了的时候,能记着最好,记不着就来查看笔记,以最快速度去
|
||
解决问题,而把时间精力拿来研究下一个问题
|
||
3.谨慎,有可能误操作让公司损失惨重,个人信心受到影响
|
||
4.责任心,主人翁意识,这片区域归我管!
|
||
|
||
对于一个web服务器来说,应该调整那些linux内核参数。并说明他们的含义。
|
||
net.ipv4.tcp_syncookies = 1
|
||
#表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭;
|
||
net.ipv4.tcp_tw_reuse = 1
|
||
#表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;
|
||
net.ipv4.tcp_tw_recycle = 1
|
||
#表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。
|
||
net.ipv4.tcp_fin_timeout = 30
|
||
#表示如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间。
|
||
net.ipv4.tcp_keepalive_time = 1200
|
||
#表示当keepalive起用的时候,TCP发送keepalive消息的频度。缺省是2小时,改为20分钟。
|
||
net.ipv4.ip_local_port_range = 1024 65000
|
||
#表示用于向外连接的端口范围。缺省情况下很小:32768到61000,改为1024到65000。
|
||
net.ipv4.tcp_max_tw_buckets = 5000
|
||
#表示系统同时保持TIME_WAIT套接字的最大数量,如果超过这个数字,
|
||
#TIME_WAIT套接字将立刻被清除并打印警告信息。默认为180000,改为5000。
|
||
|
||
一般可以使用什么软件远程linux服务器?通过什么上传和下载文件?
|
||
远程终端:crt xshell finalshell SecureCRT putty vnc(图形化)
|
||
上传下载:xftp lrzsz sftpscp
|
||
|
||
修改oracle环境变量/etc/profile文件并使之生效的命令。
|
||
#vi /etc/profile
|
||
定义oracle 环境变量
|
||
#source /etc/profile
|
||
|
||
当安装linux操作系统时一般选择那种操作?选择题
|
||
A."图形登录方式",设定系统开始运行级别为4
|
||
B."文本登录方式",设定系统开始运行级别为3
|
||
C."文本登录方式",设定系统开始运行级别为5
|
||
D."图形登录方式",设定系统开始运行级别为3
|
||
|
||
linux通过VFS支持多种不同的文件系统。linux缺省的文件系统是 B
|
||
A.VFAT
|
||
B.ISO9660
|
||
C.EXT系列
|
||
D.NTFS
|
||
|
||
网络管理员对www服务器可以进行访问,控制存取和运行等控制,这些控制可在 A 文件中体现?
|
||
A.httpd.conf
|
||
B.lilo.conf
|
||
C.inerd.conf
|
||
D.resolv.conf
|
||
|
||
如果想在linux下实现热启,应当修改/etc/inittab下的那一行 B
|
||
A.#Trap CTRL-ALT-DELETE
|
||
B.#ca::ctrlaltfel :/sbin/shutdown -t3 -r now
|
||
C.#id:3:initdefault
|
||
D.#10:3:wait:/etc/rc.d.rc 3
|
||
|
||
启动samba服务器进程,可以有两种方式:独立启动方式和父进程启动方式,其中后者在 C 文件中以独立进程方式启动。
|
||
A./usr/sbin/smbd
|
||
B./usr/sbin/nmbd
|
||
C.rc.samba
|
||
D./etc/indetd.com
|
||
|
||
下列哪个命令建立在一个tar归档文件的啥时候列出纤细列表 C
|
||
A.tar -l
|
||
B.tar -cv
|
||
C.tar -cvf
|
||
D.tar -r
|
||
|
||
某个项目现场需要对数据库做一些调整,项目经理早上通知A晚上7点到项目现场的机房开始准备工作,7点30准时开始调整,A晚上7点到现场后发现项目
|
||
现场的大门紧闭,给用户打电话为没人接,一直徘徊到8点才得以进入机房,A对数据库进行操作后,在程序上进行调试,对应的功能完成了修改,A离开现场。第二天下午项目经理打电话给小A说道用户反馈因A操作失误导致其他功能异常。整个事件出了那些问题,如果换成你改怎么做。
|
||
给用户打电话无人接听后给项目经理打电话确认时间是否修改以及确定如果时间推迟和客户确认是否还需要调整,调整前调整过后都和客户及项目
|
||
经理确认是否成功。
|
||
|
||
http 1.0和http 1.1下有何区别? http 2.0的主要变化或优势有哪些?
|
||
http1.0-1.1:
|
||
1、http 1.0需要使用keep-alive参数来告知服务器端要建立一个长连接,而http1.1默认支持长连接。
|
||
2、http1.0是没有host域的,http1.1才支持这个参数。
|
||
3、http1.1更加节约带宽
|
||
http2.0:
|
||
相比于http 1.x,大幅度的提升了web性能。在与http/1.1完全语义兼容的基础上,进一步减少了网络延迟
|
||
|
||
http和https有什么区别
|
||
http协议:是超文本传输协议,信息是明文传输。如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息。
|
||
https协议:是具有安全性的ssl加密传输协议,为浏览器和服务器之间的通信加密,确保数据传输的安全。
|
||
|
||
HTML语言中,用于加入一个层的标签是(),用于加入图片的标签是(),用于链接外部样式的标签是()
|
||
div
|
||
img
|
||
link
|
||
|
||
apache有几种工作模式,分别简述两种工作模式及其优缺点?
|
||
Prefork MPM:
|
||
优点:成熟,兼容所有新老模块。进程之间完全独立,使得它非常稳定。同时,不需要担心线程安全的问题。(我们常用的mod_php,PHP的拓展不需要支持线程安全)
|
||
缺点:一个进程相对占用更多的系统资源,消耗更多的内存。而且,它并不擅长处理高并发请求,在这种场景下,它会将请求放进队列中,一直等到有可用进程,请求才会被处理。
|
||
Worker MPM:
|
||
优点:占据更少的内存,高并发下表现更优秀。
|
||
缺点:必须考虑线程安全的问题,因为多个子线程是共享父进程的内存地址的。如果使用keep-alive的长连接方式,也许中间几乎没有请求,这时就会发生阻塞,线程被挂起,需要一直等待到超时才会被释放。如果过多的线程,被这样占据,也会导致在高并发场景下的无服务线程可用。(该问题在prefork模式下,同样会发生)
|
||
Event MPM
|
||
|
||
有一web服务器,某天某用户投诉上某个网站速度很慢,如果你是服务器的管理员,请问你如何查找原因。假设服务器有任意操作系统和软件。
|
||
1.检查网站的在线用户量,根据用户的并发量来做初步判断是不是因为并发量过大引起的数据库连接负荷原因。
|
||
2.检查数据库连接是否满负荷。
|
||
3.通过浏览器自带的检测请求发送到返回的时间来判断是否是因为用户带宽原因。
|
||
|
||
aptget remove httpd和apt-get purge httpd的区别是什么?
|
||
apt-get remove 只删除软件包,不删除配置文件
|
||
apt-get purge 删除软件包并删除配置文件
|
||
|
||
介绍一下哪些可以优化加速用户访问网站体验的技术措施?
|
||
1、使用固态硬盘存储静态资源,扩大带宽
|
||
2、压缩或精简代码
|
||
3、降低HTTP请求
|
||
4、服务器端开启gzip压缩功能
|
||
5、使用cdn加速
|
||
|
||
什么叫网站灰度发布?如何实现灰度发布?
|
||
什么是灰度发布
|
||
在一般情况下,升级服务器端应用,需要将应用源码或程序包上传到服务器,然后停止掉老版本服务,再启动新版本。但
|
||
是这种简单的发布方式存在两个问题,一方面,在新版本升级过程中,服务是暂时中断的,另一方面,如果新版本有BUG,升级失败,
|
||
回滚起来也非常麻烦,容易造成更长时间的服务不可用。
|
||
如何实现灰度发布:
|
||
Nginx+LUA方式
|
||
根据Cookie实现灰度发布
|
||
根据来路IP实现灰度发布
|
||
|
||
当你在浏览器输入一个网址,如http://www.baidu.com,按回车之后发生了什么?请从技术的角度描述,如浏览器、网络、服务器等各种参与对象上由此引发的一系列活动,请尽说出可能的涉及到所有的关键技术点。
|
||
1.DNS解析
|
||
DNS解析的过程就是寻找哪台机器上有你需要资源的过程,寻找的过程遵循就近原则。输入一个网址并按回车的时候浏览器会根据输入的URL去查找对应的IP,具体过程如下:
|
||
A.首先是查找浏览器缓存,浏览器会保存一段时间内访问过的一些网址的DNS信息,不同浏览器保存的时常不等。
|
||
B.如果没有找到对应的记录,这个时候浏览器会尝试调用操作系统缓存来继续查找这个网址的对应DNS信息。
|
||
C.如果还是没找到对应的IP,那么接着会发送一个请求到路由器上,然后路由器在自己的路由器缓存上查找记录,路由器一般也存有DNS信息
|
||
D.如果还是没有,这个请求就会被发送到ISP(注:Internet Service Provider,互联网服务提供商,就是网络运营商,中国电信中国移动
|
||
等),ISP也会有相应的ISP DNS服务器,就是本地DNS服务器,请求的域名基本上都能在这里找得到。
|
||
E.如果还是没有的话, ISP的DNS服务器会将请求发向根域名服务器进行搜索。根域名服务器就是面向全球的顶级DNS服务器,共有13台逻辑上的服务器,从A到M命名,真正的实体服务器则有几百台,分布于全球各大洲。
|
||
F.如果到了这里还是找不到域名的对应信息,那只能说明一个问题:这个域名本来就不存在,它没有在网上正式注册过。或者域名过期了。
|
||
这也就是为什么有时候打开一个新页面会有点慢,因为如果本地没什么缓存,查找域名的过程要这样递归地查询下去,查找完还要一层层的向上返回。例如"mp3.baidu.com",域名先是解析出这是个.com的域名,然后跑到管理.com域的服务器上进行进一步查询,然后是.baidu,最后是mp3, 所以域名结构为:三级域名.二级域名.一级域名。
|
||
所以DNS根据域名查询IP地址的过程为:浏览器缓存 --> 操作系统缓存 --> 路由器缓存-->本地(ISP)域名服务器缓存 --> 根域名服务器。
|
||
2.进行TCP连接
|
||
浏览器终于得到了IP以后,向服务器发送TCP连接,TCP连接经过三次握手。
|
||
3.浏览器发送HTTP请求
|
||
浏览器和服务器建立连接以后,浏览器接着给这个IP地址给服务器发送一个http请求,方式为get,例如访问www.baidu.com。其本质是在建立起的TCP连接中,按照HTTP协议标准发送一个索要网页的请求。
|
||
这个get请求包含了主机(Host)、用户代理(User-Agent),用户代理就是自己的浏览器,它是你的"代理人",Connection(连接属性)中的keep-alive表示浏览器告诉对方服务器在传输完现在请求的内容后不要断开连接,不断开的话下次继续连接速度就很快了。可能还会有Cookies,Cookies保存了用户的登陆信息,一般保存的是用户的JSESSIONID,在每次向服务器发送请求的时候会重复发送给服务器。
|
||
在建立连接发送请求时每个服务端需要和客户端保持通信,有很多客户端都会和服务器进行通信。服务器为了识别是哪个客户端与它通信,就必须用一个标识记录客户端的信息。客户端首次访问服务器,服务端返回响应时通过附带一个记录的客户端信息的标识来返回给客户端,这个标识就是JSESSIONID,JSESSIONID就放在了客户端的Cookies里。当客户端再次向服务器发送请求时上就使用上次记录的Cookies里面的JSESSIONID,这样服务器就知道是哪个浏览器了。这样他们之间就能保持通信了。
|
||
4.服务器处理请求
|
||
发送完请求接下来就是等待回应了,
|
||
服务器收到浏览器的请求以后,会解析这个请求(读请求头),然后生成一个响应头和具体响应内容。接着服务器会传回来一个响应头和一个响应,响应头告诉了浏览器一些必要的信息,例如重要的Status Code,2开头如200表示一切正常,3开头表示重定向,4开头是客户端错误,如404表示请求的资源不存在,5开头表示服务器端错误。响应就是具体的要请求的页面内容。
|
||
5.浏览器解析渲染页面
|
||
1浏览器显示HTML
|
||
当服务器返回响应之后,浏览器读取关于这个响应的说明书(响应头),然后开始解析这个响应并在页面上显示出来。
|
||
浏览器打开一个网址的时候会慢慢加载这个页面,一部分一部分的显示,直到完全显示,知道最后的旋转进度条停止。因此在浏览器没有完整接受全部HTML文档时,它就已经开始显示这个页面了。
|
||
2浏览器向服务器发送请求获取嵌入在HTML中的对象
|
||
在浏览器显示HTML时,打开一个网页的过程中,主页(index)页面框架传送过来以后,浏览器还会因页面上的静态资源多次发起连接请求,需要获取嵌入在HTML中的其他地址的资源。这时,浏览器会发送一些请求来获取这些文件。这些内容也要一点点地请求过来,所以标签栏转啊转,内容刷啊刷,最后全部请求并加载好了就终于好了。
|
||
这时请求的内容是主页里面包含的一些资源,如图片,视频,css样式,JavaScript文件等等。
|
||
这在文件属于静态文件,首次访问会留在浏览器的缓存中,过期才会从服务器去取。缓存的内容通常不会保存很久,因为难保网站不会被改动。
|
||
静态的文件一般会从CDN中去取,CDN根据请求获取资源的时候可能还会用到负载均衡。
|
||
3浏览器发送异步(AJAX)请求
|
||
对于那些动态的请求,动态网页等就必须要从服务器获取了。对于静态的页面内容,浏览器通常会进行缓存,而对于动态的内容,浏览器通常不会进行缓存。对于这些动态请求,Nginx可能会专门设置一些服务器用来处理这些访问动态页面的请求。
|
||
6.关闭TCP连接
|
||
当数据完成请求到返回的过程之后,根据Connection的Keep-Alive属性可以选择是否断开TCP连接,HTTP/1.1一般支持同一个TCP多个请求,而不是1.0版本下的完成一次请求就发生断开。TCP的断开与连接不一样,断开可以分为主动关闭和被动关闭,需要经过4次握手。
|
||
当浏览器需要的全部数据都已经加载完毕,一个页面就显示完了。
|
||
|
||
当用户反映访问你所维护的WEB服务器速度慢,访问其它网站都很流畅时.你的排查思路是什么?
|
||
1.检查网站的在线用户量,根据用户的并发量来做初步判断是不是因为并发量过大引起的数据库连接负荷原因。
|
||
2.检查数据库连接是否满负荷。
|
||
|
||
网站打开慢,请给出排查方法,如果是数据库慢导致,如何排查并解决。
|
||
1、是否后端服务有问题,例如php-fpm tomcat
|
||
2、进库explian 检查语句是否有进程问题
|
||
3、看看查询语句是否有索引
|
||
|
||
linux系统nginxphp环境,发现php-fpm进程高,请说明可能原因以及如何解决
|
||
1.php的插件程序与现有的PHP版本存在不兼容情况,解决方法从php.ini中禁止相关插件
|
||
2.php程序存在死循环现象,使用服务器负载过高,解决方法使用top命令查看
|
||
3.php-fpm服务池开启了太多子进程,通过配置 pm.max_children 属性,控制php-fpm子进程数量
|
||
|
||
关于DNS服务器,叙述正确的是(C),
|
||
A、DNS服务器配置不需要配置客户端
|
||
B、建立某个分区的DNS服务器时只需要建立一个主DNS服务器
|
||
C、主DNS服务器需要启动named进程,而辅DNS服务器不需要
|
||
D、DNS服务器的root.cache文件包含了根名字服务器的有关信息
|
||
|
||
当内网内没有条件建立dns服务器,又不想用IP访同网站,应配置什么文件。(A)
|
||
A.hosts
|
||
B.sysconfig
|
||
C.network
|
||
D.hostname
|
||
|
||
DNS域名系统主要负责主机名和(A)之间的解析
|
||
A、IP地址
|
||
B、MAC地址
|
||
C、网络游戏
|
||
D、主机别名
|
||
|
||
权威DNS和递归DNS、迭代DNS的不同
|
||
一、主机向本地域名服务器的查询一般都是采用递归查询。
|
||
所谓递归查询就是:如果主机所询问的本地域名服务器不知道被查询的域名的IP地址,那么本地域名服务器就以DNS客户的身份,
|
||
向其它根域名服务器继续发出查询请求报文(即替主机继续查询),而不是让主机自己进行下一步查询。
|
||
因此,递归查询返回的查询结果或者是所要查询的IP地址,或者是报错,表示无法查询到所需的IP地址。
|
||
二、本地域名服务器向根域名服务器的查询的迭代查询。
|
||
迭代查询的特点:当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的IP地址,要么告诉本地服务器:“你下一步应当向哪一个域名服务器进行查询”。
|
||
然后让本地服务器进行后续的查询。根域名服务器通常是把自己知道的顶级域名服务器的IP地址告诉本地域名服务器,让本地域名服务器向顶级域名服务器查询。
|
||
顶级域名服务器在收到本地域名服务器的查询请求后,要么给出所要查询的IP地址,要么告诉本地服务器下一步应当向哪一个权限域名服务器进行查询。
|
||
最后,知道了所要解析的IP地址或报错,然后把这个结果返回给发起查询的主机
|
||
|
||
Linux系统中DNS服务进程名为 A
|
||
A、named
|
||
B、httpd
|
||
C、ftpd
|
||
D、SysLog
|
||
|
||
linux系统中DNS服务的进程名为?
|
||
软件名为bind
|
||
启动服务: service bind start
|
||
|
||
DNS服务器的特点
|
||
DNS服务器重新对配置了静态地址的客户端进行重新配置
|
||
|
||
权威DNS和递归DNS、迭代DNS的不同?
|
||
递归解析”(或叫“递归查询”,其实意思是一样的)是最常见,也是默认的解析方式。在这种解析方式中,如果客户端配置的
|
||
本地名称服务器不能解析的话,则后面的查询全由本地名称服务器代替DNS客户端进行查询,直到本地名称服务器从权威名称服
|
||
务器得到了正确的解析结果,然后由本地名称服务器告诉DNS客户端查询的结果。
|
||
迭代DNS所有查询工作全部是DNS客户端自己进行(以“DNS客户端”自己为中心)。
|
||
|
||
简要说明客户机使用DHCP获取IP地址的过程
|
||
1、终端以广播的形式向网络内广播DISCOVER发现报文,报文中携带相关的参数列表。
|
||
2、网络内的服务器,从可用地址池中分配一个ip地址给客户机,向这个地址广播offer报文,报文中携带终端请求的参数。
|
||
3、终端从响应offer的服务器中选择一个,并在request报文中携带选择的服务器的ip和服务器分配给自己的ip地址。并进行广播,把终端选择的地
|
||
址和服务器通知网络内所有主机服务器。
|
||
4、网络内的服务器收到终端的request请求后,如果是终端选择的服务器,根据的是上面request报文中是否携带自身的信息,比如IP地址。则发送一
|
||
个广播ACK,确定分配地址等信息;如果不是终端选择的服务,则不响应,并收回分配的地址到可用地址池中。
|
||
5、终端收到ack后就把ip地址等信息跟网卡绑定。
|
||
|
||
请写出190.5.27.13/16网段的网络地址和广播地址。
|
||
网络地址:190.5.0.0
|
||
广播地址:192.5.255.255
|
||
|
||
保存当前磁盘分区的分区表
|
||
partprobe
|
||
|
||
手动安装grub
|
||
1、使用 grul-install 命令在要启动的分区中安装 GRUB 相关文件
|
||
2、修改GRUB的配置文件
|
||
3、安装GRUB到/dev/sdb1分区的启动扇区中
|
||
|
||
你对自动化运维的理解,以及自动化运维需要掌握哪些技能?
|
||
1、项目部署维护能力
|
||
2、脚本开发能力
|
||
3、运维方案制定,业务架构关联分析
|
||
4、shell、python使用能力,应用架构设计能力
|
||
|
||
一台新装的 Centos操作系统机器,要开始部署业务服务之前需要做什么操作?如果有二十台了,要怎么做?
|
||
1、需要先进行环境初始化,根据业务需求,调整防火墙,selinux的配置,修改内核参数,以满足业务需求。
|
||
2、如果需要操作的服务器较多,可以使用自动化运维工具完成配置,如ansible等。
|
||
|
||
在一个系统架构中,我们为了避免单点故障会怎么做?请写出至少2中方案及优点。
|
||
做集群 比如nginx 会做反向代理、利用nginx 或lvs 做负载均衡 ,利用keepalived做高可用
|
||
|
||
LVS、nginx、HAproxy有什么区别?工作中你怎么选择?
|
||
LVS的优点:
|
||
1、抗负载能力强、工作在第4层仅作分发之用,没有流量的产生,这个特点也决定了它在负载均衡软件里的性能最强的;无流量,同时保证了均衡器IO的性能不会受到大流量的影响;
|
||
2、工作稳定,自身有完整的双机热备方案,如LVS+Keepalived和LVS+Heartbeat;
|
||
3、应用范围比较广,可以对所有应用做负载均衡;
|
||
4、配置性比较低,这是一个缺点也是一个优点,因为没有可太多配置的东西,所以并不需要太多接触,大大减少了人为出错的几率;
|
||
LVS的缺点:
|
||
1、软件本身不支持正则处理,不能做动静分离,这就凸显了Nginx/HAProxy+Keepalived的优势。
|
||
2、如果网站应用比较庞大,LVS/DR+Keepalived就比较复杂了,特别是后面有Windows Server应用的机器,实施及配置还有维护过程就比较麻烦,相对而言,Nginx/HAProxy+Keepalived就简单多了。
|
||
Nginx的优点:
|
||
1、工作在OSI第7层,可以针对http应用做一些分流的策略。比如针对域名、目录结构。它的正则比HAProxy更为强大和灵活;
|
||
2、Nginx对网络的依赖非常小,理论上能ping通就就能进行负载功能,这个也是它的优势所在;
|
||
3、Nginx安装和配置比较简单,测试起来比较方便;
|
||
4、可以承担高的负载压力且稳定,一般能支撑超过几万次的并发量;
|
||
5、Nginx可以通过端口检测到服务器内部的故障,比如根据服务器处理网页返回的状态码、超时等等,并且会把返回错误的请求重新提交到另一个节点;
|
||
6、Nginx不仅仅是一款优秀的负载均衡器/反向代理软件,它同时也是功能强大的Web应用服务器。LNMP现在也是非常流行的web环境,大有和LAMP环境分庭抗礼之势,Nginx在处理静态页面、特别是抗高并发方面相对apache有优势;
|
||
7、Nginx现在作为Web反向加速缓存越来越成熟了,速度比传统的Squid服务器更快,有需求的朋友可以考虑用其作为反向代理加速器;
|
||
Nginx的缺点:
|
||
1、Nginx不支持url来检测。
|
||
2、Nginx仅能支持http和Email,这个它的弱势。
|
||
3、Nginx的Session的保持,Cookie的引导能力相对欠缺。
|
||
HAProxy的优点:
|
||
1、HAProxy是支持虚拟主机的,可以工作在4、7层(支持多网段);
|
||
2、能够补充Nginx的一些缺点比如Session的保持,Cookie的引导等工作;
|
||
3、支持url检测后端的服务器;
|
||
4、它跟LVS一样,本身仅仅就只是一款负载均衡软件;单纯从效率上来讲HAProxy更会比Nginx有更出色的负载均衡速度,在并发处理上也是优于Nginx的;
|
||
5、HAProxy可以对Mysql读进行负载均衡,对后端的MySQL节点进行检测和负载均衡,不过在后端的MySQL slaves数量超过10台时性能不如LVS;
|
||
6、HAProxy的算法较多,达到8种;
|
||
|
||
LVS: 是基于四层的转发
|
||
HAproxy: 是基于四层和七层的转发,是专业的代理服务器
|
||
Nginx: 是WEB服务器,缓存服务器,又是反向代理服务器,可以做七层的转发
|
||
区别: LVS由于是基于四层的转发所以只能做端口的转发而基于URL的、基于目录的这种转发LVS就做不了
|
||
工作选择:
|
||
HAproxy和Nginx由于可以做七层的转发,所以URL和目录的转发都可以做在很大并发量的时候我们就要选择LVS,像中小型公司的话并发量没那么大 选择HAproxy或者Nginx足已,由于HAproxy由是专业的代理服务器 配置简单,所以中小型企业推荐使用HAproxy
|
||
|
||
简述集中式版本管理和分布式版本管理的优缺点。
|
||
集中式优点:
|
||
1、采用集中式,易于管理,保证安全性;
|
||
2、管理方便,逻辑明确,理念符合常规思维;
|
||
3、代码的一致性高;
|
||
4、适合人数不多的项目开发;
|
||
5、允许一个文件有任意多的可命名属性,会关注所有的文件类型;
|
||
6、支持二进制文件,更容易处理大文件;
|
||
集中式缺点:
|
||
1、服务器压力太大,数据库容量暴增;
|
||
2、必须连接在服务器上,否则基本不能工作、提交、对比、还原等;
|
||
3、不适合开源开发。
|
||
分布式优点:
|
||
1、适合分布式开发,强调个体;
|
||
2、公共的服务器压力和数量都不会太大;
|
||
3、速度快,成熟的架构,开发灵活;
|
||
4、任意两个开发者之间可以很容易的解决冲突;
|
||
5、离线工作,管理代码成本低,不需要依赖服务器;
|
||
6、部署方便。基本上下个命令就可以用;
|
||
7、良好的分支机制,可以让主干代码保持干净。
|
||
分布式缺点:
|
||
1、资料少,学习成本比较大,学习周期比较长,要求人员素质比较高;
|
||
2、不符合常规思维;
|
||
3、代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息。
|
||
|
||
你用过那些云平台?用过其中的那些产品
|
||
阿里云、华为云
|
||
ECS
|
||
|
||
你所知道的是虚拟化产品和方案有哪些?并对这些方案进行一个简单的对比。
|
||
虚拟化软件有:
|
||
公有云平台:亚马逊AWS,阿里云,腾讯云,华为云,QingCloud;
|
||
混合云平台:ZStack,BeyondCMP,CAS虚拟化平台等;
|
||
私有云平台:VisionStack杭州云容,ESCloud易捷云,Ucloud,AWCloud,ZStack等
|
||
|
||
说说你对B/S结构与C/S结构的认识。
|
||
B/S 是浏览器服务器架构
|
||
C/S 是客户端服务端架构
|
||
客户端服务端架构
|
||
对硬件和软件要求高
|
||
浏览器服务器架构
|
||
C/S 程序可以处理用户面固定, 并且在相同区域, 安全要求高需求, 与操作系统相关. 应该都是相同的系统
|
||
对安全要求不同
|
||
C/S 对服务端、客户端都安全都要考虑。
|
||
B/S 因没有客户端,所以只注重服务端安全即可
|
||
|
||
请你说说你使用过得监控软件的各自的特点。
|
||
zabbix :图像化,可以自定义模板,功能强大
|
||
Prometheus:支持在多层监控,业务、应用、系统层都可监控,可以集成其他监控,经常与k8S一起用
|
||
|
||
服务器监控有哪些方法
|
||
1、利用脚本定时检查服务,系统性能
|
||
2、利用第三方监控软件
|
||
|
||
写一个脚本实现批量添加20个用户,用户名为user1-20,密码为user后面跟5个随机字符
|
||
#!/bin/bash
|
||
#description: useradd
|
||
num=$1
|
||
for i in $(seq 1 $num)
|
||
do
|
||
pwd=$(cat /dev/urandom | head -1 | md5sum | head -c 5)
|
||
useradd user$i
|
||
echo "user$i$pwd" | passwd --stdin user$i
|
||
echo user$i user$i$pwd" >> userinfo.txt
|
||
done
|
||
|
||
请试着写出一个杀死进程http的shell脚本
|
||
pid=`ps aux | grep httpd`
|
||
for i in $pid
|
||
do
|
||
kill -9 $i
|
||
done
|
||
|
||
请利用shell开发一个rsync服务的启动停止脚本并通过chkconfig进行开关机管理
|
||
A:rsync服务的PID文件路径为:/var/run/rsyncd.pid
|
||
B:rsync服务的启动命令为:rsync --daemon
|
||
C:rsync服务的停止命令为:kill -USR2 `cat /var/run/rsyncd.pid` && rm -f /var/run/rsyncd.pid
|
||
|
||
脚本
|
||
#!/bin/bash
|
||
# Define variables
|
||
RETVAL=0
|
||
Pid=/var/run/rsyncd.pid
|
||
# Determine the user to execute
|
||
if [ $UID -ne $RETVAL ];then
|
||
echo "Must be root to run scripts"
|
||
exit 1
|
||
fi
|
||
# Load the local functions library
|
||
[ -f /etc/init.d/functions ] && source /etc/init.d/functions
|
||
# Define functions
|
||
start(){
|
||
if [ ! -f "$Pid" ];then
|
||
rsync --daemon
|
||
RETVAL=$?
|
||
if [ $RETVAL -eq 0 ];then
|
||
action "Start rsync service" /bin/true
|
||
else
|
||
action "Start rsync service" /bin/false
|
||
fi
|
||
else
|
||
echo "Rsync is running"
|
||
exit 1
|
||
fi
|
||
return $RETVAL
|
||
}
|
||
stop(){
|
||
if [ -f "$Pid" ];then
|
||
kill -USR2 $(cat $Pid)
|
||
find /var/run -maxdepth 1 -type f -name "rsyncd.pid"|xargs rm -f
|
||
RETVAL=$?
|
||
if [ $RETVAL -eq 0 ];then
|
||
action "Stop rsync service" /bin/true
|
||
else
|
||
action "Stop rsync service" /bin/false
|
||
fi
|
||
else
|
||
echo "Rsync is not running"
|
||
exit 1
|
||
fi
|
||
return $RETVAL
|
||
}
|
||
status(){
|
||
if [ -f "$Pid" ];then
|
||
echo "Rsync is running"
|
||
else
|
||
echo "Rsync is not running"
|
||
fi
|
||
return $RETVAL
|
||
}
|
||
# Case call functions
|
||
case "$1" in
|
||
start)
|
||
start
|
||
RETVAL=$?
|
||
;;
|
||
stop)
|
||
stop
|
||
RETVAL=$?
|
||
;;
|
||
restart)
|
||
stop
|
||
sleep 2
|
||
start
|
||
RETVAL=$?
|
||
;;
|
||
status)
|
||
status
|
||
RETVAL=$?
|
||
;;
|
||
*)
|
||
echo "USAGE:$0 {start|stop|restart|status}"
|
||
exit 1
|
||
esac
|
||
# Scripts return values
|
||
exit $RETVAL
|
||
|
||
#chkconfig --add 脚本
|
||
|
||
写一个脚本,实现判断192.168.1.0/24网络里,当前在线的ip有哪些。
|
||
#!/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
|
||
|
||
列举你所熟悉的脚本语言,并选一种脚本语言编写一个脚本解决你所遇到的问题。
|
||
shell
|
||
|
||
#分割Tomcat日志,
|
||
log_path=/opt/tomcat/logs
|
||
namelog=/opt/tomcat/logs/name_log
|
||
d=`date +%Y-%m-%d`
|
||
d7=`date -d'7 day ago' +%Y-%m-%d`
|
||
cd ${log_path} && cp catalina.out catalina.$d.log
|
||
echo > catalina.out
|
||
cd ${namelog} && cp name name.$d.log
|
||
echo > name
|
||
rm -rf $log_path/catalina.${d7}.log
|
||
rm -rf $namelog/name_log/name.${d7}.log
|
||
|
||
写shell实现输出top10的IP地址
|
||
#!/bin/bash
|
||
cat url.log | sort | uniq -c | sort -n -r -k 1 -t ' ' | awk -F '//' '{print $2}' | head -10 > ip10.txt
|
||
|
||
如何监控某个网站最近1天的访问ip及其访问量,并对单日单个ip访问量超过10000次的ip进行报警
|
||
#!/bin/bash
|
||
cat access.log | sort | uniq -c |sort -n -r -k 1 -t ' ' | awk -F '//' '{print $2}' > ip.txt
|
||
for i in `cat ip.txt`
|
||
do
|
||
if [ i > 10000 ];than
|
||
echo "waring ,i> 100000" > waring.txt
|
||
done
|
||
|
||
批量检查多个网站地址是否正常?
|
||
#!/bin/bash
|
||
web_array=(
|
||
http://blog.oldboyedu.com ####多个网站地址
|
||
http://blog.etiantian.org
|
||
http://oldboy.blog.51cto.com
|
||
http://10.0.0.7
|
||
)
|
||
while true
|
||
do
|
||
for ((i=0;i<${#web_array[*]};i++))
|
||
do
|
||
wget -T 10 --tries=2 --spider ${web_array[$i]} >/dev/null 2>&1
|
||
if [ $? -eq 0 ];then
|
||
echo "${web_array[$i]} is ok"
|
||
else
|
||
echo "${web_array[$i]} is bad"
|
||
fi
|
||
sleep 3
|
||
done
|
||
done
|
||
|
||
默认情况下zookeeper的数据文件和事务日志是保存在同一个目录中,建议是将事务日志存储到单独的磁盘上,原因是?
|
||
平时在公司开发系统肯定都利用可视化配置界面将所有配置信息配置好了,如果要将这些配置信息部署到新的环境,或者更
|
||
新已经存在的另一个环境的配置信息, 肯定不能把整个Zookeeper集群的文件夹都拷贝过去,删掉原有的完全替换为现在的新的这个。
|
||
|
||
一台主机要实现通过局域网与另一个局域网通信,需要做的工作是 D
|
||
A.配置域名服务器
|
||
B.定义一条本机指向所在网络的路由
|
||
C.定义一条本机指向所在网络网关的路由
|
||
D.定义一条本机指向目标网络网关的路由
|
||
|
||
在局域网络内的某台主机用ping 命令测试网络连接时发现网络内部的主机都可以连通,而不能与公网连通,问题可能是 C
|
||
A.主机IP设置有误
|
||
B.没有设置连接局域网的网关
|
||
C.局域网的网关或主机的网关设置有误
|
||
D.局域网DNS 服务区设置有误
|
||
|
||
说明静态路由和动态路由的区别?
|
||
静态路由
|
||
静态路由适用于较小、结构简单的网络,且对网络流量有预见性的情况下
|
||
动态路由
|
||
动态路由在大型、复杂的网络中更受欢迎,因为它可以自动调整并响应网络的变化。
|
||
|
||
下面的网络协议中,面向连接的的协议是 C
|
||
A.传输控制协议
|
||
B.用户数据报协议
|
||
C.网际协议
|
||
D.网际控制报文协议
|
||
|
||
IDC机房宽带突然从平时100M增加到400M,请你分析问题可能原因所在,并给出解决方法
|
||
1.可能遭受DDOS攻击(写一个预防DDOS的脚本)
|
||
2.内部的服务器中毒,大量外发流量(内部运维规范、制度)
|
||
3.网站的元素被盗连,在门户页面被推广导致大量流量产生(网站的基本优化)
|
||
4.用户访问量剧增
|
||
|
||
http是()层的协议,Referer指的是()
|
||
http是七层的协议
|
||
Referer是http请求头的一部分,表示一个来源。
|
||
比如在www.google.com 里有一个www.baidu.com 链接,那么点击这个www.baidu.com ,它的header信息里就有:Referer=http://www.google.com
|
||
|
||
hash查找做好的情况时间复杂度是()
|
||
1.判断key,根据key算出索引。
|
||
2.根据索引获得索引位置所对应的键值对链表。
|
||
3.遍历键值对链表,根据key找到对应的Entry键值对。
|
||
4.拿到value。
|
||
|
||
使用tcpdump监听主机192.168.1.1,tcp端口为80的数据,同时将结果保存输出到tcpdump.log请写出相应的命令
|
||
tcpdump host 192.168.1.1 and tcp and port 80 -w tcpdump.log
|
||
|
||
实时抓取并显示当前系统中tcp80端口的网络数据信息,请写出完整操作命令
|
||
tcpdump -n tcp port 80
|
||
|
||
linux下添加172.132.7.132为ip白名单
|
||
#添加规则
|
||
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="172.132.7.132/24" port protocol="tcp" accept"
|
||
#reload使生效
|
||
firewall-cmd --reload
|
||
|
||
办公室同事反映网络打不开,请简述一下排查故障的思路及解决方法?如果时好时坏又该怎么排查?
|
||
查看网卡配置是否有问题
|
||
查看路由表是否正确
|
||
时好时坏 查看是否IP冲突
|
||
|
||
描述会话超时、会话保持分别是什么概念什么场景使用?
|
||
会话超时:在HTTP协议中,客户机不再活跃时没有明确的终止信号.这意味着只有超时才是标识客户机不再活跃的唯一机制.比如用户打开网页后长时间不点
|
||
会话保持:在一次会话过程中发起的多个请求都会落到同一台机器上。常用于负载均衡
|
||
|
||
介绍一下那些可以优化加速用户访问网站体验的技术措施?
|
||
1、利用缓存
|
||
2、后端实行动静分离
|
||
|
||
.传输控制协议中,面向连接的协议是?
|
||
TCP/IP 协议
|
||
|
||
.一台主机要实现通过局域网与另一个局域网通信,需要做的工作是?
|
||
1.设置本机的默认网关 。
|
||
2.本地局域网默认网关上需要设置一条路由,用以完成本地局域网内的任一主机到目标局域网主机的路由工作。
|
||
|
||
哈希和加密的区别是什么?各自有什么用途?
|
||
哈希(Hash)是将目标文本转换成具有相同长度的、不可逆的杂凑字符串(或叫做消息摘要),而加密(Encrypt)是将目标文本转换成具有不同长度的、可逆的密文。
|
||
|
||
在linux系统中,测试DNS服务器是否能正确解析域名的客户端命令使用什么命令?
|
||
nslookup
|
||
|
||
tcp/ip四层模型分别是什么?
|
||
链路层(比特)、网络层(数据帧)、传输层(数据包)、应用层(数据段)。
|
||
|
||
应用层最常用的协议有什么?
|
||
DNS
|
||
SMTP
|
||
HTTP
|
||
HTTPS
|
||
TELNET
|
||
FTP
|
||
|
||
局域网的网络地址192.168.1.0/24 局域网络连接其他网络的网关地址是192.168.1.1。主192.168.1.20访问172.16.1.0/24网络时,其路由如何
|
||
设置?
|
||
route add -net 172.16.1.0 gw 192.168.1.1 netmask 255.255.255.0 metric1
|
||
|
||
ifconfig命令的作用是?
|
||
ifconfig命令被用于配置和显示Linux内核中网络接口的网络参数
|
||
|
||
在局域网内的某台主机ping命令测试网络连接时发现网络内部主机都可以ping通,而不能与公网联通,问题可能是
|
||
局域网的网关或主机的网关设置有误
|
||
|
||
查看http的并发请求数与其tcp连接状态
|
||
ps -ef | grep httpd | wc -l
|
||
netstat -nt | awk ‘{++S[$NF]}END{for(a in S) print a,S[a]}‘
|
||
|
||
用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
|
||
|
||
两台电脑都在同一个网络环境中A电脑访问不到B电脑的应用。此类现象可能是那些方面所致?如何处理?
|
||
1、防火墙未添加白名单,需要在防火墙配置中添加白名单
|
||
2、应用例如nginx未添加白名单 在应用的访问配置中添加白名单
|
||
|
||
修改以太网mac地址的命令为?
|
||
ifconfig
|
||
|
||
查看WEB服务器当前的连接数、并发数、进程数。
|
||
netstat -n|grep ^tcp|awk '{print $NF}'|sort -nr|uniq -c
|
||
|
||
linux下如何添加路由
|
||
route add destination mask gw
|
||
|
||
以太网协议,了解TCP/IP协议
|
||
|
||
|
||
常见命令
|
||
显示网络接口常见命令是
|
||
ifconfig或者ip a
|
||
查看服务端口的命令是
|
||
ss -anptul
|
||
Linux操作系统查看当前网络设备命令为
|
||
ip a
|
||
将当前计算机的IP地址设为192.168.1.10,子网掩码为255.255.255.0命令为
|
||
ifconfig eth0 192.168.1.10 netmask 255.255.255.0
|
||
Linux查看当前主机TCP协议连接情况的命令为
|
||
ss -antpl
|
||
|
||
jvm调优
|
||
vmstat iostat netstat strace top awk sed grep nexus MobaXterm
|
||
|
||
硬件性能测试用过什么
|
||
对IO进行简单测试dd if=/dev/zero of=test bs=1M count=4096 用top和iostat查看wa%及写硬盘速度top-n1每秒钟的cpu
|
||
通过df-h命令查看磁盘情况通过hdparm测试读取速率hdparm-t/dev/sda linux中几块盘求平均值就是磁盘的平均读取速率
|
||
|
||
下列哪项可以作为集群的管理工具()
|
||
A.pupper
|
||
B.pdsh
|
||
C.cloudera manager
|
||
D.zookeeper
|
||
|
||
下列是一个示列的yaml,使用kubectl create -f app.yaml 创建这个deployment与svc,使用curl-Lsv svc:port 发现不通,是什么问题。请回答!
|
||
apiVersion:v1
|
||
kind: Service
|
||
metadata:
|
||
name: openapiv1-sVc
|
||
labels:
|
||
SVe: openapiv1-svc
|
||
ver:3.2.0
|
||
namespace: aps-os-test
|
||
spec:
|
||
type: NodePort
|
||
ports:
|
||
- port: 8080
|
||
targetPort: 8090
|
||
protocol: TCP
|
||
name: htp
|
||
nodePort: 32471
|
||
selector:
|
||
app: openapiv1
|
||
ver:3.2.1
|
||
apiVersion: extensions/v1beta1
|
||
kind: Deployment
|
||
metadata:
|
||
name: openapiv1
|
||
namespace: aps-os-test
|
||
spec:
|
||
replicast1
|
||
metadata
|
||
name: openapiv1
|
||
labels:
|
||
app: openapiv1
|
||
ver:3.2.0
|
||
spec:
|
||
”name: app-container
|
||
image: registryaps datanvas.com:5000/ap/service/base/jre-aps:3.2.0
|
||
workingDir: /opt/workdir
|
||
command: [/i/ash,/run.shT
|
||
ports:
|
||
. containerPort: 8080
|
||
name: http
|
||
---
|
||
|
||
使用下面app.yaml创建后发现Deployment 和svc创建成功,但是pod没有生成是什么原因。请给出分析思路以及可能存在的原因。
|
||
apiVersion:v1
|
||
kind: Service
|
||
metadata:
|
||
name: openapiv1-5VC
|
||
labels:
|
||
svc;: openapiv1-sVC
|
||
ver:3.2.0
|
||
namespace: aps-os-test
|
||
spec
|
||
type: NodePort
|
||
ports:
|
||
. port: 8080
|
||
targetPort: 8080
|
||
|
||
Headless服务主要用来干什么。
|
||
headless service 是将service的发布文件中的clusterip=none ,不让其获取clusterip , DNS解析的时候直接走pod,因为没有ClusterIP,kube-proxy 并不处理此类服务,因为没有load balancing或 proxy 代理设置,在访问服务的时候回返回后端的全部的Pods IP地址,主要用于开发者自己根据pods进行负载均衡器的开发(设置了selector)。
|
||
|
||
如何看待系统安全加固
|
||
1.密码策略 修改系统的密码策略1)经常修改密码2)使用一些特殊的字符和密码的长度增加密码的难度 3)不要随便告诉他人密码
|
||
2.权限ugo锁定系统中不必要的系统用户和组 锁定下列用户,锁定之前备份/etc/passwd和/etc/shadow文件 禁用无关的组 禁止root用户远程登录
|
||
3.预防flood攻击linux中预防SYNflood.在/etc/sysctl.conf文件中添加net.ipv4.tcp_syncookies=1
|
||
4.加固TCP/IP协议设置/etc/sysctl.conf文件相应权限
|
||
5.默认权限与umask不要修改正确的umask值022
|
||
6.做任何修改文件的动作先备份再做操作
|
||
|
||
问:临时调整和永久生效系统内核参数在哪里调
|
||
1.临时调整内核参数
|
||
开启内核路由转发功能,通过01设置开关 # echo "1" >/proc/sys/net/ipv4/ip_forward
|
||
禁止所有的icmp回包(禁止其他主机ping本机) # echo "1" >/proc/sys/net/ipv4/icmp_echo_ignore_all
|
||
调整所有进程可以打开的文件总数ps:如果大量用户访问时,可以因为该数字太小而导致错误 \#echo "108248" >/proc/sys/fs/file-max
|
||
2.永久调整内核参数 vim /etc/sysctl.conf
|
||
开启内核路由转发功能,通过01设置开关 net.ipv4.ip_forward=1
|
||
禁止所有的icmp回包(禁止其他主机ping本机) net.ipv4.icmp_echo_ignore_all=1
|
||
调整所有进程可以打开的文件总数 fs.file-max=108248
|
||
|
||
问:如何查看当前linux系统的状态,如CPU使用,内存使用,负载情况
|
||
sar综合命令
|
||
安装
|
||
yum -y provides sar
|
||
yum -y install sysstat-10.1.5-19.el7.x86_64
|
||
sar -o 16(当天日期号)
|
||
sar -A
|
||
使用
|
||
查看cpu
|
||
sar -u
|
||
查看平均负载
|
||
sar -q
|
||
查看内存使用状态
|
||
sar -r
|
||
查看交换区统计信息
|
||
sar -W
|
||
查看I/O统计信息
|
||
sar -b
|
||
查看磁盘使用情况
|
||
sar -d
|
||
查看进程等统计信息
|
||
sar -v
|
||
查看网卡统计进行
|
||
sar -n DEV 1 1
|
||
mpstat监测
|
||
mpstat -P ALL
|
||
free -m #内存使用
|
||
top 负载
|
||
|
||
查看网卡历史流量 实时查看网卡流量
|
||
网卡历史流量:sar -n DEV -f /var/log/sa/saxx #查看xx日的网卡流量历史
|
||
sar -n DEV -f /var/log/sa/sa26 #查看26号的网卡流量历史
|
||
实时查看网卡流量:sar -n DEV 1 5(每间隔1秒刷新一次,共5次)
|
||
|
||
如何查看当前系统每个ip的连接数
|
||
安装
|
||
yum -y install net-tools
|
||
使用
|
||
netstat -n | awk '/^tcp/{print $5}' | awk -F : '{print $1}' | sort | uniq -c
|
||
|
||
Linux中的服务自启动添加方法有哪些。
|
||
|
||
centos6:有2种
|
||
1.chkconfig服务名on
|
||
2.vim/etc/rc.d/rc.local /usr/sbin/服务名 start
|
||
centos7:有三种
|
||
1.systemctl enable 服务名
|
||
2.vim/etc/rc.localsystemctlstart服务名
|
||
3.vim/etc/fstabsystemctlstart服务名
|
||
|
||
从本机复制文件、文件夹到服务器并替换同名文件的写法有哪几种?
|
||
有两种:
|
||
1.scp -r 源文件路径目标文件 ip:目标文件路径
|
||
2.rsync -avr 源文件路径目标文件 ip:目标文件路径
|
||
|
||
请解释下Telnet和SSH的区别
|
||
Telnet:不安全,对数据不加密,易被被监听且易被攻击,不能压缩传输数据,所以传输慢;
|
||
ssh:对数据进行了RSA加密,安全性高,ssh传输数据是经过压缩的,所以数据传输速度比较快
|
||
|
||
网络装机工具cobbler了解吗,有哪些组件?
|
||
批量装机:pxe
|
||
|
||
查看某一端口的连接客户端IP?
|
||
比如3306端口
|
||
ss -antpul | grep 3306
|
||
|
||
设置系统当前运行级别中test服务状态为启动时自动加载,请写出完整操作命令
|
||
runlevel //查看当前的运行级别
|
||
chkconfig --level 5 test on
|
||
chkconfig --level 35 test on
|
||
systemctl enable test
|
||
|
||
每天中午12点使用tcpdump命令抓取目的端口为tcp80的1000个包输出到当前目录,以当前时间命名。请写出定时任务及脚内容
|
||
vim tcpdump.sh
|
||
tcpdump -c 1000 tcp dst port 80 -w ./`date +%Y%m%d`
|
||
chmod +x tcpdump.sh
|
||
crontab -e
|
||
0 12 * * * bash tcpdump.sh
|
||
|
||
apache有几种工作模式,分别介绍下其特点,并说明什么情况下采用不同的工作模式?
|
||
apache有三种工作模式:进程模式(prefork) 线程模式(worker) 事件模式(event)
|
||
1.prefork:是一种进程、与派生的工作模式,用的是进程去处理请求,所以比较容易消耗内存,但是稳定性好,某个进程
|
||
出现问题不会影响到其他请求。要求稳定的时候使用
|
||
2.worker:是使用多个子进程、每个子进程有多个线程、由于使用的是线程去处理请求,消耗内存小,适合高流量的请求
|
||
,但是如果某个进程出现问题,那么这个进程下的线程都会出现问题,即稳定性不是很好。这种模式不能php要测试一下在访问量
|
||
多的时候使用
|
||
3.event模式:是为解决keep-alive保持长连接出现的一种工作模式,使用keep-alive长连接的时候,某个线程会一直
|
||
被占用,即使中间没有请求,需要等到超时才会被释放,所以这个时候就出现了event的工作模式就出现了。在event工作模式中
|
||
,会有一些专门的线程用来管理这些keep-alive类型的线程,当有真实请求过来的时候,将请求传递给服务器的线程,执行完毕
|
||
后,又允许它释放。这增强了在高并发场景下的请求处理。另外,event模式是不支持用在https上的。
|
||
|
||
apache如何执行php代码
|
||
安装apache的php模块libphp5.so
|
||
apache做代理----后端服务器安装php-fpm
|
||
|
||
dhcp客户端是哪个地址来申请一个新的ip地址的?
|
||
dhcp客户端是使用广播地址来向全网发送广播包来寻找dhcp服务器的
|
||
源地址是0.0.0.0 广播地址是:255.255.255.255客户端没有IP地址才需要申请,所以它只能用0.0.0.0来代替它的ip,向服务器端申请ip地址。
|
||
|
||
NAT使用的几种情况:
|
||
|
||
1. 连接到INTERNET,但却没有足够的合法地址分配给内部主机;
|
||
2.更改到一个需要重新分配地址的ISP;
|
||
3.有相同的IP地址的两个INTRANET合并;
|
||
4.想支持负载均衡(主机);
|
||
|
||
NAT和PAT的区别
|
||
IP地址耗尽促成了CIDR的开发,但是CIDR开发的主要目的是为了有效的使用现有的INTERNET地址,而同时根据RFC1631(IPNETWORKADDRESSTRANSLATOR)开发的NAT却可以在多重的INTERNET子网中使用相同的IP地址,用来减少注册IP地址的使用。
|
||
NAT的分为:静态NAT、动态NAT、端口NAT(PAT)。
|
||
静态NAT: 内部网络中的每个主机都被永久的映射成外部网络中的某个合法地址;
|
||
动态NAT:在外部网络中定义了一系列的合法地址,采用动态分配的方法映射到内部网络;
|
||
PAT:是人们比较熟悉的一种转换方式。PAT普遍应用于接入设备中,它可以将中小型的网络隐藏在一个合法的IP地址后面。PATT与动态地址NAT不同,它将内部连接映射到外部网络中的一个单独的IP地址上,同时在该地址上加上一个由NAT设备选定的TCP端口号。也就是采用portmultiplexing技术,或改变外出数据的源port的技术将多个内部ip地址映射到同一个外部地址。
|
||
|
||
网络地址转换(NAT)是一个Internet工程任务组(InternetEngineeringTaskForce,IETF)标准,用于允许专用网络上的多台PC(使用专用地址段,例如10.0.x.x、192.168.x.x、172.x.x.x)共享单个、全局路由的IPv4地址。IPv4地址日益不足是经常部署NAT的一个主要原因。WindowsXP和WindowsMe中的“Internet连接共享”及许多Internet网关设备都使用NAT,尤其是在通过DSL或电缆调制解调器连接宽带网的情况下。
|
||
|
||
NAT对于解决IPv4地址耗费问题(在IPv6部署中却没必要)尽管很有效,但毕竟属于临时性的解决方案。这种IPv4地址占用问题在亚洲及世界其他一些地方已比较严重,且日渐成为北美地区需要关注的问题。这就是人们为什么长久以来一直关注使用IPv6来克服这个问题的原因所在。
|
||
|
||
除了减少所需的IPv4地址外,由于专用网络之外的所有主机都通过一个共享的IP地址来监控通信,因此NAT还为专用网络提供了一个隐匿层。NAT与防火墙或代理服务器不同,但它确实有利于安全。
|
||
|
||
|
||
|
||
NAT有4种用法:
|
||
---
|
||
1.TRANSLATIONINSIDELOCALADDRESS-----------将内部地址一对一的翻译成外部地址;2.OVERLOADINGINSIDEGLOBALADDRESS---------将内部地址多对一的翻译成外部地址,通过地址加端口号的方式区别不同的本地地址。这种方式就是所谓的PAT[/color:43aa144927];3.TCPLOADDISTRIBUTING----提供在多个、利用率高的主机之间进行负载分担的方法;4.HANDLINGOVERLAPPINGNETWORK----这种方法主要用于两个INTRANET的互联.
|
||
|
||
NAT的地址转换是指每个内网地址都被转换成ip地址+源端口的方式,这需要公网ip地址为多个。
|
||
|
||
而PAT由于ip地址不足够,就会出现内网地址被转换成ip地址+端口段的形式,这样的公网ip地址通常只是一个。
|
||
|
||
举个例子:NAT PAT
|
||
|
||
192.168.0.2:4444----〉202.116.100.5:4444 192.168.0.2:4444----〉202.116.100.5:50003
|
||
192.168.0.3:5555----〉202.116.100.6:5555 192.168.0.3:5555----〉202.116.100.5:50004
|
||
192.168.0.10:1233---〉202.116.100.5:1233 192.168.0.10:1233---〉202.116.100.5:50005
|
||
简单来说,PAT―多对1,nat―多对多.
|
||
|
||
|
||
|
||
问:kernel调参
|
||
---
|
||
所有的TCP/IP调优参数都位于/proc/sys/net/目录(/proc目录下的所有内容都是临时性的,所以重启动系统后任何修改都会丢失。)
|
||
1./proc/sys/net/core/rmem_max #最大的TCP数据接收缓冲。
|
||
2./proc/sys/net/core/wmem_max #最大的TCP数据发送缓冲。
|
||
3./proc/sys/net/ipv4/tcp_timestamps #时间戳在(请参考RFC1323)TCP的包头增加12个字节。
|
||
4./proc/sys/net/ipv4/tcp_sack #有选择的应答。
|
||
5./proc/sys/net/ipv4/tcp_window_scaling #支持更大的TCP窗口.如果TCP窗口最大超过65535(64KB),必须设置该数值为1。
|
||
6.rmem_default #默认的接收窗口大小。
|
||
7.rmem_max #接收窗口的最大大小。
|
||
8.wmem_default #默认的发送窗口大小。
|
||
9.wmem_max #发送窗口的最大大小。
|
||
|
||
把下面代码增加到/etc/rc.local文件,然后保存文件,系统重新引导的时候会自动修改下面的TCP/IP参数:
|
||
echo 256960 > /proc/sys/net/core/rmem_default
|
||
echo 256960 > /proc/sys/net/core/rmem_max
|
||
echo 256960 > /proc/sys/net/core/wmem_default
|
||
echo 256960 > /proc/sys/net/core/wmem_max
|
||
echo 0 > /proc/sys/net/ipv4/tcp_timestamps
|
||
echo 1 > /proc/sys/net/ipv4/tcp_sack
|
||
echo 1 > /proc/sys/net/ipv4/tcp_window_scaling
|
||
TCP/IP参数都是自解释的,TCP窗口大小设置为256960,禁止TCP的时间戳(取消在每个数据包的头中增加12字节),支持更大的TCP窗口和TCP有选择的应答。
|
||
---
|
||
|
||
我们都知道dns既采用了tcp协议,又采用了udp协议,什么时候采用tcp协议?什么时候采用udp协议?为什么要这么设计?
|
||
---
|
||
dns有两个情况,一种是区域传输,一种是域名解析
|
||
1.区域传输时,一个区中主DNS服务器从自己本机的数据文件中读取该区的DNS数据信息,而辅助DNS服务器则从区的主DNS服务器中读取该区的DNS数据信息,传输协议是tcp。问:tcp
|
||
2.域名解析时,首选的通讯协议是udp
|
||
使用udp传输,不用经过TCP三次握手,这样DNS服务器负载更低,响应更快
|
||
但是当域名解析的反馈报文的长度超过512字节时,将不能使用udp协议进行解析,此时必须使用tcp回:udp
|
||
---
|
||
|
||
当用户在浏览器当中输入一个网站,说说计算机对dns解释结果哪些流程?注:本机跟本地DNS还没有缓存
|
||
1.用户输入网址到浏览器
|
||
2.浏览器发出DNS请求信息
|
||
3.计算机首先查询本机HOST文件,不存在,继续下一步;
|
||
4.计算机按照本地DNS的顺序,向区域dns服务器查询IP结果;区域dns服务器查询不到时会从根域开始,按照DNS层次结构向下搜索,直至对于信息具有权威性;
|
||
5.将返回dns结果给本地dns和本机,本机和本地dns并缓存本结果,直到TTL过期,才再次查询此结果;
|
||
6.返回IP结果给浏览器;并给本地的DNS一份结果;
|
||
7.浏览器根据IP信息,获取页面;
|
||
|
||
在nslookup使用中请问如何查询test.com域中的MX记录
|
||
---
|
||
nslookup-querytype=MXtest.com
|
||
Host dig nslookup settype=mx test.com
|
||
---
|
||
|
||
很重要:写一个防火墙配置脚本,只允许远程主机访问本机的80端口
|
||
---
|
||
# vim iptables.sh
|
||
Iptables -t filter -I INPUT -p tcp --dport 80 -j DROP
|
||
---
|
||
|
||
编写shell脚本,清理/var/logs/目录下的一个持续增长的conn.log文件,以日为单位形成一个新的压缩文件,并删除30天前的日志压缩文件
|
||
---
|
||
#vimcleanlog.sh #清理日志脚本
|
||
tar -czf /log_backup/conn_`date+%y年%m月%d号-%H:%M:%S`.log.tar.gz /var/logs/conn.log wait$$
|
||
rm -rf /var/logs/conn.log
|
||
find /log_backup/ -mtime +30 -exec rm {} \;
|
||
---
|
||
|
||
完成一下要求:
|
||
1.备份并压缩/data目录的所有内容,存放在/backup目录里,且文件名为如下形式yymmdd_data,yy为年,mm为月,dd为日
|
||
2.读取/app/app.log文件中每行第一个域的全部数据加入到/backup/yymmdd_app_am.log,yy为年,mm为月,dd为日
|
||
3.删除/app/app.log文件
|
||
---
|
||
shell程序appbak存放在/usr/bin目录下。(最少写一个循环)
|
||
#crontab-e
|
||
59 23 1 * * /usr/bin/appbak chmod+x/usr/bin/appbak
|
||
vim/usr/bin/appbak
|
||
abc=`date+%Y%b%d`_data
|
||
tar -czf /usr/bin/backup/$abc/data wait
|
||
|
||
cat /app/app.log | awk'{print$1}' >>/usr/bin/backup/$abc
|
||
|
||
rm -rf /app/app.log
|
||
---
|
||
|
||
请用shell脚本实现:批量添加5个用户,用户名为:user1-5,密码为:user名+3个随机字符
|
||
|
||
for i in {1..5}
|
||
do
|
||
useradd user$i
|
||
suijishu=`opensslrand-hex2 | sed -r "s/(...)(.)/\1:\2/g" | awk -F ':' '{print$1}'`
|
||
echo user$i$suijishu | passwd --stdin user$i
|
||
done
|
||
|
||
请用自己熟悉的脚本语言,快速替换notic服务下config.properties配置文件中所有变量值为jdbc.username,jdbc.password的值为blue和pass1234
|
||
|
||
sed -ri 's/jdbc.username/blue/g' config.properties
|
||
sed -ri 's/jdbc.password/pass1234/g' config.properties
|
||
|
||
---
|
||
echo "ABCDEFGabtdefg" | sed -i s/c/t/g 这条命令是否正确?如若正确会显示什么结果?
|
||
---
|
||
|
||
---
|
||
在系统中添加100个用户,用户名为user001到user100
|
||
---
|
||
|
||
|
||
---
|
||
请使用脚本实现批量创建10个系统账号sj_user01-sj_user10并设置密码(密码为随机8位字符串)
|
||
---
|
||
|
||
|
||
---
|
||
在shell编程时,使用方括号表示测试条件的规则是?
|
||
---
|
||
|
||
|
||
---
|
||
用shell写一段启动脚本服务
|
||
---
|
||
|
||
---
|
||
编写shell脚本,能够生成32位随机密码
|
||
---
|
||
|
||
|
||
---
|
||
计算1加到100的值
|
||
---
|
||
|
||
|
||
统计出yum安装的apache的访问日志access_log中访问量最多的5个IP
|
||
cat /var/log/httpd/access_log | awk '{ips[$1]++}END{for(i in ips){print $i ips[i]}}' | sort -rn -k2 | head -5
|
||
|
||
---
|
||
编写SHELL脚本,查找linux系统下以txt结尾,30天没有修改的文件大小大于20K同时具有执行权限的文件并备份到/data/backup/目录下,某一天没有文件在/data/backup下生产一个当时日志的文件,内容为"缺失文件".
|
||
---
|
||
|
||
给出程序运行结果
|
||
def extendList(val,list=[]):
|
||
list.append(val)
|
||
return list
|
||
|
||
list1=extendList(10)
|
||
list2=extendList(123,[])
|
||
list3=extendList('a')
|
||
print"list1=%s"%list1
|
||
print"list2=%s"%list2
|
||
print"list3=%s"%list3
|
||
|
||
实现用用户输入入用用户名和密码,当用用户名为ye或sk且密码为123时,显示登陆成功,否则登陆失败,失败时允许重复输入入三次
|
||
for i in range(3):
|
||
u=input("user>:")
|
||
p=input("pwd>:")
|
||
if u=="yg" or u=="sk" and p=="123":
|
||
print("登陆成功")
|
||
break
|
||
else:
|
||
print("登陆失败")
|
||
|
||
mongdb的储存引擎,查库查表,查看数据,怎么将库里面的数据导出来在2015/3/17以前,MongoDB只有一个存储引擎,叫做MMAP,MongoDB3.0的推出使得MongoDB有了两个引擎:MMAPv1和WiredTiger.
|
||
\>db.stats()
|
||
{
|
||
"db":"demo",
|
||
"collections":3,
|
||
"objects":5,
|
||
"avgObjSize":55.2,
|
||
"dataSize":276,
|
||
"storageSize":16384,
|
||
"numExtents":3,
|
||
"indexes":1,
|
||
"indexSize":8176,
|
||
"fileSize":50331648,
|
||
"nsSizeMB":16,
|
||
"ok":1
|
||
}
|
||
|
||
2、查看数据库表
|
||
\>db.system.users.stats()
|
||
{
|
||
"ns":"demo.system.users",
|
||
"count":1,
|
||
"size":92,
|
||
"avgObjSize":92,
|
||
"storageSize":8192,
|
||
"numExtents":1,
|
||
"nindexes":1,
|
||
"lastExtentSize":8192,
|
||
"paddingFactor":1,
|
||
"systemFlags":1,
|
||
"userFlags":0,
|
||
"totalIndexSize":8176,
|
||
"indexSizes":{
|
||
"_id_":8176
|
||
},
|
||
"ok":1
|
||
}
|
||
|
||
db的帮助文档
|
||
输入:db.help();
|
||
db.AddUser(username,password[,readOnly=false])添加用户
|
||
db.auth(usrename,password)设置数据库连接验证
|
||
db.cloneDataBase(fromhost)从目标服务器克隆一个数据库
|
||
db.commandHelp(name)returnsthehelpforthecommand
|
||
db.copyDatabase(fromdb,todb,fromhost)复制数据库fromdb---源数据库名称,todb---目标数据库名称,fromhost---源数据库服务器地址
|
||
db.createCollection(name,{size:3333,capped:333,max:88888})创建一个数据集,相当于一个表
|
||
db.currentOp()取消当前库的当前操作
|
||
db.dropDataBase()删除当前数据库
|
||
db.eval(func,args)runcodeserver-side
|
||
db.getCollection(cname)取得一个数据集合,同用法:db['cname']or
|
||
db.getCollenctionNames()取得所有数据集合的名称列表
|
||
db.getLastError()返回最后一个错误的提示消息
|
||
db.getLastErrorObj()返回最后一个错误的对象
|
||
db.getMongo()取得当前服务器的连接对象gettheserver
|
||
db.getMondo().setSlaveOk()allowthisconnectiontoreadfromthennonmastermembrofareplicapair
|
||
db.getName()返回当操作数据库的名称
|
||
db.getPrevError()返回上一个错误对象
|
||
db.getProfilingLevel()获取profilelevel
|
||
db.getReplicationInfo()获得重复的数据
|
||
db.getSisterDB(name)getthedbatthesameserverasthisonew
|
||
db.killOp()停止(杀死)在当前库的当前操作
|
||
db.printCollectionStats()返回当前库的数据集状态
|
||
db.printReplicationInfo()打印主数据库的复制状态信息
|
||
db.printSlaveReplicationInfo()打印从数据库的复制状态信息
|
||
db.printShardingStatus()返回当前数据库是否为共享数据库
|
||
db.removeUser(username)删除用户
|
||
db.repairDatabase()修复当前数据库
|
||
db.resetError()
|
||
db.runCommand(cmdObj)runadatabasecommand.ifcmdObjisastring,turnsitinto{cmdObj:1}
|
||
db.setProfilingLevel(level)设置profilelevel0=off,1=slow,2=all
|
||
db.shutdownServer()关闭当前服务程序
|
||
db.stats()返回当前数据库的状态信息
|
||
db.version()返回当前程序的版本信息
|
||
./mongoexport-dmy_mongodb-cuser-ouser.dat
|
||
./mongoexport-dmy_mongodb-cuser-ouser.dat
|
||
connectedto:127.0.0.1
|
||
exported2records
|
||
|
||
cat user.dat
|
||
{"_id":{"$oid":"4f81a4a1779282ca68fd8a5a"},"uid":2,"username":"Jerry","age":100}
|
||
{"_id":{"$oid":"4f844d1847d25a9ce5f120c4"},"uid":1,"username":"Tom","age":25}
|
||
参数说明
|
||
-d指明使用的库,本例中为”my_mongodb”
|
||
-c指明要导出的表,本例中为”user”
|
||
-o指明要导出的文件名,本例中为”user.dat”
|
||
|
||
zookeeper如何保证事务的一致性
|
||
数据一致性是靠Paxos算法(一种基于消息传递的一致性算法。)保证的,Paxos可以说是分布式一致性算法的鼻祖,是ZooKeeper的基础 paxos的基本思路(深入解读zookeeper一致性原理):http://wely.iteye.com/blog/2362118
|
||
|
||
请简述C/S、B/S的含义。
|
||
C/S表示客户端/服务器的模式C是client,S是server。c/s中需要另外开发客户端程序
|
||
B/S表示浏览器/服务器的模式B是browser,S是server。b/s是基于浏览器来实现的。
|
||
|
||
电脑开机时主机内发出嘀嘀的鸣叫声,且显示器无任何信号,此对象可能是哪方面所导致,怎样处理?
|
||
可能是内存问题导致,一般是内存松动,灰尘较多.可以做清扫灰尘处理,重新插好内存等操作.
|
||
|
||
各种主板的报警音有些差别,常见两种BIOS报警声音含义如下,自己根据长短查对属于那种情况吧:
|
||
AwardBIOS的报警音:
|
||
1短:系统正常。
|
||
2短:需要更正CMOS设置,请进入CMOSSetup重新设置。
|
||
1长1短:RAM或主板出错。
|
||
1长2短:显示卡错误,检查独立显卡是否插牢,或者显卡坏了。
|
||
1长3短:键盘控制器错误。检查主板。
|
||
1长9短:主板BIOS损坏。
|
||
不断地响(长声):内存条未插好或损坏。重复短响:电源故障。 无声音无显示:电源故障。
|
||
AMIBIOS的报警音:
|
||
1短:内存问题。
|
||
2短:内存ECC较验错误。在CMOSSetup中将内存关于ECC校验的选项设为Disabled就可以解决。
|
||
3短:系统基本内存(第1个64kB)检查失败。换内存。
|
||
4短:系统时钟出错。
|
||
5短:CPU损坏。
|
||
6短:键盘控制器故障。
|
||
7短:系统实模式错误,不能切换到保护状态。
|
||
8短:显存错误。更换显卡。
|
||
9短:ROMBIOS错误。
|
||
1长3短:内存错误。内存损坏,更换即可。
|
||
1长8短:显卡损坏或显示卡没插好。
|
||
|
||
有一个员工,说他的机器上不了网,请你描述一下,可能是哪些故障产生的,怎么解决这些故障?
|
||
查看软件和硬件
|
||
ping网关和其他机器.ping不通,看看是不是网卡被禁了,还是ipdnsgateway有问题,再看看网卡驱动是不是有问题.
|
||
硬件方面: 看看是不是网线没插好,网卡的灯亮不亮.
|
||
|
||
Linux系统统计服务器服务连接数命令?
|
||
netstat-n|awk'/^tcp/{++S[$NF]}END{for(ainS)printa,S[a]}'
|
||
或是
|
||
netstat-nat|grepESTABLISHED|wc-l
|
||
|
||
---
|
||
查看http并发请求数及连接状态的命令关键字分别是
|
||
---
|
||
|
||
如果接到客服反馈:A项目www.lanxinA.cn无法打开,作为一名运维人员需要怎么操作?
|
||
1、先把服务切走,保证公司网站能正常对外提供服务
|
||
2、查看网络是否正常
|
||
3、本地网络速率正常时,再检查网站是否正常,域名是否能被正常解析到ip
|
||
使用故障诊断命令定位故障点。
|
||
命令分析:ping:检测IP或域名的连通性
|
||
dig/nslookup:查看DNS解析情况
|
||
traceroute:显示从访问者到网站的路由连接状态,如果有节点无法连接,只需针对该故障点进行修复便可快速恢复网络。
|
||
4、检查服务器本身是否故障
|
||
5、协调开发检查设计是否异常
|
||
|
||
在之前的运维工作中你遇到过哪些运维故障?是怎么解决的?请描述2个你发现并解决的故障案例
|
||
1、问题描述:服务器tomcat重启之后,网站很长一段时间无法访问,然后过几分钟就可以访问了。
|
||
使用命令netstat-tulnp|grepjava发现是8005端口的问题,起来很慢,日志里面又没有什么报错信息。
|
||
原因:Tomcat启动过程很慢,JVM上的随机数与熵池策略耗时:session引起的随机数问题导致的。
|
||
解决方案: 修改$JAVA_HOME/jre/lib/security/java.security文件中securerandom.source配置项:
|
||
\#securerandom.source=file:/dev/urandom 改为 securerandom.source=file:/dev/./urandom
|
||
最后重启tomcat发现速度快了。
|
||
2、Tomcat每周六重启失败
|
||
问题背景:生产环境上面的tomcat每周六重启,但是重启失败
|
||
原因:经过调查发现是因为一个tomcat产生了多个java进程,所以执行自带脚本shutdown.sh的时候没有把tomcat进程完全杀死。
|
||
解决方案:将杀死tomcat进程的脚本放在重启脚本的前面执行
|
||
59 2 * * 6 /app/bin/kill.sh >> /app/log/backup/kill.log 2&1
|
||
0 13 * * 6 /app/bin/restart_tomcat.sh >> /app/log/backup/restart.log 2&1
|
||
|
||
假设网站结构为:Nginx→PHP-FPM→Mysql有部分链接打开缓慢,通过什么方式可以找到访问缓慢的链接
|
||
1、系统负载,磁盘IO 2、是否有php慢查询程序 打开php-fpm中php慢查询日志
|
||
request_slowlog_timeout=5 slowlog=var/log/slow.log
|
||
reload访问之后无慢查询日志,判断无执行时间比较慢的php程序
|
||
2.检查该配置文件
|
||
pm=static pm.max_children=300 pm.start_servers=15 pm.min_spare_servers=8 pm.max_spare_servers=48
|
||
request_terminate_timeout=200 排除是pm.max_children设置过小引起的问题。
|
||
3.mysql可能有慢查询
|
||
|
||
请写出5个你常用的系统或网络维护工具的名称
|
||
配置部署自动化:ansible(puppet,saltstart)
|
||
日志采集、分析、报警:ELK
|
||
网络质量监控:smokeping、zabbix
|
||
监控(报警)自动化:nagios(监控系统),ganglia(集群监控),cacti(流量监控)、ipmonitor(ping监控)等
|
||
指标收集:collectd+statsd(statsite)
|
||
指标绘图:graphite、nrpe、pnp4nagios
|
||
|
||
远程管理卡作用。怎么通过命令看硬盘,内存等硬件故障。
|
||
1、远程安装操作系统
|
||
登录 监控电池、风扇、CPU、内存、磁盘等硬件设备的状态远程管理卡管理界面,用控制卡上的虚拟介质映射功能把自己电脑上的ISO文件或者物理光驱投递给机房里服务器。
|
||
2、电源控制功能 远程登录管理界面,进行开机、关机、重启
|
||
3.检查服务器硬件状态 监控电池、风扇、CPU、内存、磁盘等硬件设备的状态
|
||
|
||
java报错socket
|
||
java.net.SocketTimeoutException.这个异常比较常见,socket超时。
|
||
一般有2个地方会抛出这个,一个是connect的时候,这个超时参数由connect(SocketAddressendpoint,inttimeout)中的后者来决定,还有就是setSoTimeout(inttimeout),这个是设定读取的超时时间。它们设置成0均表示无限大。
|
||
.java.net.BindException:Addressalreadyinuse:JVM_Bind。
|
||
该异常发生在服务器端进行newServerSocket(port)或者socket.bind(SocketAddressbindpoint)操作时。
|
||
原因:与port一样的一个端口已经被启动,并进行监听。此时用netstat–an命令,可以看到一个Listending状态的端口。只需要找一个没有被占用的端口就能解决这个问题。
|
||
status模块监控nginx等。
|
||
|
||
如何测试网速,测试视频吞吐与常规网速测试的区别
|
||
ping
|
||
|
||
名词解释:
|
||
HDLC,VTP,OSPF,RIP,DDOS,GNU,netscreen,ssh,smartd,apache,WAIT_TIME
|
||
HDLC(High-LevelDataLinkControl):
|
||
高级数据链路控制:是一个在同步网上传输数据、面向比特的数据链路层协议,它是由国际标准化组织(ISO)根据IBM公司的SDLC(SynchronousDataLinkControl)协议扩展开发而成的。
|
||
VTP(VLANTrunkingProtocol):
|
||
VLAN中继协议,也被称为虚拟局域网干道协议:它是思科私有协议。作用是十几台交换机在企业网中,配置VLAN工作量大,可以使用VTP协议,把一台交换机配置成VTPServer,其余交换机配置成VTPClient,这样他们可以自动学习到server上的VLAN信息。
|
||
它是一个OSI参考模型第二层的通信协议,主要用于管理在同一个域的网络范围内VLANs的建立、删除和重命名。
|
||
OSPF(OpenShortestPathFirst开放式最短路径优先):
|
||
OSPF是IETF(国际互联网工程任务组TheInternetEngineeringTaskForce)开发的基于链路状态的自治系统内部路由协议。
|
||
OSPF仅传播对端设备不具备的路由信息,网络收敛迅速,并有效避免了网络资源浪费;OSPF直接工作于IP层之上,IP协议号为89;OSPF以组播地址发送协议包;
|
||
RIP(RoutingInformationProtocol)
|
||
路由信息协议RIP是基于距离矢量算法的路由协议,利用跳数来作为计量标准。
|
||
(缺点:由于15跳为最大值,RIP只能应用于小规模网络;收敛速度慢;根据跳数选择的路由,不一定是最优路由。)
|
||
DDOS(DistributedDenialofService)
|
||
分布式拒绝服务攻击攻击指借助于客户/服务器技术,将多个计算机联合起来作为攻击平台,对一个或多个目标发动DDoS攻击,从而成倍地提高拒绝服务攻击的威力。通常,攻击者使用一个偷窃帐号将DDoS主控程序安装在一个计算机上,在一个设定的时间主控程序将与大量代理程序通讯,代理程序已经被安装在网络上的许多计算机上。代理程序收到指令时就发动攻击。利用客户/服务器技术,主控程序能在几秒钟内激活成百上千次代理程序的运行。
|
||
在信息安全的三要素——“保密性”、“完整性”和“可用性”中,DDOS针对的是可用性。
|
||
GNU(GNU is Not Unix的递归缩写)
|
||
GNU是一个自由的操作系统,其内容软件完全以GPL(GNU通用公共许可证)方式发布。这个操作系统是GNU计划的主要目标,名称来自GNU'sNotUnix!的递归缩写,因为GNU的设计类似Unix,但它不包含具著作权的Unix代码。GNU的创始人,理查德·马修·斯托曼,将GNU视为“达成社会目的技术方法”。
|
||
netscreen
|
||
Netscreen防火墙是一种高性能的硬件防火墙,与其它的硬件防火墙相比有本质的区别。
|
||
其它的硬件防火墙实际上是运行在PC平台上的一个软件防火墙,而Netscreen防火墙则是由ASIC芯片来执行防火墙的策略和数据加解密,因此速度比其它防火墙要快得多。从软件特性上看Netscreen防火墙是状态检测与应用代理混合的防火墙,对于大部份的应用Netscreen防火墙是监测整个通讯状态,如果发现通讯状态不正常便拒绝进入受保护的内部网络,对于FTP或H322等通讯状态不好跟踪的服务Netscreen防火墙通过应用代理来确保服务安全。
|
||
ssh(SecureShell)
|
||
安全外壳协议由IETF的网络小组(NetworkWorkingGroup)所制定;SSH为建立在应用层基础上的安全协议。目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。
|
||
smartd
|
||
smartd是一个守护进程(一个帮助程序),它能监视拥有自我监视,分析和汇报技术(Self-Monitoring,Analysis,andReportingTechnology-SMART)的硬盘。SMART系统使得硬盘能监视并汇报自己的运行状况。它的一个重要特性是能够预测失败,使得系统管理员能避免数据丢失。
|
||
apache
|
||
Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩充,将Perl/Python等解释器编译到服务器中。同时Apache音译为阿帕奇,是北美印第安人的一个部落,叫阿帕奇族,在美国的西南部。也是一个基金会的名称、一种武装直升机等等。
|
||
WAIT_TIME
|
||
|
||
写下之前工作中在生产环境中对何种角色的服务器上的哪些内容配置过备份,使用什么备份方法及备份策略,使用了什么方法检查备份的可用性?
|
||
每天晚上00点整在Web服务器上打包备份系统配置文件、网站程序目录及访问日志并通过rsync命令推送备份服务器backup上备份保留2.内核备份
|
||
数据库备份
|
||
备份方案:
|
||
1.设置数据库自动备份脚本文件,计划任务
|
||
2.每个星期天做全库备份
|
||
3.每日(星期天除外)做级增量备份
|
||
4.在主服务器保留一个礼拜内的全库备份、增量备份
|
||
5.将一个礼拜前的全库备份,增量备份数据FTP到其他环境
|
||
6.还可以加入差异备份,多种备份形式。
|
||
|
||
tcp链接状态有哪些,分别代表什么意思
|
||
LISTEN:侦听来自远方的TCP端口的连接请求
|
||
SYN-SENT:再发送连接请求后等待匹配的连接请求
|
||
SYN-RECEIVED:再收到和发送一个连接请求后等待对方对连接请求的确认
|
||
ESTABLISHED:代表一个打开的连接
|
||
FIN-WAIT-1:等待远程TCP连接中断请求,或先前的连接中断请求的确认
|
||
FIN-WAIT-2:从远程TCP等待连接中断请求
|
||
CLOSE-WAIT:等待从本地用户发来的连接中断请求
|
||
CLOSING:等待远程TCP对连接中断的确认
|
||
LAST-ACK:等待原来的发向远程TCP的连接中断请求的确认
|
||
TIME-WAIT:等待足够的时间以确保远程TCP接收到连接中断请求的确认
|
||
CLOSED:没有任何连接状态
|
||
|
||
LinuxA机器提供了80端口服务,但是用户反馈访问慢,如何排查问题?
|
||
1、当网站访问较慢时,首先先查看本地网络是否正常
|
||
2、本地网络速率正常时,再检查下所访问的网站是否正常
|
||
总时间:网站的响应时间,可了解网站的性能瓶颈或者是利用谷歌或IE浏览器的F12开发者工具查看下网站的大小和网站的打开速度成不成正比。
|
||
3、网站出现无法访问时,使用故障诊断命令定位故障点。
|
||
命令分析:ping:检测IP或域名的连通性dig/nslookup:查看DNS解析情况traceroute:显示从访问者到网站的路由连接状态,如果有节点无法连接,只需针对该故障点进行修复便可快速恢复网络。
|
||
4、利用浏览器开发者模式检查下图片、js、css是否做过压缩处理
|
||
5、数据库(连接数等)、服务器(cpu、内存等)
|
||
6、从网站本身找问题,网站的问题包括网站程序设计,网页设计结构,网页内容三个部分。
|
||
|
||
现有两个文件里面分别有3行内容,将两文件内容放到第三个文件里,要求是交叉放到两个文件里,一条命令如何解决?
|
||
方法1:
|
||
awk 'NR==1{a=$0};NR==2{b=$0};NR==3{c=$0};NR==4{d=$0};NR==5{e=$0};NR==6{f=$0}END{print a,"\n"d,
|
||
"\n"b,"\n"e,"\n"c,"\n"f}' a.txt b.txt aaa
|
||
方法2:
|
||
awk '{a[NR]=$0}END{printa[1]"\n"a[4]"\n"a[2]"\n"a[5]"\n"a[3]"\n"a[6]}' a.txt b.txt
|
||
|
||
现有a和b两个文件,将a和b文件的内容输出到c文件里,按要求写入到c文件里.1\na\n2\nb\n3\nc
|
||
a文件内容 1 2 3
|
||
b文件内容 a b c
|
||
awk'{a[NR]=$0}END{printa[1]"\n"a[4]"\n"a[2]"\n"a[5]"\n"a[3]"\n"a[6]}'ab>>c
|
||
|
||
icmp协议属于tcp/ip协议或者OSI模型的那一层。
|
||
icmp===Internet控制消息协议
|
||
该协议是TCP/IP协议集中的一个子协议,属于网络层协议,主要用于在主机与路由器之间传递控制信息,
|
||
包括报告错误、交换受限控制和状态信息等。当遇到IP数据无法访问目标、IP路由器无法按当前的
|
||
传输速率转发数据包等情况时,会自动发送ICMP消息。我们可以通过Ping命令发送ICMP回应请求消息
|
||
并记录收到ICMP回应回复消息,通过这些消息来对网络或主机的故障提供参考依据。
|
||
|
||
hadoop中的HDFS的文件存储过程中的写操作。namenode节点作用
|
||
hadoop概念:
|
||
Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。
|
||
Hadoop实现了一个分布式文件系统(HadoopDistributedFileSystem),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(highthroughput)来访问应用程序的数据,适合那些有着超大数据集(largedataset)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streamingaccess)文件系统中的数据。
|
||
Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。
|
||
|
||
Hadoop是一个能够让用户轻松架构和使用的分布式计算平台。用户可以轻松地在Hadoop上开发和运行处理海量数据的应用程序。它主要有以下几个优点:
|
||
1.高可靠性。Hadoop按位存储和处理数据的能力值得人们信赖。
|
||
2.高扩展性。Hadoop是在可用的计算机集簇间分配数据并完成计算任务的,这些集簇可以方便地扩展到数以千计的节点中。
|
||
3.高效性。Hadoop能够在节点之间动态地移动数据,并保证各个节点的动态平衡,因此处理速度非常快。
|
||
4.高容错性。Hadoop能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配。
|
||
5.低成本。与一体机、商用数据仓库以及QlikView、YonghongZ-Suite等数据集市相比,hadoop是开源的,项目的软件成本因此会大大降低。
|
||
|
||
HDFS写文件过程:
|
||
1.初始化FileSystem,客户端调用create()来创建文件
|
||
2.FileSystem用RPC调用元数据节点,在文件系统的命名空间中创建一个新的文件,元数据节点首先确定文件原来不存在,并且客户端有创建文件的权限,然后创建新文件。
|
||
3.FileSystem返回DFSOutputStream,客户端用于写数据,客户端开始写入数据。
|
||
4.DFSOutputStream将数据分成块,写入dataqueue。dataqueue由DataStreamer读取,并通知元数据节点分配数据节点,用来存储数据块(每块默认复制3块)。分配的数据节点放在一个pipeline里。DataStreamer将数据块写入pipeline中的第一个数据节点。第一个数据节点将数据块发送给第二个数据节点。第二个数据节点将数据发送给第三个数据节点。
|
||
5.DFSOutputStream为发出去的数据块保存了ackqueue,等待pipeline中的数据节点告知数据已经写入成功。
|
||
6.当客户端结束写入数据,则调用stream的close函数。此操作将所有的数据块写入pipeline中的数据节点,并等待ackqueue返回成功。最后通知元数据节点写入完毕。
|
||
7.如果数据节点在写入的过程中失败,关闭pipeline,将ackqueue中的数据块放入dataqueue的开始,当前的数据块在已经写入的数据节点中被元数据节点赋予新的标示,则错误节点重启后能够察觉其数据块是过时的,会被删除。失败的数据节点从pipeline中移除,另外的数据块则写入pipeline中的另外两个数据节点。元数据节点则被通知此数据块是复制块数不足,将来会再创建第三份备份。
|
||
NameNode:是一个通常在HDFS实例中的单独机器上运行的软件。它负责管理文件系统名称空间和控制外部客户机的访问。NameNode决定是否将文件映射到DataNode上的复制块上
|
||
NameNode的作用:是管理文件目录结构,接受用户的操作请求,是管理数据节点的
|
||
|
||
小写字母的替换,将qianfengjiaoyu中的n转换成大写的N.
|
||
A.url=qianfengjiaoyu echo${url//n/N} 或
|
||
B.echo qianfengjiaoyu >1.txt sed -ri s/qianfengjiaoyu/qiaNfeNgjiaoyu/g 1.txt
|
||
|
||
简单说一下tcp/ip协议中的tcp和ip
|
||
TCP传输控制协议
|
||
双方通信前 会有三次握手过程从而建立连接传输数据
|
||
IP网际协议
|
||
主要负责数据包的路由与传输 根据数据目标地址选择正确路径保证数据送到指定目的地
|
||
|
||
|
||
公司的架构,服务器的数量,之前公司运维部的人员数量,之前工作流程
|
||
服务器数量五六十台,运维人数2人,运维人员对公司互联网业务所依赖的基础设施、基础服务、线上业务进行稳定性加强,进行日常巡检发现服务可能存在的隐患,对整体架构进行优化以屏蔽常见的运行故障,多数据中接入提高业务的容灾能力。通过监控、日志分析等技术手段,及时发现和响应服务故障,减少服务中断的时间,使公司的互联网业务符合预期的可用性要求,持续稳定地为用户提供务。
|
||
|
||
他们公司数据库使用的是mongodb,注意mongodb
|
||
MongoDB是一个基于分布式文件存储的数据库
|
||
它的特点是高性能、易部署、易使用,存储数据非常方便。主要功能特性有:
|
||
面向集合存储,易存储对象类型的数据。mongodb集群参考 *模式自由。 *支持动态查询。
|
||
支持完全索引,包含内部对象。 *支持查询。支持复制和故障恢复。 *可通过网络访问。
|
||
使用高效的二进制数据存储,包括大型对象(如视频等)。 *自动处理碎片,以支持云计算层次的扩展性。
|
||
支持RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言。 *文件存储格式为BSON(一种JSON的扩展)。
|
||
|
||
301和302的区别?
|
||
301 永久重定向 表示资源或页面永久转移到另一位置。会将旧网址替换为重定向之后的网址
|
||
302 临时重定向 表示资源或页面临时转移到另一位置。仍会保留旧网址且将重定向后的新网址认为是暂时的
|
||
|
||
Python的类模块?
|
||
模块分为三类:内置模块;第三方;自定义;
|
||
|
||
---
|
||
有什么才艺吗,会唱歌吗,跳舞之类的。 视个人情况而定
|
||
个人兴趣爱好是什么?
|
||
---
|
||
|
||
---
|
||
你对未来有什么规划,三到五年
|
||
---
|
||
|
||
说一下jenkins的工作流程
|
||
开发(git)-->git主库-->jenkins(git+jdk(环境)+tomcat+maven打包+测试)-->发布到tomcat服务器
|
||
|
||
---
|
||
上家公司有多少台服务器,几个运维。
|
||
---
|
||
|
||
说一下数据库的几个缓存服务器
|
||
Redis memcached
|
||
|
||
grep同时过滤两个条件?
|
||
cat 文件名 | grep '条件一' | grep '条件二'
|
||
|
||
zabbix自定义的key值做过哪些?
|
||
服务器服务状态 磁盘I/O情况 服务器网络接口进出流量
|
||
服务器cpu状态等 自定义KEY的方法 zaxbix客户端
|
||
|
||
什么是磁盘碎片
|
||
其实磁盘碎片应该称为文件碎片.磁盘碎片指的是硬盘读写过程中产生的不连续文件.
|
||
硬盘上非连续写入的档案会产生磁盘碎片,磁盘碎片会加长硬盘的寻道时间,影响系统效能.比如虚拟内存使用了硬盘,硬盘上便会产生磁盘碎片.
|
||
|
||
什么是内存碎片
|
||
内存碎片分为:内部碎片和外部碎片。
|
||
内部碎片就是已经被分配出去(能明确指出属于哪个进程)却不能被利用的内存空间;
|
||
外部碎片指的是还没有被分配出去(不属于任何进程),但由于太小了无法分配给申请内存空间的新进程的内存空闲区域
|
||
|
||
777是什么?
|
||
一个文件有三个权限,分别是读、写和执行,它们对应的数分别是4、2和1。而一个文件面对的用户分三类:所属用户、所属组其他用户和组。
|
||
所以777三个数字就是对应这三个用户对象全部都有读、写、执行权限.
|
||
|
||
777在文件中是怎么显示的?
|
||
-rwxrwxrwx
|
||
|
||
rwx前面那些---是干什么的?
|
||
占位符表示没有权限
|
||
|
||
是怎么描述一个文件的?
|
||
文件类型还是路径,看不懂
|
||
|
||
swap分区是做什么的?
|
||
如果linux系统物理内存不够用了,系统会用swap分区来模拟内存。系统会把物理内存里的访问频率低的内存对象移动到swap里,再在物理内存里产生新的连接指向swap里的那个对象;
|
||
|
||
我的带宽是固定的,怎么提升用户的访问速度
|
||
1.使用CDN网络加速
|
||
2.服务器开启gzip压缩
|
||
3.网站实现纯静态
|
||
4.设置缓存
|
||
5.减少重定向
|
||
6.代码优化
|
||
|
||
简单介绍一下linux的文件系统
|
||
Linux操作系统支持很多不同的文件系统,比如ext2、ext3、ext4,XFS、FAT等等
|
||
linux以文件的形式对计算机中的数据和硬件资源进行管理,也就是彻底的一切皆文件,反映在Linux的文件类型上就是:普通文件、目录文件、链接文件、管道文件、套接字文件、设备文件等
|
||
EXT家族支持度最广:
|
||
但创建文件系统(格式化)慢! 但修复慢! 但文件系统存储容量有限!
|
||
xfs同样是一种日志式文件系統:
|
||
高容量,支持大存储高性能,创建/修复文件系统快
|
||
inode与block都是系統需要用到時,才动态配置产生
|
||
|
||
写个12加7的脚本,12和7是进行传参的
|
||
echo $[$1+$2]
|
||
|
||
如何查看8080端口被哪个进程占用
|
||
ss -anptu | grep 8080
|
||
netstat -anptu | grep 8080
|
||
lsof -i:8080
|
||
|
||
简述一下linux系统性能优化?
|
||
系统级别的调优考虑的是怎么让应用程序在我们系统上运行的更合理规范,或者说在硬件不变动的情况下,对系统优化提高性能和效率。使用topvmstatiostatmpstat等命令查看系统状态,找到系统瓶颈,进行相应的调整优化。
|
||
|
||
简述一下你知道的监控软件(有关键内容即可)
|
||
zabbix监控软件
|
||
Zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位解决存在的各种问题。是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。
|
||
zabbix分为主动模式和被动模式
|
||
主动:agent请求server获取主动的监控项列表,并主动将监控项内需要检测的数据提交给server/proxy
|
||
被动:server向agent请求获取监控项的数据,agent返回数据。
|
||
|
||
简述一下你知道的负载均衡(有关键内容即可)
|
||
常用的负载均衡开源软件有nginx、lvs、haproxy,商业的硬件负载均衡设备F5、Netscale。
|
||
lvs做四层负载均衡。有nat模式和dr模式。
|
||
nginx做七层负载均衡。nginx负载均衡配置,主要是proxy_pass,upstream的使用。
|
||
|
||
用脚本写出172.10.13.0/24网段里能ping通的ip
|
||
for i in{1..254};
|
||
do
|
||
ip=10.18.45.$i
|
||
ping -c 1 -W 1 $ip &>/dev/null
|
||
if [ $? -eq 0 ];then
|
||
echo $ip
|
||
fi
|
||
done
|
||
|
||
你熟悉的服务器压测工具有哪些?
|
||
四款Web服务器压力测试工具http_load、webbench、ab、siege
|
||
ab是apache自带的一款功能强大的测试工具 数据库测试工具mysqlslapbenchmark
|
||
|
||
面试必准备
|
||
1、LVS:模式、原理、区别
|
||
2、Haproxy:代理的特点(四层、七层)、而且往往会用在穿墙方面、最好会使用它代理SSL
|
||
3、NGINX:upstream转发最为基础、httperror_code常见的要记住(404/403/500/502/503/301/302)、nginxconnectfull如何发现与解决、会添加proxy_header、会添加LogFormat、会使用limit、能看懂logFile、会使用nginxSSL(如果会调整SSL参数为加分项,如SSL/TLS版本、超时、密钥长度等)(limit_rate/ip为加分项)
|
||
4、tomcat:维护、调优、基本排错(tomcat无法启动的处理)
|
||
5、JAVA:区分并安装JDK与JRE、JCE、MAVEN,会使用jstack、会配置并使用Jenkins、理解-Xmx-Xms、了解gc.log、能看懂java_applog为加分项;
|
||
6、php:安装php环境、php-mysql、php-redis及各种模块(源码)、会调整php.ini文件中的基本参数、php的工作模式及基本排错(如动态情况下使用哪种模式?初始线程设置多少?部分用户连接错误如何处理?)
|
||
7、python环境:virtualenv+supervisord部署python应用
|
||
8、mysql:备份、恢复(多大的数据大致需要备份多久、备份时添加哪些参数及会有哪些影响?replication:复制遇到错误如何解决,如何保证复制安全性?如何保证复制可靠性?最好会使用SSL复制;mysqllog的格式及区别;GTID的优点;最新版本的新特性;加分项mycat、mysql-proxy、mysql-cluster、MHA
|
||
9、mongodb:备份恢复、RS(复制集创建)、配置参数调整、cluster(sharding)
|
||
10:dump、RS、维护、持久化策略及区别、分配最大内存、过期策略及其区别、redis-cluster
|
||
11、Elasticsearch:创建库及索引、插入、查询数据、ES-cluster的创建及常见故障
|
||
12、Zabbix:TemplateosLinux模板中的每一项都要了解、熟练并灵活编写action中的各种condation、知道mysql需要监控哪些项、Java_app需要监控哪些项、nginx需要监控哪些项、log需要监控哪些项;有二次开发经验优先
|
||
13、shell属于最基础技能(不管熟悉不熟悉,面试一定要说非常熟悉或精通)
|
||
14、网络技术(tcp网络协议)及公有云使用经验为加分项
|
||
|
||
面试总结
|
||
1.微信---工作群聊天记录不要清理,任务派发和问题解决都在里边
|
||
2.自我介绍
|
||
简历的浓缩版,轻松的,3分钟左右,400~500左右。
|
||
自己的个人信息,最近的一份工作的工作经历。
|
||
兴趣爱好正向积极向上。
|
||
通过这几年的工作对那些特别熟悉,
|
||
3.LVS模式原理区别----->公司并不一定用,但是是最基础的,只有懂这个,才会其他的
|
||
NLB---->nginxHaproxy同样可以 模式NAT DRTUNFULL-NAT
|
||
原理: 其他的ALB(A是application)、ELB(AWS的EC2)、
|
||
4.Haproxy
|
||
haproxy代理
|
||
(mysql主从不复制了stopslavestartslave如果还不行,就是两者之间网不行,用haproxy做代理,)
|
||
squid#做正向代理需要知道怎么做。3128默认端口要修改#yum-yinstallsquid 反向代理正向代理
|
||
5.Nginx upstream转发 httperror_code常见的要记住(404/403/500/502/503/301/302)
|
||
404页面找不到页面丢失 403访问被拒绝 500服务器错误
|
||
502超时---有可能是proxy_timeout时间过短,客户端提供了一个大查询query,时间太长
|
||
503请求过多,nginx不向后端转发了,或者是upstream的地址、端口有问题。
|
||
出现问题检查cpu、内存负载特别高,如果没有检查配置。
|
||
301永久重定向 302临时重定向
|
||
nginx connect full如何发现和解决
|
||
如何发现: 查看错误日志,openfile出现
|
||
如何解决: 如果cpu和内存负载超高那就是服务器不够加服务器
|
||
不是上边的问题那就修改ulimit-n的参数,即文件打开数的问题 进程的openfile和系统openfile不同
|
||
进程的openfile是先psaux参看进程pid然后查看/proc/pid/fd数目是不是和预期一致
|
||
nginx的log太大,删除以后结果发现空间还没有释放,需要重启服务
|
||
logrotate定义的日志的用户和组不是nginx,结果nginx不能释放空间,
|
||
cron计划任务anacron的时间戳的问题。 两者结合来解决这个问题。
|
||
haproxyhead问题
|
||
后端的real-searve怎么记录x-forward-real-iplogformat里要记录这个字段。
|
||
会使用limit能看懂logfile和写allow和denylimit-rate模块限制频率
|
||
errorlog里出现这样的字段Noupstreamlivenginx转发给后端是发现后端的服务器都特别忙,就会报这样的字段的,就不会转发给后端服务器,客户端回报timeout
|
||
需要用shell脚本来最近5分钟有多少条记录出现这个字段,超过某个数目就报警。
|
||
会使用nginxssl(如果会调整参数会成为加分项,如SSl/TLS的版本,)ssl_
|
||
6.tomcat:维护、调优、基本排错()
|
||
调优:如下
|
||
http://blog.chopmoon.com/favorites/231.html
|
||
首先,打开${TOMCAT_HOME}/conf/server.xml,搜索【<Executorname="tomcatThreadPool"】,开启并调整为
|
||
7.JAVA
|
||
JAVA:区分并安装JDK与JRE、JCE、MAVEN,会使用jstack、会配置并使用Jenkins、理解-Xmx-Xms、了解gc.log、能看懂java_applog为加分项;
|
||
-xms-xmxMEVEN(各种的lib库)gclog(gc即加密库)了解gclog能看懂java_applog.
|
||
会配置并使用jenkins
|
||
如果gclog里面有fullgc字段那么5分钟可定会爆oom(内存溢出),但是gclog没有时间戳,里边的时间戳是自系统启动以来的时间(可能是秒或者分钟),一分钟如果超过一条就要写脚本自动重启服务。
|
||
jstack的作用是把Java的堆内存和栈内存dump到某文件,然后交给OP处理。
|
||
8.php:安装php环境、php-mysql、php-redis及各种模块(源码)、会调整php.ini文件中的基本参php数、php的工作模式及基本排错(如动态情况下使用哪种模式?初始线程设置多少?部分用户连接错误如何处理?)
|
||
会安装php-mysql.so PHP的工作模式。也可以说是fastcgi的工作模式:static(静态)、dynamic(动态)、ondemard()。
|
||
9.python环境:virtualenv+supervisord部署python应用
|
||
用虚拟环境virtalenv进程管理器supervisord<----指定python的版本和py文件位置。
|
||
10.mysql:备份、恢复(多大的数据大致需要备份多久、备份时添加哪些参数及会有哪些影响?replication:复制遇到错误如何解决,如何保证复制安全性?如何保证复制可靠性?最好会使用SSL复制;mysqllog的格式及区别;GTID的优点;最新版本的新特性;加分项mycat、mysql-proxy、mysql-cluster、MHA
|
||
了解那些操作会锁表,那些默认锁表,操作完记得退出。
|
||
一台一台上线,上线完,用saltstack检测文件的MD5值,上线要有灰度,如果一块批量操作,那么在上线的过程中,所有的流量都进不来,如果代码出问题就GG,只能回滚了
|
||
备份的过程加了什么参数,多久(gzip)
|
||
例如8个G的文件不gzip备份出来7~8个G,用是20~30分钟,加gzip,备份出来700~800M,用时没有半个小时不行。
|
||
复制的可靠性:做代理,穿越墙的。
|
||
mysql_log的格式。默认的格式:记录原始的sql语句row格式(有些不支持)记录的改变。混合模式两种多记录。
|
||
GTID:全局唯一表示,每一个事务都会有一个标识,多线程复制。
|
||
复制延迟怎么办:升版本,升到5.7,5.7的gtid支持多线程,同步复制,不像之前版本的异步单线程的复制模式.
|
||
复制的时候报error,sql线程报的,skip(先stopslave---skip指向nextgtid-----startslave)
|
||
传统模式:
|
||
mysql>stopslave; mysql>setglobalsqlslave_skip_counter=1; mysql>startslave;
|
||
GTID模式
|
||
stopslave; setGTID_NEXT=“uuid_next_id”; uuid会在error里记录,这里是error的+1 slaveslave;
|
||
mysql-cluster 专门的一个产品,app--->sql层---->data层<-----m层(管理data节点)
|
||
MHA<------研究下,这两年更完善了。 resetmaster-->删除所有的binlog的
|
||
resetslaveall--->删除master信息的 UTF8mb4可以支持插入表情符。
|
||
11.mongodb:备份恢复、RS(复制集创建)、配置参数调整、cluster(sharding)
|
||
redismaster——slave|---------r/s结构,master宕了需要手动提一个slave上来,哨兵sentinel监控三台机器,负责题一台slave,slave——sentinel权力比较大,多个r/s结构,集合起来叫副本集,每个叫一个分片,
|
||
12、Elasticsearch:创建库及索引、插入、查询数据、ES-cluster的创建及常见故障
|
||
数据库,非关系型数据库,快速搜索
|
||
13.Zabbix:TemplateosLinux模板中的每一项都要了解、熟练并灵活编写action中的各种condation、知道mysql需要监控哪些项、Java_app需要监控哪些项、nginx需要监控哪些项、log需要监控哪些项;有二次开发经验优先
|
||
mysql需要监控那些项:进程端口复制的状态I/O进程SQL进程myadmin--status回车所有的都要监控。
|
||
mysqlstatus:主要监控alive0表示down了则报警 mysqlqps:最近5分钟qps的值大于200000,则报警
|
||
mysqlslavequery:最近3分钟的慢查询大于3000,报警 mysqlconnections当前连接数大于500,则报警
|
||
对tomcat监控,监控那些东西 进程端口内存
|
||
mycat做了读写分离,但是服务器slave突然down了。怎么让读操作自动切换
|
||
写配置文件的时候会写好几台机器,程序会自动读取主从关系,有一个连接池,如果一台down了,会自动切换。
|
||
不同机房的zabbix监控 在一些机房装zabbix-proxy收集信息给 zabbixmysql灰度升级
|
||
装新的版本mysql,做成slave,从老的读取数据,然后新切换成master,老的切换成slave,然后把老的踢掉
|
||
监控进程在不在,端口在不在,error某一字段特别多的,单位时间内errorlog的增长时间,内存泄漏(提前重启服务)。
|
||
面试中维护几台机器?日志访问量,并发,
|
||
架构--公司不断开发新的产品,旧的产品迭代升级,每个产品线都不同的架构,每个小项目几十台机器,架构特别多
|
||
公司RD是研发工程师。OP是操作员管理员。 运维平台用python写
|
||
|
||
以下哪些方式/命令不可以查看IP是否可达? D
|
||
A.telnet
|
||
B.ping
|
||
C.tracert
|
||
D.top
|
||
|
||
将文件file1复制为file2可以用下面哪些命令 ABCDE
|
||
A.cp file1 file2
|
||
B.cat file1 > file2
|
||
C.cat <file1> file2
|
||
D.dd if=file1 of=file2
|
||
E.cat file1 | cat > file2
|
||
|
||
Linux下查看磁盘使用情况的命令是? B
|
||
A.dd
|
||
B.df
|
||
C.top
|
||
D.netstat
|
||
|
||
Linux下查看服务程序占用的端口命令是什么? BCD
|
||
A.ps -aux
|
||
B.netstat -apn
|
||
C.watch
|
||
D.lsof
|
||
|
||
linux查看系统活跃进程的命令是? AB
|
||
A.ps
|
||
B.netstat
|
||
C.df
|
||
D.ifconfig
|
||
|
||
在Linux系统中,用来存放系统所需要的配置文件和子目录是 A
|
||
A./etc
|
||
B./var
|
||
C./root
|
||
D./hoom
|
||
|
||
怎么查看两台服务器之间的网络是不是正常的?服务器是禁ping的
|
||
可以使用ssh远程登陆两台服务器。
|
||
|
||
比如我访问百度网站,有什么方法可以跟踪经过了哪些网络节点?
|
||
traceroute -s 本机ip baidu.com
|
||
|
||
在linux系统中,一般都会有swap分区,你觉得使用swap分区有什么好处,swap分区才会被使用?你觉得在生产环境中要不要用swap分区?
|
||
swap的好处是防止内存溢出 当内存不够时会使用 生产环境中是需要使用swap内存的
|
||
|
||
服务器需要监控哪些项目?凭借这些项目如何判断服务器的瓶颈?
|
||
CPU(Load)CPU使用率/负载
|
||
Memory内存
|
||
Disk磁盘空间
|
||
DiskI/O磁盘I/O
|
||
NetworkI/O网络I/O
|
||
ConnectNum连接数
|
||
FileHandleNum文件句柄数
|
||
|
||
服务器的监控项目报警时就达到瓶颈
|
||
|
||
简述一下lvs和Nginx的优缺点
|
||
一、Nginx优点:
|
||
1、工作在7层之上,可针对http应用做一些分流的策略
|
||
2、Nginx对网络稳定性的依赖非常小,理论上能ping通就能进行负载功能。
|
||
3、Nginx安装与配置比较简单,测试也比较方便,基本能把错误日志打印出来。
|
||
4、可以承担高负载压力且稳定,硬件不差的情况下一般能支撑几万次的并发量,负载度比LVS小。
|
||
5、Nginx可以通过端口检测到服务器内部的故障,如根据服务器处理网页返回的状态码、超时等,并会把返回错误的请求重新提交到另一个节点。
|
||
6、不仅仅是优秀的负载均衡器/反向代理软件,同时也是强大的Web应用服务器。LNMP也是近些年非常流行的Web架构,在高流量环境中稳定性
|
||
也很好。
|
||
7、可作为中层反向代理使用。
|
||
8、可作为静态网页和图片服务器。
|
||
9、Nginx社区活跃,第三方模块非常多,相关的资料在网上比比皆是。
|
||
Nginx缺点:
|
||
1、适应范围较小,仅能支持http、https、Email协议。
|
||
2、对后端服务器的健康检查,只支持通过端口检测,不支持url来检测。比如用户正在上传一个文件,而处理该上传的节点刚好在上传过程中出现故障,Nginx会把上传切到另一台服务器重新处理,而LVS就直接断掉了,如果是上传一个很大的文件或者很重要的文件的话,用户可能会因此而不满。
|
||
|
||
虚拟化平台中使用模板克隆方式,复制一台Linux6.X操作系统的虚拟主机,克隆后虚拟主机网络无法联通,如何修改配置解决?
|
||
a、编辑网卡配置文件/etc/sysconfig/network-scripts/ifcfg-eth0,将HWADDR和MAC地址这两行删除。
|
||
b、修改文件/etc/udev/rules.d/70-persistent-net.rules,删除之前eth0所在的行,将下一行eth1修改为eth0
|
||
c、reboot
|
||
|
||
描述Lvs、nginx负载均衡的五种调度读算法。
|
||
7层:rr wrr ip_hash fair url_hash
|
||
lvs:rr wrr 最少链接加权 最少链接 最少队列调度
|
||
|
||
Linux中的服务自启动添加方法有哪些?
|
||
7systemctlenable服务名把启动命令写到fstab或/etc/rc.local
|
||
6chkconfig服务名on/etc/rc.d/rc.local
|
||
|
||
网络地址:172.16.22.28/27,请写出此地址的子网中有多少台主机及可用主机数数量?
|
||
2^(32-27)=32-2=30
|
||
|
||
账单表:acc_bill(字段类型:varchar2)
|
||
账户编号(acct_id)|账单编号(bill_id)|账单状态(bill_sts)|账单月(bill_mon)|
|
||
账单明细表:acc_bill_dtl(字段类型:varchar2)
|
||
账单编号(bill_id)|账单科目编(fee_item_id)|账单金额(amount)|税率%(tax_rate)|
|
||
1.写出sql,账单月是2018.4月的整月账单数据。
|
||
select*fromacc_billwherebill_mon=201804
|
||
2.写出sql,账单编号是20010120的账单总金额。
|
||
selectamountfromacc_bill_dtlwherebill_id=20010120
|
||
3.写出sql,账单月是2018.4月的税率有几种类型,并按照税率大小倒序排列。
|
||
selectcount(acc_bill_dtl.tax_rate),acc_bill_dtl.tax_ratefromacc_billrightjoinacc_bill_dtlonacc_bill.acct_id=acc_bill_dt.bill_idwhereacc_bill.bill_mon=201804orderbyacc_bill_dtdesc;
|
||
4.请使用shell脚本把第一题中账单月是2018.4月的整月账单数据写入文件中。
|
||
mysql -uroot -p'mima' -e "select * from acc_bill where bill_mon=201804" >a.txt
|
||
|
||
文件名AccQryFree2016.log,存在目录/root/boss/log下,文件内容如下:
|
||
<80:21308>12:00:00servicestartquery_value,exitedwithvalue0;
|
||
<80:21308>12:00:01select*fromcrm_userwherests=1;exitedwithvalue0;
|
||
<80:21308>12:10:01usedb:db_ngboss[srv_zw1]
|
||
<80:21309>12:20:00servicestartquery_value,exitedwithvalue0;
|
||
<80:21309>12:22:01select*fromcrm_userwherests=1;exitedwithvalue0;
|
||
<80:21309>12:23:01usedb:db_ngboss[srv_zw1]
|
||
|
||
问题1:统计出文件AccQryFree2016.log中的字符串exitedwithvalue0出现的次数?
|
||
awk '/exitedwithvalue0/{a[i]++}END{printa[i]}' AccQryFree2016.log
|
||
|
||
问题2:使用vi编辑器,将该文件中的exitedwithvalue0替换成ECITEDWITHVALUE0;
|
||
:%s/exitedwithvalue0/ECITEDWITHVALUE0/g
|
||
|
||
问题3:写出带有exitedwithvalue0的时间列全部输出;
|
||
awk'/exitedwithvalue0/{print$2}/'
|
||
|
||
问题4:将AccQryFree2016.log这个文件进行压缩;
|
||
tar czf AccQryFree2016.tar.gz AccQryFree2016.log
|
||
|
||
问题5:将AccQryFree2016.log这个文件移动到/root/pkgcx/log/下;
|
||
mv AccQryFree2016.log /root/pkgcx/log/
|
||
|
||
问题6.配置一个定时任务cron,将该文件在每周五下午6点进行删除;
|
||
0 18 * * 5 /usr/bin/rm -rf /root/pkgcx/log/AccQryFree2016.log
|
||
|
||
请写出一个守护进程脚本,脚本名称是send_sms.sh,请对此脚本编写守护进程脚本。
|
||
#vi/etc/init.d/nginx
|
||
#!/bin/bash
|
||
#chkconfig:-9920
|
||
#description:Oooothisismynginxstartupscript
|
||
PROG="/usr/local/nginx/sbin/nginx"
|
||
PIDF="/usr/local/nginx/logs/nginx.pid"
|
||
case"$1"in
|
||
start)
|
||
$PROG
|
||
;;
|
||
stop)
|
||
kill-sQUIT$(cat$PIDF)
|
||
;;
|
||
restart)
|
||
$0stop
|
||
$0start
|
||
;;
|
||
reload)
|
||
kill-sHUP$(cat$PIDF)
|
||
;;
|
||
*)
|
||
echo"Usage:$0{start|stop|restart|reload}"
|
||
exit1
|
||
esac
|
||
exit0
|
||
#chmod+x/etc/init.d/nginx
|
||
#chk config --add nginx
|
||
|
||
企业中Linux服务器系统分区标准是什么?(硬盘为300G,内存16G)
|
||
/boot 200M /swap 16G / 70G /data 剩下的全部空间
|
||
|
||
方案1:针对网站集群架构中的某个节点服务器分区
|
||
该服务器上的数据有多份(其他节点也有)且数据不太重要,建议分区方案如下:
|
||
/boot:200MB swap:物理内存的1.5倍,当内存大于或等于8GB时,配置为8-16GB即可
|
||
/:剩余硬盘空间大小(/usr、/home、/var等分区和"/"公用一个分区,这相当于在windows系统中只有一个C盘,所有数据和文件都放在一起)
|
||
|
||
方案2:针对数据库及存储角色的服务器分区
|
||
该服务器的业务有大量重要的数据,建议分区方案如下:
|
||
/boot:200MB /:大小设置为50-200GB,只存放系统相关文件,网站等业务数据不放在这里。
|
||
swap:物理内存的1.5倍,当内存大于或等于8GB时,配置为8-16GB即可
|
||
/data:剩余硬盘空间大小,放数据库及存储服务等重要数据。当然,data的名称可以换成别的名字
|
||
注:本方案就是把重要数据单独分区,便于备份和管理
|
||
|
||
方案3:针对大网站或门户级别企业的服务器进行分区
|
||
此分区方案更灵活,比较适合业务线比较多、需求不确定的大企业使用,建议分区如下:
|
||
/boot:200MB /:大小设置为50-200GB,只存放系统相关文件,网站等业务数据不放在这里。
|
||
swap:物理内存的1.5倍,当内存大于或等于8GB时,配置为8-16GB即可 剩余的磁盘空间保留,不再进行分区,将来分配给不同的使用部门,由他们自己根据需求在进行分配
|
||
|
||
data目录有10个子目录,子目录名为1000~1010,其中各包含不同数量的文件。请编写一段shell脚本计算出各个子目录下的文件数量并打印出来
|
||
for i in{1000..1010}
|
||
do
|
||
echo "$i的文件数量:$(ls -1 $i | wc -l)"
|
||
done
|
||
|
||
Linux网卡配置文件路径是什么?要使服务器上外网,必须满足的条件有哪些?需要配置什么?
|
||
网卡配置文件路径:/etc/sysconfig/network-scripts/ifcfg-eth*(*代表数字)
|
||
要上外网需要:能够链接internet的网线(或无线)、有网卡
|
||
需要配置:IP、netmask、gateway、dns(自动或手动都ok,服务器一般自动)
|
||
|
||
C/S:指Client/Server(客户端/服务器)架构。
|
||
B/C: 指Browser/Server(浏览器/服务器)架构。
|
||
|
||
PAT和NAT分别代表什么?
|
||
NAT
|
||
网络地址转换
|
||
一对一关系,一个内部IP对应一个公网IP
|
||
PAT
|
||
端口地址转换
|
||
多对一关系,多个内部IP对应一个公网IP的多个端口
|
||
|
||
|
||
在路由器中,使用什么命令查看路由器的路由表?
|
||
oute print
|
||
|
||
什么可以实现动态IP地址分配?
|
||
DHCP可以实现动态IP地址分配。
|
||
|
||
问:什么协议,是最为普遍的一种内部协议,一般称为动态路由信息协议?
|
||
RIP协议
|
||
|
||
已知某一主机的IP地址为201.103.136.184,其子网掩码为255.255.255.192,则该主机是在 C 类网络中,主机所在子网最多允许有 62 台主机。
|
||
|
||
通过tcpdump查看网卡的Ping包?
|
||
yum -y install tcpdump
|
||
tcpdump -i ens33 icmp
|
||
执行命令后,查看是否有request和reply
|
||
出现request说明系统收到ping包,出现reply说明系统响应ping包
|
||
如果只出现request,那么
|
||
A.检查sysctl -a | grep icmp_echo,确认net.ipv4.icmp_echo_ignore_all=0
|
||
B.检查iptables -vL,确认-p icmp为ACCPET
|
||
如果没有request和reply都没有,那么说明ping包未能到达此主机,需要检查链路或者前端防火墙的策略。
|
||
|
||
Linux如何挂载windows下的共享目录
|
||
mkdir /windows #创建挂载目录windows
|
||
mount -t cifs -o username='Bob',password='123456' //10.18.41.203/workspace /windows
|
||
df -h #查看是否成功挂载
|
||
参数说明 : username , Window 系统登录用户名
|
||
password : Window 系统登录密码
|
||
192.168.0.102/Share : 设置Window共享目录的路径 地址格式是 \\你的IP\你的共享文件夹
|
||
/usr/local/bin/code : 挂载到 Linux 下的那个目录
|
||
通过修改fstab文件,支持开机自动挂载
|
||
vim /etc/fstab
|
||
//10.18.41.203/workspace /windows cifs auto,username=‘echo’,password=‘123456’ 0 0
|
||
|
||
linux下如何添加路由
|
||
使用route -n 查看网关信息
|
||
或者
|
||
netstat -rn查看路由
|
||
永久生效
|
||
vim /etc/sysconfig/network-scripts/ifcfg-ens33
|
||
GATEWAY=10.18.41.1
|
||
临时生效
|
||
route add default gw 10.18.41.2
|
||
删除路由表:
|
||
route del default gw 10.18.41.1
|
||
|
||
linux下如何改IP、主机名、DNS
|
||
修改ip地址
|
||
临时修改
|
||
ifconfig ens33 10.18.41.5 netmask 255.255.255.0
|
||
永久修改
|
||
vim /etc/sysconfig/network-scripts/ifcfg-eth0
|
||
IPADDR=10.18.41.2
|
||
修改主机名
|
||
临时修改
|
||
hostname 主机名
|
||
hostnamectl set-hostname 主机名
|
||
永久修改
|
||
vim /etc/hostname
|
||
修改dns
|
||
vim /etc/resolv.conf #修改后即时生效,重启同样有效
|
||
|
||
在命令行下发一邮件,发件人:[123@abc.com](mailto:123@abc.com),收信人:abc@xyz.com
|
||
echo "hello" | mail -s "test" abc@xyz.com -- -f 123@abc.com
|
||
|
||
请写出ip10.0.14.70mask255.255.255.192的网络地址和广播地址。并写下命令,在linux系统上配置10.0.14.65作为默认网关
|
||
网络地址:10.0.14.64 广播地址:10.0.14.127
|
||
sudo route add default gw 10.0.14.65
|
||
|
||
请简单描述vi编辑器的使用:
|
||
vi是一种模式文本编辑器,具备三种使用模式。
|
||
A.一般模式:默认模式,用于移动光标、删除、复制、粘贴;
|
||
1.移动光标
|
||
上下左右:左用h或←,上用k或↑,下用j或↓,右用l或→;
|
||
上下滚动:上滚用【Ctrl】+【b】(backward),下滚用【Ctrl】+【f】(foreword);
|
||
行首行尾:行首用“0”或【home】,行尾用“$”或【end】;
|
||
文首文尾:文首用“gg”或“1G”,文尾用“G”;
|
||
2.复制、粘贴、删除
|
||
复制:yy,复制光标所在一行;nyy,复制光标所在向下n行;
|
||
粘贴:p,粘贴在光标下一行;P,粘贴在光标上一行;
|
||
删除:x或【Del】,向后删除一个字符;X,向前删除一个字符;dd,删除光标所在一行;ndd,删除光标所在向下n行。
|
||
3.复原和重复
|
||
复原:u
|
||
重复上一操作:.
|
||
B.编辑模式:用于插入或替换编辑文本;
|
||
1.插入模式
|
||
i:从当前光标处插入
|
||
I:从当前行的第一个非空格符处开始插入
|
||
a:从当前光标的下一个字符处开始插入
|
||
A:从当前行的最后一个字符处插入;
|
||
o:当前行的下一行处插入新行
|
||
O:当前行的上一行处插入新行。
|
||
2.替换模式
|
||
r:替换光标所在的字符一次
|
||
R:一直替换光标所在的文字。
|
||
C.命令模式:用于查找、保存、替换大量文本、显示行号等。
|
||
1.查找与替换
|
||
/ 向下查找要搜索的字符串
|
||
? 向上查找要搜索的字符串;
|
||
n 重复前一个查找(从前往后)
|
||
N 反向重复前一个查找(从后往前)
|
||
:% s/替换前/替换后/g 或 1,$ s/替换前/替换后/g 全文替换
|
||
:n1,n2 s/替换前/替换后/g 在n1和n2行之间替换
|
||
2、行号的设置
|
||
:set nu, 显示行号 :set nonu, 取消行号
|
||
:wq或:x, 保存和离开 :w [文件路径], 另存为
|
||
:q 离开不保存
|
||
|
||
yum命令和rpm命令的区别,如何使用rpm安装一个有依赖的包?
|
||
区别:rpm 命令安装时,不检查软件包依赖性的问题,yum 命令安装时,可以自动处理依赖性关系,并且一次安装所有依赖的软体包。
|
||
rpm安装一个有依赖的包: 先用rpm安装这个有依赖的包,按照错误提示,如果是缺少某个依赖包也是去网上下载该包,然后用rpm命令安装所下载的依赖包。另外也可以去网上查找该包的依赖包,并将它们下载并安装。等所需依赖包安装完成后,在安装此包。
|
||
|
||
如何使用rpm安装一个有依赖的包?
|
||
先用rpm安装这个有依赖的包,按照错误提示,如果是缺少某个依赖包也是去网上下载该包,然后用rpm命令安装所下载的依赖包。另外也可以去网上查找该包的依赖包,并将它们下载并安装。等所需依赖包安装完成后,在安装此包。
|
||
|
||
如何查看当前LINUX系统的状态:CPU使用内存使用负载情况以及网络状态
|
||
可以用TOP工具实时动态查看CPU使用率、内存使用负载情况,用ps命令查看当前时刻的CPU使用率、内存使用负载情况。
|
||
可以用netstat命令查看网络状态,netstat命令用来打印网络连接状况、系统所开放端口、路由表等信息;可以用ifconfig这个命令可以用于网络接口的启动/停止,更改设置和表示网络状态,在不添加任何参数的情况下,ifconfig可以表示网络接口的状态;可以用ss命令可以用来获取socket统计信息,它可以显示和netstat类似的内容。但ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信息,而且比netstat更快速更高效。
|
||
|
||
/proc/sys子目录的作用?
|
||
/proc/sys包括所有的内核参数信息,可以暂时修改参数(重启后就无效),优化性能。
|
||
|
||
一个EXT3的文件分区,当使用touchtest.file命令创建一个新文件时报错,报错的信息是提示磁盘已满,但是采用df-h命令查看磁盘大小时,只使用了60%的磁盘空间,为什么会出现这种情况,说说你的理由?
|
||
1:是inode(索引节点)耗尽,因为linux的文件inode是有数量限制的。
|
||
2:磁盘配额问题。
|
||
|
||
磁盘空间满了,删除一部分nginx日志后,但是磁盘空间还是满的,为什么?
|
||
未释放磁盘空间原因:在Linux或者Unix系统中,通过rm或者文件管理器删除文件将会从文件系统的目录结构上解除链接(unlink).然而如果文件是被打开的(有一个进程正在使用),那么进程将仍然可以读取该文件,磁盘空间也一直被占用。而我删除的是nginx的log文件删除的时候文件应该正在被使用
|
||
解决方法:重启nginx服务,或者用>/opt/nginx/logs/nginx.log清空日志文件,而不是直接删除。
|
||
|
||
简述raid0、raid1、raid5三种工作模式的特点分区的方式
|
||
RAID 0:连续以位或字节为单位分割数据,并行读/写于多个磁盘上,因此具有很高的数据传输率,但它没有数据冗余,因此并不能算是真正的RAID 结构。RAID 0 只是单纯地提高性能,并没有为数据的可靠性提供保证,而且其中的一个磁盘失效将影响到所有数据。因此,RAID 0不能应用于数据安全性要求高的场合。
|
||
RAID 1:它是通过磁盘数据镜像实现数据冗余,在成对的独立磁盘上产生互为备份的数据。当原始数据繁忙时,可直接从镜像拷贝中读取数据,因此RAID 1 可以提高读取性能。RAID1 是磁盘阵列中单位成本最高的,但提供了很高的数据安全性和可用性。当一个磁盘失效时,系统可以自动切换到镜像磁盘上读写 ,而不需要重组失效的数据。简单来说就是:镜象结构,类似于备份模式,一个数据被复制到两块硬盘上。
|
||
RAID5:分布式奇偶校验的独立磁盘结构,它的奇偶校验码存在于所有磁盘上,任何一个硬盘损坏,都可以根据其它硬盘上的校验位来重建损坏的数据。支持一块盘掉线后仍然正常运行。
|
||
|
||
在ADMIN管理机上,并发查看APP1和APP2两台主机内存使用情况:
|
||
ADMIN管理机上查看APP1,APP2客户机的内存信息。
|
||
|
||
MBR是什么?有什么用?
|
||
1.MBR,全称为 Master Boot Record,即硬盘的 主引导记录。
|
||
为了便于理解,一般将MBR分为广义和狭义两种:广义的MBR包含整个扇区( 引导程序、[分区表](https://baike.sogou.com/lemma/ShowInnerLink.htm?lemmaId=4440362&ss_c=ssc.citiao.link)及分隔标识),也就是上面所说的主引导记录;而狭义的MBR仅指 引导程序而言。
|
||
硬盘的0柱面、0磁头、1扇区称为主[引导扇区](https://baike.sogou.com/lemma/ShowInnerLink.htm?lemmaId=8225075)(也叫主引导记录MBR)。它由三个部分组成,主引导程序、[硬盘分区表](https://baike.sogou.com/lemma/ShowInnerLink.htm?lemmaId=268563)DPT(Disk [Partition](https://baike.sogou.com/lemma/ShowInnerLink.htm?lemmaId=10839122&ss_c=ssc.citiao.link) table)和硬盘有效标志(55AA)。在总共512字节的[主引导扇区](https://baike.sogou.com/lemma/ShowInnerLink.htm?lemmaId=53419296)里 主引导程序(boot loader)占446个字节,第二部分是Partition table区(分区表),即DPT,占64个字节,硬盘中分区有多少以及每一分区的大小都记在其中。第三部分是magic number,占2个字节,固定为55AA。
|
||
2.MBR的作用
|
||
计算机在进行主板BIOS检测之后,就会将MBR扇区整个读取到内存中,然后执行权交给内存中MBR扇区的引导程序。系统下一步就会判断读入内存的MBR扇区的最后两个字节是否为“55 AA”,不是则报错。
|
||
如果是“55 AA”接下来引导程序会到分区表中查找是有活动分区,若有活动分区,则判断活动分区的引导扇区在磁盘中的地址,如信息正确,引导权就交给这个扇区去引导操作系统了,MBR引导程序的使命就光荣完成。
|
||
|
||
在linux系统中如何备份?
|
||
1.使用fdisk -l 确定MBR位置
|
||
2.备份MBR dd if=/dev/sda1 of=/root/mbr bs=512 count=1
|
||
3.恢复MBR dd if=/root/mbr of=/dev/sda1 bs=512 count=1
|
||
4.恢复分区表 dd if=/root/mbr of=/dev/sda1 bs=512 skip=446 count=66 注:mbr大小512 所以bs=512 count=1 bs=512 skip=446 count=66 用来确定分区表在备份文件中的位置
|
||
|
||
如何让nfs服务在运行状态5下开启而在其他运行级下关闭?
|
||
chkconfig --level 5 nfs on
|
||
chkconfig --level 1234 nfs off
|
||
|
||
找出系统中父进程号为105的所有进程,并将其结束
|
||
查看:ps -ef |awk '$3==105{print $0}
|
||
结束方法一:kill 105
|
||
只适用于守护进程,守护进程的会话,因为没有控制终端,所以就没有前后台进程组之分,会话首进程同时也是进程组组长.它被KILL掉会向该组每个进程发送SIGHUP,导致组中进程被中止.
|
||
结束方法二
|
||
for pid in ‘ps -ef |awk '$3==105{print $2}' do Kill -9 $pid done
|
||
|
||
在使用手工的方法配置网络时,可通过修改____文件来改变主机名;要配置该计算机的域名解析客户端,需配置____文件。
|
||
/etc/hostname
|
||
/etc/resolv.conf
|
||
|
||
Centos 6.X如何修改ftp用户目录路径,以及修改时应当注意的事项?
|
||
useradd ftpadmin -s /sbin/nologin –d /www(其他目录)
|
||
注意事项:权限等
|
||
|
||
简述一下,以下语句的意思?
|
||
for i in range(1,5):
|
||
for j in range(1,5):
|
||
for k in range(1,5):
|
||
if(i!=k) and (i!=j) and (j!=k):
|
||
print (i,j,k)
|
||
|
||
ijk在1-4的范围内,如果ijk值都不想等则输出ijk
|
||
|
||
从数据结构角度看,堆栈和队列都是线性表,堆栈的特性 队列是先进先出, 堆栈是先进后出 队列的特性先进先出。
|
||
|
||
面向对象的主要特征
|
||
封装、继承、多态。
|
||
|
||
Python写过什么脚本
|
||
python脚本实现excel和mysql数据库表的导入导出
|
||
excel到mysql数据库表(仅支持.xlsx格式导入):
|
||
#!/usr/bin/env python
|
||
#coding=utf-8
|
||
import xlrd
|
||
import MySQLdb
|
||
#读取EXCEL中内容到数据库中
|
||
wb = xlrd.open_workbook('/×.xlsx')
|
||
sh = wb.sheet_by_index(0)
|
||
dfun=[]
|
||
nrows = sh.nrows #行数
|
||
ncols = sh.ncols #列数
|
||
fo=[]
|
||
fo.append(sh.row_values(0))
|
||
for i in range(1,nrows):
|
||
dfun.append(sh.row_values(i))
|
||
conn=MySQLdb.connect(host='localhost',user='root',passwd='××××××',db='db')
|
||
cursor=conn.cursor()
|
||
#创建table
|
||
cursor.execute("create table test4("+fo[0][0]+" varchar(100));")
|
||
#创建table属性
|
||
for i in range(1,ncols):
|
||
cursor.execute("alter table test4 add "+fo[0][i]+" varchar(100);")
|
||
val=''
|
||
for i in range(0,ncols):
|
||
val = val+'%s,'
|
||
print dfun
|
||
cursor.executemany("insert into resources_networkdevice values("+val[:-1]+");" ,dfun)
|
||
conn.commit()
|
||
|
||
mysql数据库表到excel(仅支持.xlsx格式导出):
|
||
#!/usr/bin/env python
|
||
#coding=utf-8
|
||
import xlwt
|
||
import MySQLdb
|
||
conn=MySQLdb.connect(host='localhost',user='root',passwd='××××',db='test')
|
||
cursor=conn.cursor()
|
||
count = cursor.execute('select * from test1')
|
||
print 'has %s record' % count
|
||
#重置游标位置
|
||
cursor.scroll(0,mode='absolute')
|
||
#搜取所有结果
|
||
results = cursor.fetchall()
|
||
#测试代码,print results
|
||
#获取MYSQL里的数据字段
|
||
fields = cursor.description
|
||
#将字段写入到EXCEL新表的第一行
|
||
wbk = xlwt.Workbook()
|
||
sheet = wbk.add_sheet('test1',cell_overwrite_ok=True)
|
||
for ifs in range(0,len(fields)):
|
||
sheet.write(0,ifs,fields[ifs][0])
|
||
ics=1
|
||
jcs=0
|
||
for ics in range(1,len(results)+1):
|
||
for jcs in range(0,len(fields)):
|
||
sheet.write(ics,jcs,results[ics-1][jcs])
|
||
wbk.save('×××××/Desktop/test4.xlsx')
|
||
|
||
如何让校验主从数据不一致?出现不一致时如何处理?
|
||
1.人为原因导致从库与主库数据不一致(从库写入)
|
||
2.主从复制过程中,主库异常宕机
|
||
3.设置了ignore/do/rewrite等replication等规则
|
||
4.binlog非row格式
|
||
5.异步复制本身不保证,半同步存在提交读的问题,增强半同步起来比较完美。 但对于异常重启(Replication Crash Safe),从库写数据(GTID)的防范,还需要策略来保证。
|
||
6.从库中断很久,binlog应用不连续,监控并及时修复主从
|
||
7.从库启用了诸如存储过程,从库禁用存储过程等
|
||
8.数据库大小版本/分支版本导致数据不一致?,主从版本统一
|
||
9.备份的时候没有指定参数 例如mysqldump --master-data=2 等
|
||
10.主从sql_mode 不一致
|
||
11.一主二从环境,二从的server id一致。
|
||
12.MySQL自增列 主从不一致
|
||
13.主从信息保存在文件里面,文件本身的刷新是非事务的,导致从库重启后开始执行点大于实际执行点
|
||
为了实现主从复制数据一致性校验和修复,我们首先推荐两个热门工具,分别是percona公司的pt-table-checksum和pt-table-sync,前者用来实现主从复制数据一致性的校验,后者实现数据修复,将数据修复到一致。
|
||
|
||
主从数据校验
|
||
主从数据校验使用pt-table-checksum实现,要在主库上执行,执行校验通过参数控制校验全库全表还是只校验核心表。
|
||
校验指令举例:
|
||
./pt-table-checksum--nocheck-binlog-format --nocheck-plan --nocheck-replication-filters--replicate=test.checksums --databases=db1--tables=tb1 -h 192.168.XXX.XX -P 3306-u'hangxing' -p'PASSOWRD' --recursion-method="processlist"
|
||
解析:
|
||
--no-check-binlog-format 不检查复制的binlog模式。
|
||
--nocheck-replication-filters 不检查复制过滤器,建议启用。
|
||
--replicate=test.checksums 检查结果写入test库的checksums表里。
|
||
--databases=db1 --tables=tb1 校验db1库里的tb1表,若无参数则校验全库全表。
|
||
-h 192.168.XXX.XX -P 3306 主库IP地址和3306端口。
|
||
-u'hangxing' -p'PASSOWRD' 校验账号密码。
|
||
--recursion-method="processlist" 用processlist的方法来发现从库。
|
||
执行后的输出结果:
|
||
TS ERRORS DIFFS ROWS CHUNKS SKIPPED TIME TABLE
|
||
03-23T15:29:17 0 1 30000 1 0 1.270 testhx1.testhx1
|
||
解析:
|
||
TS :完成检查的时间。
|
||
ERRORS :检查时候发生错误和警告的数量。
|
||
DIFFS :0表示一致,大于0表示不一致。主要看这一列有无不一致数据。
|
||
ROWS :表的行数。
|
||
CHUNKS :被划分到表中的块的数目。
|
||
SKIPPED :由于错误或警告或过大,则跳过块的数目。
|
||
TIME :执行的时间。
|
||
TABLE :被检查的表名。
|
||
上述输出关键看DIFFS列,结果为0说明数据一致,无需进行数据修复,如果不为0则需要继续开展数据一致性修复工作。上述语句执行后也会将详细的内容会写入test库的checksums表中,可以查看这个库表得到详细的数据校验信息。
|
||
|
||
AWS每月的账单开出后,给使用方多长时间来进行支付?
|
||
AWS的付费机制是:只需要为已使用的资源付费,并且AWS会在次月3号左右给出本月的账单,付款时间为30天;
|
||
你这边的问题应该是没有创建资源的权限,应该是信用卡或个人认证信息没有补充完成,可以后台提工单申请提高资源限额。
|
||
|
||
阿里云,AWS相关的功能特性
|
||
AWS的优点:
|
||
AWS的云服务还是很成熟的,譬如大数据计算,开放存储这些服务的性能都要比阿里云好很多,在全世界各地使用访问都很快,成本上相对于阿里云来说确实花费多一点,AWS是国际化的,有七八种语言的客户服务,并且服务团队在工作日反应还算是很迅速的。
|
||
我先说说我感受最深的吧,为什么说AWS云服务很成熟,我觉得就可以从VM部署这一点看出来,速度比阿里云快很多(同样的条件下),微软的云服务和AWS和阿里云我都或多或少的使用过,如果不是因为AWS入门门槛太高我还会继续使用下去的,如果一个公司或者团队需要国际化,把服务全都放在AWS上是特别好的,在中国以内的话体验最好的其实就是阿里云了。
|
||
通用型:提供固定性能,对CPU性能不会产生突然并发的应用程序。如一般的web应用chengxu
|
||
计算优化:最高等级的性能,运行计算密集型应用程序。如游戏服务器
|
||
内存优化:可为高吞吐量的应用程序,如数据库,提供大容量内存。
|
||
存储优化:提供极高的磁盘I/O性能,适合对那些对磁盘访问频繁的应用程序。
|
||
CPU实例:高度并行化的应用程序(包括 3D 图形,HPC渲染和媒体处理应用程序)提供具备高CPU和网络性的图形处理能力。
|
||
阿里云的优点:
|
||
首先它易于国人使用,支付宝付款,可以开子账号团队协作,安全关把关也还算是可以的,其次就是BGP线路,确实名不虚传(但是国内区域在国外访问还是不咋的呀),阿里云确实贴合国人的角度突出了按需付费的这个特性,阿里云服务对于国外的亲们来说可能就是需要多地跑的事情集中在了一起而已,很多人也很喜欢,对于中国人来说,阿里云可能就是并不感冒了,技术上成熟度你别说还真的次于AWS(更多的可能是经验)
|
||
架构灵活
|
||
双机热备架构
|
||
系统工作时主节点(Master)和备节点(Slave)数据实时同步,主节点故障时系统自动进行秒级切换,备节点接管业务,全程自动且对业务无影响,主备架构保障系统服务具有高可用性。
|
||
集群架构
|
||
集群(Cluster)实例采用分布式架构,每个节点都采用一主一从的高可用架构,能够进行自动容灾切换和故障迁移。多种集群规格可适配不同的业务压力,可按需扩展数据库性能。
|
||
数据安全
|
||
数据持久化存储
|
||
采用内存加硬盘的混合存储方式,在提供高速数据读写能力的同时满足数据持久化需求。
|
||
备份及一键恢复
|
||
每天自动备份数据,数据容灾能力强,免费支持数据一键恢复,有效防范数据误操作,将可能发生的业务损失降到最低
|
||
多层网络安全防护
|
||
VPC私有网络在TCP层直接进行网络隔离保护。
|
||
DDOS防护实时监测并清除大流量攻击。
|
||
持1000个以上IP白名单配置,直接从访问源进行风险控制。
|
||
支持密码访问鉴权方式,确保访问安全可靠。
|
||
深度内核优化
|
||
阿里云专家团队对源码Redis进行深度内核优化,有效防止内存溢出,修复安全漏洞,为您保驾护航。
|
||
高可用性
|
||
主从双节点
|
||
标准版与集群版的双副本实例均有主从双节点,避免单点故障引起的服务中断。
|
||
自动检测与恢复
|
||
自动侦测硬件故障,发生故障时能够进行故障转移,在数秒内恢复服务。
|
||
资源隔离
|
||
实例级别的资源隔离可以更好地保障单个用户服务的稳定性。
|
||
弹性扩展
|
||
数据容量扩展
|
||
云数据库Redis版支持多种内存规格的产品配置,可根据业务量大小在线升级内存规格,无需中断服务,不影响业务。
|
||
业务形态扩展
|
||
支持单节点缓存架构和双节点存储架构,适配不同业务场景。标准版和双节点版之间能够灵活变配。
|
||
性能扩展
|
||
支持集群架构下弹性扩展数据库系统的存储空间及吞吐性能,突破海量数据高QPS性能瓶颈,轻松应对每秒百万次的读写需求。
|
||
智能运维
|
||
监控平台
|
||
提供CPU利用率、连接数、磁盘空间利用率等实例信息实时监控及报警,随时随地了解实例动态。
|
||
可视化管理平台
|
||
管理控制平台对实例克隆、备份、数据恢复等高频高危操作可便捷地进行一键式操作。
|
||
数据库内核版本管理
|
||
主动升级,快速修复缺陷,免去日常版本管理苦恼;优化Redis参数配置,最大化利用系统资源。
|
||
|
||
在线测速网站
|
||
360 腾讯 金山
|
||
|
||
nginx的优化选项?
|
||
1.nginx运行工作进程个数,一般设置cpu的核心或者核心数x2
|
||
如果不了解cpu的核数,可以top命令之后按1看出来,也可以查看/proc/cpuinfo文件 grep ^processor /proc/cpuinfo | wc -l
|
||
vi/usr/local/nginx1.10/conf/nginx.conf
|
||
worker_processes 4;
|
||
/usr/local/nginx1.10/sbin/nginx-s reload
|
||
ps -aux | grep nginx |grep -v grep
|
||
root 9834 0.0 0.0 47556 1948 ? Ss 22:36 0:00 nginx: master processnginx
|
||
www 10135 0.0 0.0 50088 2004 ? S 22:58 0:00 nginx: worker process
|
||
www 10136 0.0 0.0 50088 2004 ? S 22:58 0:00 nginx: worker process
|
||
www 10137 0.0 0.0 50088 2004 ? S 22:58 0:00 nginx: worker process
|
||
www 10138 0.0 0.0 50088 2004 ? S 22:58 0:00 nginx: worker process
|
||
|
||
Nginx运行CPU亲和力
|
||
比如4核配置 worker_processes 4; worker_cpu_affinity 0001 0010 0100 1000
|
||
比如8核配置 worker_processes 8; worker_cpu_affinity 00000001 00000010 00000100 0000100000010000 00100000 01000000 10000000;
|
||
worker_processes最多开启8个,8个以上性能提升不会再提升了,而且稳定性变得更低,所以8个进程够用了。
|
||
|
||
Nginx最多可以打开文件数 worker_rlimit_nofile 65535;
|
||
这个指令是指当一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(ulimit -n)与nginx进程数相除,但是nginx分配请求并不是那么均匀,所以最好与ulimit -n的值保持一致。
|
||
注:文件资源限制的配置可以在/etc/security/limits.conf设置,针对root/user等各个用户或者*代表所有用户来设置。
|
||
\* soft nofile 65535 * hard nofile 65535 用户重新登录生效(ulimit -n)
|
||
2.Nginx事件处理模型
|
||
events { use epoll; worker_connections 65535; multi_accept on; }
|
||
nginx采用epoll事件模型,处理效率高
|
||
work_connections是单个worker进程允许客户端最大连接数,这个数值一般根据服务器性能和内存来制定,实际最大值就是worker进程数乘以work_connections 实际我们填入一个65535,足够了,这些都算并发值,一个网站的并发达到这么大的数量,也算一个大站了!
|
||
multi_accept 告诉nginx收到一个新连接通知后接受尽可能多的连接,默认是on,设置为on后,多个worker按串行方式来处理连接,也就是一个连接只有一个worker被唤醒,其他的处于休眠状态,设置为off后,多个worker按并行方式来处理连接,也就是一个连接会唤醒所有的worker,直到连接分配完毕,没有取得连接的继续休眠。当你的服务器连接数不多时,开启这个参数会让负载有一定的降低,但是当服务器的吞吐量很大时,为了效率,可以关闭这个参数。
|
||
|
||
3.开启高效传输模式
|
||
|
||
http { include mime.types; default_type application/octet-stream; …… sendfile on; tcp_nopush on; ……
|
||
Include mime.types; //媒体类型,include 只是一个在当前文件中包含另一个文件内容的指
|
||
default_type application/octet-stream; //默认媒体类型足够
|
||
sendfile on;//开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件,对于普通应用设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的负载。
|
||
注意:如果图片显示不正常把这个改成off。 tcp_nopush on;必须在sendfile开启模式才有效,防止网路阻塞,积极的减少网络报文段的数量(将响应头和正文的开始部分一起发送,而不一个接一个的发送。)
|
||
|
||
4.连接超时时间
|
||
|
||
主要目的是保护服务器资源,CPU,内存,控制连接数,因为建立连接也是需要消耗资源的
|
||
keepalive_timeout 60;tcp_nodelay on;client_header_buffer_size 4k;open_file_cache max=102400 inactive=20s;open_file_cache_valid 30s;
|
||
open_file_cache_min_uses 1;client_header_timeout 15;client_body_timeout 15;reset_timedout_connection on;send_timeout 15;
|
||
server_tokens off;client_max_body_size 10m;keepalived_timeout客户端连接保持会话超时时间,超过这个时间,服务器断开这个链接
|
||
tcp_nodelay;也是防止网络阻塞,不过要包涵在keepalived参数才有效
|
||
client_header_buffer_size 4k;客户端请求头部的缓冲区大小,这个可以根据你的系统分页大小来设置,一般一个请求头的大小不会超过 1k,不过由于一般系统分页都要大于1k,所以这里设置为分页大小。分页大小可以用命令getconf PAGESIZE取得。
|
||
open_file_cache max=102400 inactive=20s;这个将为打开文件指定缓存,默认是没有启用的,max指定缓存数量,建议和打开文件数一致,inactive 是指经过多长时间文件没被请求后删除缓存。
|
||
open_file_cache_valid 30s;这个是指多长时间检查一次缓存的有效信息。
|
||
open_file_cache_min_uses 1;open_file_cache指令中的inactive 参数时间内文件的最少使用次数,如果超过这个数字,文件描述符一直是在缓存中打开的,如上例,如果有一个文件在inactive 时间内一次没被使用,它将被移除。
|
||
client_header_timeout设置请求头的超时时间。我们也可以把这个设置低些,如果超过这个时间没有发送任何数据,nginx将返回request time out的错误
|
||
client_body_timeout设置请求体的超时时间。我们也可以把这个设置低些,超过这个时间没有发送任何数据,和上面一样的错误提示
|
||
reset_timeout_connection 告诉nginx关闭不响应的客户端连接。这将会释放那个客户端所占有的内存空间。
|
||
send_timeout响应客户端超时时间,这个超时时间仅限于两个活动之间的时间,如果超过这个时间,客户端没有任何活动,nginx关闭连接
|
||
server_tokens 并不会让nginx执行的速度更快,但它可以关闭在错误页面中的nginx版本数字,这样对于安全性是有好处的。
|
||
client_max_body_size上传文件大小限制
|
||
|
||
5.fastcgi调优
|
||
fastcgi_connect_timeout 600;
|
||
fastcgi_send_timeout 600;
|
||
fastcgi_read_timeout 600;
|
||
fastcgi_buffer_size 64k;
|
||
fastcgi_buffers 4 64k;
|
||
fastcgi_busy_buffers_size 128k;
|
||
fastcgi_temp_file_write_size 128k;
|
||
fastcgi_temp_path/usr/local/nginx1.10/nginx_tmp; fastcgi_intercept_errors on;
|
||
fastcgi_cache_path/usr/local/nginx1.10/fastcgi_cache levels=1:2 keys_zone=cache_fastcgi:128minactive=1d max_size=10g;
|
||
fastcgi_connect_timeout 600; #指定连接到后端FastCGI的超时时间。fastcgi_send_timeout 600; #向FastCGI传送请求的超时时间。
|
||
fastcgi_read_timeout 600; #指定接收FastCGI应答的超时时间。
|
||
fastcgi_buffer_size 64k; #指定读取FastCGI应答第一部分需要用多大的缓冲区,默认的缓冲区大小为fastcgi_buffers指令中的每块大小,可以将这个值设置更小。
|
||
fastcgi_buffers 4 64k; #指定本地需要用多少和多大的缓冲区来缓冲FastCGI的应答请求,如果一个php脚本所产生的页面大小为256KB,那么会分配4个64KB的缓冲区来缓存,如果页面大小大于256KB,那么大于256KB的部分会缓存到fastcgi_temp_path指定的路径中,但是这并不是好方法,因为内存中的数据处理速度要快于磁盘。一般这个值应该为站点中php脚本所产生的页面大小的中间值,如果站点大部分脚本所产生的页面大小为256KB,那么可以把这个值设置为“8 32K”、“4 64k”等。
|
||
fastcgi_busy_buffers_size 128k; #建议设置为fastcgi_buffers的两倍,繁忙时候的buffer
|
||
fastcgi_temp_file_write_size 128k; #在写入fastcgi_temp_path时将用多大的数据块,默认值是fastcgi_buffers的两倍,该数值设置小时若负载上来时可能报502BadGateway
|
||
fastcgi_temp_path #缓存临时目录
|
||
fastcgi_intercept_errors on;#这个指令指定是否传递4xx和5xx错误信息到客户端,或者允许nginx使用error_page处理错误信息。
|
||
注:静态文件不存在会返回404页面,但是php页面则返回空白页!!
|
||
fastcgi_cache_path /usr/local/nginx1.10/fastcgi_cachelevels=1:2 keys_zone=cache_fastcgi:128minactive=1d max_size=10g;# fastcgi_cache缓存目录,可以设置目录层级,比如1:2会生成16*256个子目录,cache_fastcgi是这个缓存空间的名字,cache是用多少内存(这样热门的内容nginx直接放内存,提高访问速度),inactive表示默认失效时间,如果缓存数据在失效时间内没有被访问,将被删除,max_size表示最多用多少硬盘空间。
|
||
fastcgi_cache cache_fastcgi; #表示开启FastCGI缓存并为其指定一个名称。开启缓存非常有用,可以有效降低CPU的负载,并且防止502的错误放生。cache_fastcgi为proxy_cache_path指令创建的缓存区名称
|
||
fastcgi_cache_valid 200 302 1h; #用来指定应答代码的缓存时间,实例中的值表示将200和302应答缓存一小时,要和fastcgi_cache配合使用
|
||
fastcgi_cache_valid 301 1d; #将301应答缓存一天
|
||
fastcgi_cache_valid any 1m; #将其他应答缓存为1分钟
|
||
fastcgi_cache_min_uses 1; #该指令用于设置经过多少次请求的相同URL将被缓存。
|
||
fastcgi_cache_key http://$host$request_uri; #该指令用来设置web缓存的Key值,nginx根据Key值md5哈希存储.一般根据$host(域名)、$request_uri(请求的路径)等变量组合成proxy_cache_key 。
|
||
fastcgi_pass #指定FastCGI服务器监听端口与地址,可以是本机或者其它
|
||
总结:nginx的缓存功能有:proxy_cache / fastcgi_cache
|
||
proxy_cache的作用是缓存后端服务器的内容,可能是任何内容,包括静态的和动态。
|
||
fastcgi_cache的作用是缓存fastcgi生成的内容,很多情况是php生成的动态的内容。
|
||
proxy_cache缓存减少了nginx与后端通信的次数,节省了传输时间和后端宽带。
|
||
fastcgi_cache缓存减少了nginx与php的通信的次数,更减轻了php和数据库(mysql)的压力。
|
||
CGI是为了保证web server传递过来的数据是标准格式的,方便CGI程序的编写者。Fastcgi是用来提高CGI程序性能的。php-fpm是fastcgi进程的管理器,用来管理fastcgi进程的
|
||
6.gzip调优
|
||
使用gzip压缩功能,可能为我们节约带宽,加快传输速度,有更好的体验,也为我们节约成本,所以说这是一个重点。
|
||
Nginx启用压缩功能需要你来ngx_http_gzip_module模块,apache使用的是mod_deflate
|
||
一般我们需要压缩的内容有:文本,js,html,css,对于图片,视频,flash什么的不压缩,同时也要注意,我们使用gzip的功能是需要消耗CPU的!
|
||
gzip on;
|
||
gzip_min_length 2k;
|
||
gzip_buffers 4 32k;
|
||
gzip_http_version 1.1;
|
||
gzip_comp_level 6;
|
||
gzip_typestext/plain text/css text/javascriptapplication/json application/javascript application/x-javascriptapplication/xml;
|
||
gzip_vary on;
|
||
gzip_proxied any;
|
||
gzip on; #开启压缩功能
|
||
gzip_min_length 1k; #设置允许压缩的页面最小字节数,页面字节数从header头的Content-Length中获取,默认值是0,不管页面多大都进行压缩,建议设置成大于1K,如果小与1K可能会越压越大。
|
||
gzip_buffers 4 32k; #压缩缓冲区大小,表示申请4个单位为32K的内存作为压缩结果流缓存,默认值是申请与原始数据大小相同的内存空间来存储gzip压缩结果。
|
||
gzip_http_version 1.1; #压缩版本,用于设置识别HTTP协议版本,默认是1.1,目前大部分浏览器已经支持GZIP解压,使用默认即可
|
||
gzip_comp_level 6; #压缩比例,用来指定GZIP压缩比,1压缩比最小,处理速度最快,9压缩比最大,传输速度快,但是处理慢,也比较消耗CPU资源。
|
||
gzip_types text/css text/xml application/javascript; #用来指定压缩的类型,‘text/html’类型总是会被压缩。
|
||
默认值: gzip_types text/html (默认不对js/css文件进行压缩)
|
||
压缩类型,匹配MIME型进行压缩 # 不能用通配符 text/* # (无论是否指定)text/html默认已经压缩 # 设置哪压缩种文本文件可参考 conf/mime.types
|
||
gzip_vary on; #varyheader支持,改选项可以让前端的缓存服务器缓存经过GZIP压缩的页面,例如用Squid缓存经过nginx压缩的数据
|
||
7.expires缓存调优
|
||
缓存,主要针对于图片,css,js等元素更改机会比较少的情况下使用,特别是图片,占用带宽大,我们完全可以设置图片在浏览器本地缓存365d,css,js,html可以缓存个10来天,这样用户第一次打开加载慢一点,第二次,就非常快了!缓存的时候,我们需要将需要缓存的拓展名列出来, Expires缓存配置在server字段里面
|
||
location ~* \.(ico|jpe?g|gif|png|bmp|swf|flv)$ {
|
||
expires 30d;
|
||
#log_not_found off;
|
||
access_log off;
|
||
}
|
||
location ~* \.(js|css)$ {
|
||
expires 7d;
|
||
log_not_found off;
|
||
access_log off;
|
||
}
|
||
注:log_not_found off;是否在error_log中记录不存在的错误。默认是。
|
||
总结:expire功能优点 (1)expires可以降低网站购买的带宽,节约成本(2)同时提升用户访问体验(3)减轻服务的压力,节约服务器成本,是web服务非常重要的功能。 expire功能缺点:被缓存的页面或数据更新了,用户看到的可能还是旧的内容,反而影响用户体验。解决办法:第一个缩短缓存时间,例如:1天,但不彻底,除非更新频率大于1天;第二个对缓存的对象改名。
|
||
网站不希望被缓存的内容
|
||
1.网站流量统计工具
|
||
2.更新频繁的文件(google的logo)
|
||
8.防盗链
|
||
防止别人直接从你网站引用图片等链接,消耗了你的资源和网络流量,那么我们的解决办法由几种: 1:水印,品牌宣传,你的带宽,服务器足够
|
||
2:防火墙,直接控制,前提是你知道IP来源
|
||
3:防盗链策略下面的方法是直接给予404的错误提示
|
||
location ~*^.+\.(jpg|gif|png|swf|flv|wma|wmv|asf|mp3|mmf|zip|rar)$ {
|
||
valid_referers noneblocked www.benet.com benet.com;
|
||
if($invalid_referer) {
|
||
#return 302 http://www.benet.com/img/nolink.jpg;
|
||
return 404;
|
||
break;
|
||
}
|
||
access_log off;
|
||
}
|
||
参数可以使如下形式:none 意思是不存在的Referer头(表示空的,也就是直接访问,比如直接在浏览器打开一个图片)
|
||
blocked 意为根据防火墙伪装Referer头,如:“Referer:XXXXXXX”。
|
||
server_names 为一个或多个服务器的列表,0.5.33版本以后可以在名称中使用“*”通配符。
|
||
9.内核参数优化
|
||
fs.file-max = 999999:这个参数表示进程(比如一个worker进程)可以同时打开的最大句柄数,这个参数直线限制最大并发连接数,需根据实际情况配置。
|
||
net.ipv4.tcp_max_tw_buckets = 6000 #这个参数表示操作系统允许TIME_WAIT套接字数量的最大值,如果超过这个数字,TIME_WAIT套接字将立刻被清除并打印警告信息。该参数默认为180000,过多的TIME_WAIT套接字会使Web服务器变慢。
|
||
注:主动关闭连接的服务端会产生TIME_WAIT状态的连接
|
||
net.ipv4.ip_local_port_range = 1024 65000 #允许系统打开的端口范围。
|
||
net.ipv4.tcp_tw_recycle = 1#启用timewait快速回收。
|
||
net.ipv4.tcp_tw_reuse = 1#开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接。这对于服务器来说很有意义,因为服务器上总会有大量TIME-WAIT状态的连接。
|
||
net.ipv4.tcp_keepalive_time = 30:这个参数表示当keepalive启用时,TCP发送keepalive消息的频度。默认是2小时,若将其设置的小一些,可以更快地清理无效的连接。
|
||
net.ipv4.tcp_syncookies = 1#开启SYN Cookies,当出现SYN等待队列溢出时,启用cookies来处理。
|
||
net.core.somaxconn = 40960 #web 应用中 listen 函数的 backlog 默认会给我们内核参数的 net.core.somaxconn 限制到128,而nginx定义的NGX_LISTEN_BACKLOG 默认为511,所以有必要调整这个值。
|
||
注:对于一个TCP连接,Server与Client需要通过三次握手来建立网络连接.当三次握手成功后,我们可以看到端口的状态由LISTEN转变为ESTABLISHED,接着这条链路上就可以开始传送数据了.每一个处于监听(Listen)状态的端口,都有自己的监听队列.监听队列的长度与如somaxconn参数和使用该端口的程序中listen()函数有关
|
||
somaxconn参数:定义了系统中每一个端口最大的监听队列的长度,这是个全局的参数,默认值为128,对于一个经常处理新连接的高负载 web服务环境来说,默认的 128 太小了。大多数环境这个值建议增加到 1024 或者更多。大的侦听队列对防止拒绝服务 DoS 攻击也会有所帮助。
|
||
net.core.netdev_max_backlog = 262144 #每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目。
|
||
net.ipv4.tcp_max_syn_backlog = 262144 #这个参数标示TCP三次握手建立阶段接受SYN请求队列的最大长度,默认为1024,将其设置得大一些可以使出现Nginx繁忙来不及accept新连接的情况时,Linux不至于丢失客户端发起的连接请求。
|
||
net.ipv4.tcp_rmem = 10240 87380 12582912#这个参数定义了TCP接受缓存(用于TCP接受滑动窗口)的最小值、默认值、最大值。
|
||
net.ipv4.tcp_wmem = 10240 87380 12582912:这个参数定义了TCP发送缓存(用于TCP发送滑动窗口)的最小值、默认值、最大值。
|
||
net.core.rmem_default = 6291456:这个参数表示内核套接字接受缓存区默认的大小。
|
||
net.core.wmem_default = 6291456:这个参数表示内核套接字发送缓存区默认的大小。
|
||
net.core.rmem_max = 12582912:这个参数表示内核套接字接受缓存区的最大大小。
|
||
net.core.wmem_max = 12582912:这个参数表示内核套接字发送缓存区的最大大小。
|
||
net.ipv4.tcp_syncookies = 1:该参数与性能无关,用于解决TCP的SYN攻击。
|
||
下面贴一个完整的内核优化设置:
|
||
fs.file-max = 999999
|
||
net.ipv4.ip_forward = 0
|
||
net.ipv4.conf.default.rp_filter = 1
|
||
net.ipv4.conf.default.accept_source_route = 0
|
||
kernel.sysrq = 0
|
||
kernel.core_uses_pid = 1
|
||
net.ipv4.tcp_syncookies = 1
|
||
kernel.msgmnb = 65536
|
||
kernel.msgmax = 65536
|
||
kernel.shmmax = 68719476736 kernel.shmall = 4294967296 net.ipv4.tcp_max_tw_buckets = 6000
|
||
net.ipv4.tcp_sack = 1 net.ipv4.tcp_window_scaling = 1 net.ipv4.tcp_rmem = 10240 87380 12582912
|
||
net.ipv4.tcp_wmem = 10240 87380 12582912 net.core.wmem_default = 8388608 net.core.rmem_default = 8388608
|
||
net.core.rmem_max = 16777216 net.core.wmem_max = 16777216 net.core.netdev_max_backlog = 262144
|
||
net.core.somaxconn = 40960 net.ipv4.tcp_max_orphans = 3276800 net.ipv4.tcp_max_syn_backlog = 262144
|
||
net.ipv4.tcp_timestamps = 0 net.ipv4.tcp_synack_retries = 1 net.ipv4.tcp_syn_retries = 1 net.ipv4.tcp_tw_recycle = 1
|
||
net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_mem = 94500000 915000000 927000000
|
||
net.ipv4.tcp_fin_timeout = 1 net.ipv4.tcp_keepalive_time = 30 net.ipv4.ip_local_port_range = 1024 65000
|
||
执行sysctl -p使内核修改生效
|
||
10.关于系统连接数的优化:
|
||
linux 默认值 open files为1024
|
||
ulimit -n
|
||
1024
|
||
说明server只允许同时打开1024个文件
|
||
使用ulimit -a 可以查看当前系统的所有限制值,使用ulimit -n 可以查看当前的最大打开文件数。
|
||
新装的linux 默认只有1024 ,当作负载较大的服务器时,很容易遇到error: too many open files。因此,需要将其改大
|
||
在/etc/security/limits.conf最后增加:
|
||
\* soft nofile 65535
|
||
\* hard nofile 65535
|
||
\* soft noproc 65535
|
||
\* hard noproc 65535
|
||
|
||
zabbix都监控什么,有自己添加的监控项吗?监控哪些应用程序和服务,怎么监控nginx的>日志,怎么监控Tomcat,具体是Tomcat调优的问题,还是后端Java报错socket的问题。监控中具体用到哪些模块,当监控服务出现一些问题怎么处理,比如MySQL的复制状态或者是gps过高,nginx报错的一些日志
|
||
1.
|
||
vm.memory.size[available] 系统中已用内存量vm.memory.size[total] 系统总共内存量
|
||
swap空间{system.swap.size[,free] system.swap.size[,pfree] system.swap.size[,total] }
|
||
CPU { system.cpu.switches 系统文件切换 (bps)
|
||
(system.cpu.util[,user] system.cpu.util[,nice] system.cpu.util[,system] system.cpu.util[,iowait] system.cpu.util[,idle] system.cpu.util[,interrupt] system.cpu.util[,steal] system.cpu.util[,softirq]
|
||
)类似于对应系统中top命令查看CPU显示值
|
||
system.cpu.load[percpu,avg1] 系统CPU总负载/在线cpu个数平均1min的利用百分比
|
||
system.cpu.load[percpu,avg5] 系统CPU总负载/在线cpu个数平均5min的利用百分比
|
||
system.cpu.load[percpu,avg15] 系统CPU总负载/在线cpu个数平均15min的利用百分比
|
||
vfs.fs.size[{#FSNAME},free] 可用磁盘空间大小vfs.fs.size[{#FSNAME},pfree] 可用磁盘空间大小占分区总磁盘空间的百分比
|
||
vfs.fs.size[{#FSNAME},total] 分区总磁盘空间大小vfs.fs.size[{#FSNAME},used] 已使用磁盘空间大小
|
||
vfs.fs.inode[{#FSNAME},pfree] 可用磁盘节点数占总节点数的百分比net.if.in[{#IFNAME}] 网络进接口流量 (bps)
|
||
net.if.out[{#IFNAME}] 网络出接口流量 (bps)proc.num[] 系统中总进程数量,通过top查看
|
||
proc.num[,,run] 系统中处于running的进程,通过top查看
|
||
system.localtime 系统时间 vfs.file.cksum[/etc/passwd] 系统文件passwd的文件总数
|
||
system.boottime 系统启动的时间戳 system.hostname 系统名称 system.cpu.intr 设备中断
|
||
kernel.maxfiles 系统支持打开文件的最大数量 kernel.maxproc 系统支持打开进程的最大数量
|
||
system.users.num 登陆系统的用户数 agent.ping 检查客户端可用性 agent.version 检查客户端使用版本
|
||
system.uname 系统详细信息 system.uptime 系统开启持续时间 agent.hostname 客户端主机名
|
||
net.tcp.listen[port] 监控程序端口启用 }
|
||
2.
|
||
1.Zabbix Server和Zabbix Agent会追踪日志文件的大小和最后修改时间,并且分别记录在字节计数器和最新的时间计数器中。
|
||
2.Agent会从上次读取日志的地方开始读取日志。
|
||
3.字节计数器和最新时间计数器的数据会被记录在Zabbix数据库,并且发送给Agent,这样能够保证Agent从上次停止的地方开始读取日志。
|
||
4.当日志文件大小小于字节计数器中的数字时,字节计数器会变为0,从头开始读取文件。
|
||
5.所有符合配置的文件,都会被监控。
|
||
6.一个目录下的多个文件如果修改时间相同,会按照字母顺序来读取。
|
||
7.到每个Update interval的时间时,Agent会检查一次目录下的文件。
|
||
8.Zabbix Agent每秒发送日志量,有一个日志行数上限,防止网络和CPU负载过高,这个数字在zabbix_agentd.conf中的MaxLinePerSecond。
|
||
9.在logtr中,正则表达式只对文件名有效,对文件目录无效。
|
||
Hostname设定为Server创建主机是填写的Host name,必须一致
|
||
ServerActive设定为Server的IP
|
||
type必须选择zabbix agent(active),因为数据是zabbix被监控的主动提交给server
|
||
key:log[/var/log/message,error],我们这里是监控的系统日志,打印出带有error的行,大家也可以去监控其他的日志,mysql、nginx等等都是可以的。
|
||
log time format:MMpddphh:mm:ss,对应日志的行头Sep 14 07:32:38,y表示年、M表示月、d表示日、p和:一个占位符,h表示小时,m表示分钟,s表示秒。
|
||
|
||
以下函数中,和其他函数不属于一类的是 EF
|
||
A.read
|
||
B.pread
|
||
C.write
|
||
D.pwrite
|
||
E.fseek
|
||
F.lseek
|
||
|
||
针对Linux6、7系统简述常用运维或自动运维巡检的shell、python脚本。
|
||
|
||
批量修改文件或目录权限最好的办法是什么?
|
||
目录的话可以使用chmod -R
|
||
文件的话可以使用find和chmod 例:find /tmp/ -name "*.txt" -a -type f | xargs chmod 655
|
||
|
||
编写一个并发执行查询的shell执行文件exec_sql.sh,有以下要求:第一、实现脚本输入两个参数,第一个参数为存储sql语
|
||
句的文件(可能存储1000条查询,语句之间用分号隔开),第二个参数为最大并发度,
|
||
例如:./exec_sql.sh./sql1000.sql8 第二、要求所有语句执行完脚本才可以退出 第三、记录开始时间、结束时间、每条语句的执行结果重定向到一个文件 第四、使用sqlplus命令行工具执行所需查询语句
|
||
|
||
|
||
|
||
|
||
|
||
|
||
.上一家公司主要是做什么业务,用什么服务器
|
||
|
||
.公司的架构
|
||
|
||
.访问量uv,pv分别是多少
|
||
|
||
.zabbix监控什么
|
||
|
||
.问了一下上家公司的业务,服务器数量
|
||
|
||
.redis的主从,哨兵,每天的数据量
|
||
|
||
.你们公司用redis来干嘛
|
||
|
||
.搭过zabbix什么,zabbix怎么用,怎么实现报警
|
||
|
||
.keepalived原理,keepalived切换时随机的吗,三台nginx可以做keepalived
|
||
|
||
.写过shell吗,shell用来干嘛
|
||
|
||
.公司的业务
|
||
|
||
.你主要的工作
|
||
|
||
.服务器一键装机pxe,raid,虚拟化技术kvm
|
||
.zabbix高可用,zabbix报警媒介,zabbix监控项,jenkins怎么实现上线,elk怎么收集日志,收集什么日志,为什么收集日志。
|
||
|
||
.负载均衡的项目
|
||
|
||
.服务器如何优化
|
||
|
||
.nginx怎么做负载均衡的,高可用
|
||
|
||
.nginx400,404等状态码报错怎么解决
|
||
|
||
.elk你们怎么备份的?
|
||
|
||
.ha和lvs的区别
|
||
|
||
.Jenkins+CICD搭建过程
|
||
|
||
.KVM一下简单命令
|
||
|
||
传2个参数,一个是文件名,一个文件大小,要求传入这两个参数后,删除对应的文件
|
||
|
||
.nginx 什么版本?服务器,配置,进行了什么调优,达到了什么样子的并发,是物理机吗用了虚拟化吗?
|
||
|
||
.epoll模型了解吗?
|
||
|
||
.nginx高可用怎么做的?
|
||
|
||
.LVS负载均衡做过吗?怎么做的
|
||
|
||
.web服务器有什么?
|
||
|
||
.Tomcat优化?
|
||
|
||
.Tomcat的AIO/BIO/NIO???
|
||
|
||
.Tomcat的资源池?
|
||
|
||
.sql-server了解吗?
|
||
|
||
.MySql的版本?
|
||
5.7
|
||
|
||
.数据库授权问题???
|
||
|
||
.mysql的高可用?怎么搞?mysql的高可用都有哪些??PXC,
|
||
|
||
.mysql主从同步的时候出过什么错误吗? 1236错误?12一些错误??
|
||
|
||
.双主互为复制?
|
||
.Redis版本?集群?哨兵?碰见过什么问题?持久化?
|
||
.ELK搭建过吗?遇到过什么问题?版本?Logstash的模版?正则?
|
||
.JAVA了解过吗?
|
||
.给你一台服务器从安全来说进行的操作?安全加固
|
||
.在工作中犯过什么错误?lsof
|
||
.Python的框架?登陆认证?
|
||
.职业规划?
|
||
.了解过翻墙?
|
||
.网络懂吗?iptables?iprote?iprule?
|
||
.Python开发什么软件?
|
||
.需求:一个网站,需要模拟人为访问,获取一些数值?能否完成?
|
||
.如何看待繁琐的事情?能否开发脚本?软件?去替代繁琐的事情?遇到一个难解决的问题是否会死磕?ERP
|
||
.DDOS?了解吗?怎么解决?
|
||
30.ES集群?
|
||
|
||
你的简历项目中主要拿nginx做什么
|
||
|
||
Tomcat有出现过什么错误么
|
||
|
||
TCP/IP了解么?
|
||
|
||
是否打算长期发展?
|
||
|
||
你对你职业生涯有什么规划吗
|
||
|
||
你觉得你有哪些劣势
|
||
哪种协议传输 公式的架构,用过哪些中间件
|
||
假如有3个location,他们之间处理顺序怎
|
||
样,假如我现在有一个location里面有个/test 目录,它只能公司内部访问,但是不能公网访问,你知道用
|
||
哪个模块 ELk收集的量有多大它是怎么传数据的 tcp三次握手,DNS解析过程
|
||
|
||
6.假如后端有个一主一从的数据库,主数据宕掉了,你如何解决
|
||
|
||
7.请说一下单机多实例部署5台tomcat,你该怎么弄
|
||
|
||
8.我公司用的是ERP管理系统,请问你有做过这方面的相关运维嘛,具体的业务是怎么样的
|
||
|
||
9.如果服务器出现卡机,如有5台tomcat,有些tomcat会跑着跑着自动重启了,你该如何解决
|
||
|
||
域的概念
|
||
域是一个有安全边界的计算机集合,在同一个域中的计算机, 计算机域彼此之间已经建立了信任关系,在域内访问其他机器,不再需要被访问机器的许可。在加入域的时候,管理员为每个计算机在域中(可和用户不在同一域中)建立了一个计算机帐户。计算机帐户的密码在域中称为登录票据,它是由WIN2000的DC(域控制器)上的KDC服务来颁发和维护的
|
||
域是由网络上的用户和计算机组成的一个逻辑组或逻辑集合。域中所有的对象都存储在活动目录下。一个网络可以建立一个或多个域,每个域都是一个安全界限,这意味着各种权限的设置不能跨越不同的域。简单的说,一个域就是一系列的用户账号,访问权限和其他各种资源的集合。
|
||
来说说上线吧,上线流程怎么样。你Jenkins会部署吗,具体流程能说下嘛,怎么安装,构建脚本那脚本怎么写。
|
||
|
||
要回滚的话怎么回滚,怎么搭建?
|
||
|
||
网络这块熟悉么?
|
||
|
||
如果访问www.a.com出现404,503,500,pending你怎么处理。
|
||
|
||
如果我要访问www.a1.com——>server1 www.a2.com——>server2 www.a3.com——>server3这个你使用nginx怎么配,写出来
|
||
|
||
说说监控吧
|
||
|
||
zabbix监控什么。
|
||
|
||
zabbix监控mysql主从状态脚本怎么写?
|
||
|
||
1. 上两家公司部门人员组成?有什么部门,多少人?
|
||
2. 到他们公司多久?有没有打算搬到这边?
|
||
3. 平时主要负责做什么?会不会服务器的维修?
|
||
4. 打算哪方面走?比如说规划?英语的读写说怎么样
|
||
5. 能不能接受晚上处理问题?为什么做运维?
|
||
|
||
1. keepalived原理 局域网了解吗?vpn
|
||
2. nginx、Apache用过吗
|
||
3. 如果数据库除了本身原因(CPU飙升之类的)是主库一下停止服务,从库抢过怎么处理
|
||
|
||
搭建mysql时候的具体部署过程搭建ELK前有什么考量
|
||
|
||
|
||
.做zabbix 的时候有没有遇到什么问题?我说就自定义key值的时候有点难切,其他都还好,那个女的说,你有没有遇到这样一种情况,就是很多的zabbix_agent 会启不来。我说没有,当然也问了她为什么?她说,在他们公司,权限管理很严,有很多的zabbix_agent 权限没给足(大概就是这样子 回头百度一下).....zabbixserver跟agent采用什么协议(snmp).....大学专业课(把我大学学的说了,漏了计算机网络,但我学过,仅仅学过...jenkins 的安全/权限...nginx 只是用来做反向代理吗?
|
||
|
||
keepalived怎么模拟单点故障,进行测试?
|
||
|
||
nginx+tomcat集群?
|
||
|
||
怎么用的jenkins?
|
||
|
||
说完之后他说他们开发都是通过shell脚本
|
||
|
||
有搭建过哪些集群?
|
||
1.shell脚本都用来干什么
|
||
2.你们公司的架构
|
||
3.公司的代码上线流程(jenkins他好像也不太了解)
|
||
4.ELK用来干什么(感觉他不知道这个用来干什么的)
|
||
5.常用的反向代理有什么,会不会LVS
|
||
6.zabbix都用来监控什么
|
||
7.KVM是什么(感觉他不懂)
|
||
|
||
nginx的映射(反向代理),Mycat的部署安装,JDK的安装和Tomcat的安装,Jenkins的安装和Git的安装
|
||
|
||
4.问了我公司有做存储保护吗。raid1坏了一块要怎么恢复
|
||
答案:在热插拔上插入一块磁盘,分好区,raid会自动同步
|
||
|
||
5.zabbox页面出现问题,需要删除数据库里的数据,删除的是那个库里的数据
|
||
|
||
6.问了我公司PE有多少,就是日活,我说了几万,不知道PE是什么。
|
||
|
||
7.redis持久化在内存里的数据要怎么马上把数据写入磁盘里面
|
||
save 会影响redis,在写入磁盘中时会进行数据锁定,不能进行数据操作, bgsave:开启一个字进程,不影响redis
|
||
|
||
8.灰度发布过程中出现问题,数据库中有脏数据怎么解决
|
||
灰度发布大部分用户都是公司中的人,少部分是外面的用户,如果出现错误,叫DBA进行数据库回滚就可以的,在灰度发布的数据中都有标记
|
||
,外面的用户只能叫DBA进行修改
|
||
|
||
nginx的高可用是怎样的?
|
||
:那MySQL的高可用呢?
|
||
:ELK的图形化界面用什么?
|
||
:数据库故障如何排错?
|
||
:数据迁移有做过嘛?
|
||
:zabbix最常见的报警都有哪些?
|
||
:有多少台物理服务器
|
||
:一台主机服务器有多少监控项?
|
||
:zabbix数据库监控几个监控项?
|
||
:keepalived是什么?与haproxy有什么区别?
|
||
:lnmp架构怎么搭建的?
|
||
|
||
|
||
日志收集量比较多的时候,是怎么分析处理的
|
||
如果内存泄漏和内存溢出,怎么定位处理,有没有用过一些第三方的工具
|
||
你们用的elk是收集什么日志
|
||
redis做了集群吗?搭建过程是怎么样的
|
||
主从延迟,怎么处理
|
||
高可用中出现脑裂是怎么处理
|
||
mysql常用吗
|
||
Jenkins+gitlab这个你们有用到生产环境上面去吗
|
||
|
||
1.LVS拿来做什么,怎么映射的
|
||
2.nginx是什么,怎么用
|
||
3.反向代理怎么实现的
|
||
4.如果你输入url是怎么访问到后端的,而我说的后端具体指的是什么?
|
||
5.在不使用zabbix这一块的时候,你怎么监控
|
||
6.监控的时候都监控什么,问的很细
|
||
|
||
|
||
2.在Linux系统中,设备都是通过特殊的 文件方式 来访问的。
|
||
|
||
7.下面的代码是打印机启动脚本,必须以root身份运行。
|
||
#!/bin/bash
|
||
if [ $LOGNAME != root ] #如果当前用户不是root
|
||
then
|
||
echo "Must have root privileges to run this program"
|
||
exit 1
|
||
fi
|
||
|
||
cat << EOF #用Here文档输出提示信息
|
||
Warning: All jobs in the printer queue will be removed.
|
||
Please turn off the printer now. Press Enter when you
|
||
are ready to continue. Otherwise press Ctrl-C.
|
||
EOF #Here文档结束
|
||
|
||
read ans #读入用户输入
|
||
case "$ans" in
|
||
Y/y ) #判断用户输入的是否为Y或y
|
||
/etc/init.d/lp start ;;
|
||
N/n ) #判断用户输入的是否为N或n
|
||
/etc/init.d/lp stop ;;
|
||
* ) #其它值
|
||
echo Wrong answer ;;
|
||
esac
|
||
|
||
|
||
9.在/var/log下拷贝小于100K的文件到/tmp下,如果有失败的发送邮件到yunwei@rednovo.cn,用shell/perl/python来实现。
|
||
#!/bin/bash
|
||
SDIR=/var/log/
|
||
DDIR=/tmp/
|
||
TMPFILE=/tmp/test.txt
|
||
find $SDIR -size -100k -type f > $TMPFILE
|
||
while read F_NAME
|
||
do
|
||
cp -r $F_NAME $DDIR
|
||
if [ $? -eq 0 ]
|
||
then
|
||
echo "ok" > /dev/null 2>&1
|
||
else
|
||
echo "cp is failed " | mail -s "Note:cp is failed ! "yunwei@rednovo.cn
|
||
fi
|
||
done < $TMPFILE
|
||
|
||
.根据下面的信息提取每个人的总分 输出到/home/total.txt
|
||
oldboy 15 98
|
||
kqzj 23 87
|
||
wodi 16 89
|
||
awk '{print $1,$2$3}' >/home/toital.txt
|
||
|
||
.查找包含字符串'center'进程,获取他的PID。
|
||
ps aux | grep center
|
||
|
||
.从上家公司离职原因
|
||
|
||
.可以在工作中用上Python吗
|
||
|
||
.给你50台服务器,每台都有公网和私网的ip,给他们做一个安全策略
|
||
|
||
.你工作这几年的角色演变
|
||
|
||
.会做raid磁盘阵列吗
|
||
|
||
.ELK的搭建维护,如何收集系统数据(Metricbeat)
|
||
|
||
.未来会使用的监控系统是普罗米修斯
|
||
|
||
.公司已研究为主,研究方向为开源项目,有很多的学习时间,进去后你会是公司的第一个运维
|
||
|
||
.分布式
|
||
|
||
.select和epool模型的区别?
|
||
|
||
.对以后的职业你有什么规划吗?
|
||
|
||
.负载均衡高可用集群部署的过程?
|
||
|
||
.数据库的架构
|
||
|
||
.负载均衡高可用集群排错思路
|
||
|
||
.虚拟化技术用的是什么
|
||
|
||
Jenkins怎么实现上线?
|
||
gitlab怎么备份的
|
||
什么是配置管理?配置管理目的是什么?
|
||
简述一个系统的发布流程。
|
||
简述软件完整的生命周期,及工作过程中产品从立项到上线的流程。
|
||
不考虑环境因素,简述引起编译过程报错的原因。
|
||
简述集中式版本管理和分布式版本管理的优缺点。
|
||
说一下你了解的配置管理,版本控制,持续集成等工具?
|
||
jenkins都用过哪些插件,简单介绍一下?jenkins如何备份?
|
||
用命令将test.sh文件发送到OS为Centos的minion 的/usr/local目录下
|
||
Jenkins你是怎样使用的,如何发布代码和回滚代码?有结合使用其他软件比如gitlab没有?
|
||
Jenkins什么版本 有没有用到pipeline
|
||
Jenkins 三种构建方式
|
||
|
||
用的什么系统版本,
|
||
应用服务有哪些,
|
||
用的是那个jdk的版本,
|
||
怎么配置jdk,
|
||
tomcat日志在哪里,
|
||
如果想要更改tomcat的默认日志路径要在哪里改,
|
||
elk的部署情况,
|
||
如果没有kibana,ES要怎么查询日志,
|
||
mysql的部署情况,
|
||
左连接和右连接的区别,
|
||
备份策略,
|
||
写过什么shell脚本,
|
||
会python吗,写过什么脚本。
|
||
|
||
1.mysql怎么做异地灾备
|
||
2.mysql怎么暴露端口
|
||
3.mysql怎么去做数据迁移
|
||
4.外网ip和内网ip怎么隔离的
|
||
|
||
上海华腾软件系统有限公司面试总结
|
||
1.shell数组怎么去定义,写一个数组遍历的shell脚本。
|
||
用grep怎么去过滤空行和开头为#的行
|
||
4.keepavlied是基于什么协议
|
||
5.写过什么shell脚本
|
||
6.系统初始化脚本里面具体写的什么
|
||
7.写过最长的脚本多少行,是什么脚本
|
||
8.kvm怎么去创建虚拟机
|
||
9.kvm怎么去添加一块100G的硬盘
|
||
10.你的公司zabbix一般监控什么
|
||
|
||
17.nginx负载均衡需要配置什么模块
|
||
18.交换机怎么建一个vlan,路由器怎么查看静态路由
|
||
|
||
tcp和http区别,我说了tcp的三次握手四次断开
|
||
|
||
你在公司是干什么的?公司有多少人?运维多少?开发多少?
|
||
你搭建过哪些服务?公司的的整个架构?
|
||
你用过哪些中间件?
|
||
你们公司用了php为啥还要用tomcat?
|
||
如何实现公司服务的上线?
|
||
你们公司有多少服务器?
|
||
部署过哪些项目?自己部署过所有的整个项目么?
|
||
你们公司用的什么数据库?数据库是怎么备份的?用的什么工具实现的呢?
|
||
|
||
数据库从库不读数据是由哪些原因,数据库宕机有什么策略,怎么解决。
|
||
又问shell平时都写过哪些脚本(我晚已经做好功课,进阶面试题都写了),然后问zabbix监控是怎么监控的,ELK怎么收集数据,怎么清理数据。
|
||
|
||
如果cpu使用率达到了100%服务宕机了,怎么办
|
||
|
||
jenkins的版本
|
||
|
||
写的安装软件的脚本
|
||
|
||
zabbix的版本 监控了啥 具体是啥 自定义的监控项有哪些 监控mysql的话,是怎么对数据库认证的(登录)(使用变量)
|
||
|
||
公司日志量多少
|
||
|
||
服务器多少台
|
||
|
||
用过啥数据库中间件(蒙了不知道是啥)说了个mycat 他说那是连接件 然后中间件就是keepalived haproxy 等等
|
||
|
||
用的什么公有云
|
||
|
||
生产中遇到了什么问题
|
||
|
||
之前公司用虚拟化技术了吗 (我看得出来他也不会啥虚拟化技术)
|
||
|
||
jenkins 怎么实现的
|
||
|
||
物理机怎么装cent OS
|
||
磁盘阵列怎么做
|
||
新系统安装完成后会做什么(优化)
|
||
Tomcat怎么部署war包
|
||
磁盘扩容怎么做
|
||
数据库怎么备份
|
||
zabbix监控项怎么做
|
||
生产中遇到的问题
|
||
还问了Maven插件的使用
|
||
|
||
文件误删除该怎么做?
|
||
系统初始化参数用过哪些
|
||
有黑客入侵你的机器,你该怎么做?
|
||
|
||
就问了一个jenkins上线,
|
||
服务器多少,配置多高,
|
||
|
||
如何将.log结尾的且大小小于1M的文件删除?你知道几种方式?管道知道吗?xargs?
|
||
|
||
内核调参?
|
||
nginx怎么做负载均衡?
|
||
redis了解吗?redis有哪些数据结构?关系型数据库和非关系型数据库的区别?
|
||
看一个端口属于哪个服务?有哪几种方法?netstat的参数?
|
||
统计进程个数?
|
||
shell里如何调用函数?
|
||
会python吗?会go吗?
|
||
zabbix监控什么?有没有做过二次开发?自动发现做过吗?写过哪些自定的脚本?
|
||
对jenkins的理解?构建的项目是选择什么风格的?流水线用过吗?
|
||
nginx如何实现上传上传下载功能?
|
||
|
||
1、公司的架构
|
||
2、zabbix监控了啥服务
|
||
4、给你服务器需要做些什么,进行什么优化
|
||
5、你给公司提供过什么建设性建议,有什么项目自己主导,规划能力
|
||
6、ci_cd的过程,是用一台服务器批量给后端服务器上传war包吗?
|
||
8、mysql的备份策略,使用什么工具备份,以及逻辑备份与物理备份的区别
|
||
|
||
2:磁盘闪黄灯是怎么了,怎么解决
|
||
3:用过zabbix吗,都自定义检测过什么
|
||
4:ci的上线流程
|
||
6:MySQL数据库的一些命令,怎么查看主从状态,怎么知道主从延迟的时间,join是什么,order是什么
|
||
7:物理服务器用过吗,用过虚拟化软件吗?
|
||
8:nginx代理
|
||
9:说说elk的组件和用了多少台服务器
|
||
10:你还有什么技术问题要问的吗
|
||
11:你最看重公司什么
|
||
12:怎么看java错误日志
|
||
13:搭建过交换机吗
|
||
14:awk用过吗
|
||
|
||
|
||
1:tomcat的一些问题,sssl证书的配置,其他中间件了解吗?
|
||
3:jdk了解吗
|
||
4:数据库除了mysql还了解哪些
|
||
5:elk的架构,es集群怎么安装
|
||
6:mysql主从,主和从有哪些区别
|
||
7:ansbile做过什么
|
||
8:你们平台是怎么搭建的
|
||
|
||
上家公司服务器数量,架构
|
||
linux系统关机了怎么排查,
|
||
linux基础命令一定要熟悉
|
||
怎么查看一个数据的前一百行和后一百行
|
||
zabbix部署过程
|
||
经常写脚本吗,写过哪些脚本
|
||
给你100台服务器怎么规划
|
||
管理过一百台左右的服务器吗他们公司有几百台 物理偏多,还有阿里,华为,亚马逊的,
|
||
zabbix写过什么脚本,
|
||
sync用过吗
|
||
我有一台服务器专门放备份数据的怎么把数据传到这台服务器上
|
||
|
||
三轮面试 运维 老板 ceo
|
||
运维:自我介绍 用过普罗米修斯吗 公司用的都是docker k8s这些 然后问我有啥想问的没 我说公司多少个运维 多少台服务器 这
|
||
老板:一些数据库的东西 怎么做的主动高可用 这边也是问了研发多少人 他说五十多个
|
||
ceo:介绍zabbix给他 问我服务器经常出问题吗 我说这肯定不能出问题我工作就是保证他不出问题的 然后问了下情况啥的住哪里 平时兴趣爱好 玩的游戏都有哪些 什么段位 游戏公司都问的 还涉及到一个kvm虚拟化
|
||
|
||
lvs的工作模式 作用工作模式的 区别 缺点
|
||
iptables的四表五链 详细的说出来干嘛用的 如果我两个不同网段的ip用这个怎么连接
|
||
系统的优化做过哪些
|
||
nginx的优化 mysql的优化 redis的优化
|
||
keepalived的工作原理 我怎么去检测他们 发生脑裂怎么办
|
||
你懂网络吗
|
||
zabbix怎么监控的 说一下具体流程用的模板还是什么 elk你做了报警吗 logstash的过滤规则说下
|
||
三剑客用过是吧 比如我要在一个很大的日志文件里去截图某一时间段的日志怎么做 你用这些工具说一下
|
||
你在测试环境用他们做了什么
|
||
几个运维 你在工作中遇到的最大挑战是什么 你怎么解决的 然后还有啥来着忘了
|
||
|
||
1. 上家公司服务器数量,架构
|
||
2. linux系统关机了怎么排查,
|
||
3. linux基础命令一定要熟悉
|
||
4. 怎么查看100行日志
|
||
5.zabbix部署过程
|
||
6.经常写脚本吗,写过哪些脚本
|
||
8.给你100台服务器怎么规划
|
||
|
||
离职原因?未来规划?
|
||
面对客户处理问题能不能接受?
|
||
zabbix监控什么?有没有做过二次开发吗?
|
||
自动化运维脚本写过哪些?有没有用python写过对监控服务器的监控脚本?
|
||
tomcat处理过哪些故障?
|
||
sed、awk、grep的使用?
|
||
|
||
|
||
1.centos用的什么版本 说出几个常用命令
|
||
2.公司多少台服务器
|
||
3.用两台Nginx怎么做负载均衡
|
||
4.开发把代码给你怎么从测试环境放到生产环境
|
||
6.用ansable做过什么
|
||
7.Redis集群用的什么模式
|
||
8.用的什么虚拟机
|
||
9.MySQL用SQL语句多吗
|
||
|
||
1.上家公司架构,你在公司日常是做啥的。
|
||
2.对上家公司的架构有那里觉得不好,让你改的话应该怎样去改
|
||
3.vim的一些基本命令
|
||
4.http状态码 说出数字就行了 什么意思,也没问
|
||
5.lvsdr模式 加一块网卡用来做什么。
|
||
7.监控报警了怎么处理 处理过程说一下
|
||
|
||
1、公司的架构
|
||
2、rdis哨兵模式怎么部署,配置
|
||
3、nginx做双节点怎么部署,从前端到后端
|
||
4、做了keepalived怎么确认服务是活的
|
||
5、做了keepalived,如果master是活的,服务死了,怎么处理
|
||
6、jenkins上线流程,有发布过.nat项目吗?发布在windows上吗?maven插件是使用的网络还是?不记得了
|
||
|
||
1、zabbix监控过一些什么
|
||
2、mysql加keepalived怎么做高可用,
|
||
3、linux内核调优具体哪些
|
||
4、nginx,tomcat,调优
|
||
6、开发把代码给你你要怎么部署,域名,数据库这些
|
||
|
||
两个开发面试基本上就是问jenkins构建cicd这些
|
||
jenkins怎么构建cicd的
|
||
用到的插件有哪些
|
||
你们有几套环境
|
||
生产环境有给到开发权限吗
|
||
怎么查看一个目录文件的大小
|
||
怎么查看谁登录了系统
|
||
怎么查看谁改了什么东西
|
||
你自己管多少台服务器
|
||
java全家桶用过吗 熟悉中间间有哪些
|
||
kibana是干什么用的
|
||
jenkins用到的脚本怎么写的
|
||
|
||
按照简历技能一条一条问
|
||
公司是做什么的,具体架构
|
||
怎么给磁盘扩容,怎么查看进程,杀死进程,我回答的是kill -9 他问 后面带其他参数有什么意义
|
||
jenkins上线怎么上线的,git怎么拉取代码,容器怎么关闭开启
|
||
mysql主从原理,主库主库写入数据从库立马就能查吗
|
||
nginx的方向代理怎么配
|
||
redis集群原理,数据持久化的方式
|
||
写过哪些脚本,怎么写的
|
||
对了最后还有一个问题,就是来了我们公司就你一个系统运维相当于是空白的,你是打算怎么规划安排一下
|
||
|
||
|
||
上家公司你负责做什么?多大规模?
|
||
nginx你上家公司正使用哪些模块?
|
||
tomcat出问题怎么处理?OOM可能是哪些原因?平时tomcat出过什么问题怎么解决?
|
||
mysql版本?架构?为什么不用RDS?增删改查?更复杂的操作会不会?左连接右连接?
|
||
数据库备份策略?
|
||
监控用的什么?普罗米修斯了解吗?云上有监控为什么不用?
|
||
zabbix监控了什么?对nginx做了哪些监控?怎么做的?
|
||
elk架构?作用?
|
||
写过哪些脚本?
|
||
|
||
描述一下上家公司是做什么的,做过的项目
|
||
root密码忘了怎么处理
|
||
怎么查看磁盘设备
|
||
磁盘怎么扩容的详细流程,做没做过raid
|
||
用的什么文件系统
|
||
elk各个节点的作用
|
||
zabbix前端页面用的什么组件
|
||
数据库备份策略,用的什么命令备份,备份的数据存储在哪里,存储在其他服务器上怎么传输。
|
||
mysql单节点怎么做的主从,做主从时主库服务要不要停掉
|
||
|
||
|
||
离职原因 两家的
|
||
会问你是不是裸辞(两次的)(这个地方没回答好,千万不要说裸辞)
|
||
上上家的公司的情况
|
||
ctime、atime、mtime
|
||
打包压缩 解压
|
||
nginx的反向代理怎么配置,具体参数怎么写
|
||
nginx负载均衡配置,在什么位置写,不在主配置文件写,怎么去配置
|
||
tomcat怎么查看启动状态 日志在哪看 访问日志怎么看 几个端口 这几个端口干啥的
|
||
|
||
|
||
离职的原因,面试情况
|
||
find命令,详细参数,为什么使用这些参数
|
||
ctime、atime、mtime
|
||
rsync命令参数
|
||
nginx怎么启动,重载
|
||
nginx的反向代理怎么配置,具体参数怎么写
|
||
nginx负载均衡配置,在什么位置写,不在主配置文件写,怎么去配置
|
||
tomcat报错显示的内容是什么,写出来
|
||
tomcat配置文件,主要修改的是什么
|
||
zookeeper是什么,怎么去配置
|
||
ELK数据流,各部分都是什么,作用
|
||
遇到故障怎么去排查解决
|
||
同一个机器上不同用户怎么去使用不同版本的jdk,具体的配置参数跟启动方式,
|
||
怎么知道启动的是该用户想用版本的jdk
|
||
|
||
1.上两家公司的都干了啥,上两家公司运维多少人。
|
||
2.物理服务器的架构,云服务器的架构
|
||
3.上家公司的app,用到云上的什么产品。
|
||
4.nginx原理,负载均衡,反向代理,流量控制描述具体写了啥,
|
||
5.nginx服务生产中碰到的问题。
|
||
6.公司的域名变了怎么办
|
||
7.Keepalived的原理,怎么查看keepalived是否成功,keepalived生产会碰到的问题
|
||
8.写过什么的脚本
|
||
9.物理机的kvm虚拟化的脚本写了啥,介绍里面的内容
|
||
10.为什么不用云上的虚拟化产品,说了名字,没听过的东西
|
||
11.Lvs跟nginx你选那个
|
||
12.Tomcat部署,项目的上线,项目版本的回滚。
|
||
13.研发的代码存哪里,war包存哪里
|
||
14.项目上线时间,上线的过程出现过问题,怎么解决
|
||
15.redis做的什么,集群的原理,怎么启动,怎么确定master跟slave
|
||
16.mysql架构,读写分离生产中遇到的情况,主从复制怎么做的,遇到的问题
|
||
17.你遇到的比较大的故障
|
||
18.公司app的更新频率,加班情况,上夜班情况。
|
||
19.新的项目上线需要多久
|
||
20.你的优缺点,举列子说明
|
||
21.Zookeeper部署,启动,用来干嘛。
|
||
22.Logstash也能收集日志,为什么还要用filebeat。
|
||
23.为什么用kafka做日志收集,不用rabbitmq
|
||
24.Kibana做的什么
|
||
25.服务的部署脚本,怎么部署到其他服务器上。
|
||
|
||
|
||
1.jenkins的上线流程,elk怎么做的,es有几台,有哪些节点,遇到了哪些问题
|
||
|
||
2.公司架构,云服务器大概一个月开销多大,前后端语音是什么,查看负载的命令,1分钟的负载值怎么算的,查看内存使用,显示出来都有什么,buffer和cache的区别,怎么清理,3代表什么
|
||
|
||
3.现场写判断tomact服务是否存活脚本,/app目录使用磁盘大于80报警,nginx的反向代理怎么写(给/v1/wangke做反向代理 端口 8081)
|
||
|
||
1、写过的shell脚本,多少行,会不会python
|
||
2、怎么把数据库状态回退到半个小时前
|
||
3、用shell脚本写1到100相加
|
||
4、mysql怎么指定ip可以访问(不使用其他工具)
|
||
6、如何在家里操纵内网机器(让美术设计那些不懂技术的也可以简单上手)
|
||
7、filebeat收集的日志怎么交给两套分析系统进行处理
|
||
8、一个6L杯子一个5L杯子怎么量出3L的水
|
||
|
||
1.用过那些系统,用过widows吗?
|
||
2.了解网络吗,idc,ssl,做过vlan吗?
|
||
3.ci/cd实现过程
|
||
5.传递公钥的时候如何避免交互,具体说出参数
|
||
|
||
6.公司架构,部署过什么?
|
||
7.主要是网络类型吧,那时候不知道是面试网络工程师。需要学习python,使用过网络模块吗
|
||
|
||
1. 生产上遇到的故障
|
||
2.MySQL同步方式之间的区别
|
||
3.如何避免数据库主从复制数据不一致
|
||
4.系统初始化都初始化过什么
|
||
5.做zabbix监控,为什么不使用云上的自定义监控项
|
||
6.kvm的网络,为什么做kvm
|
||
|
||
1.jenkins上线流程,负责哪些
|
||
2.gitlab是否使用过,是自己搭建的吗
|
||
3.生产中遇到哪些问题,怎么解决,至少三个
|
||
5.服务器初始化一般会做哪些设置
|
||
6.服务访问慢了怎么办,会如何排查,如何解决
|
||
7.zabbix使用过哪些自定义监控
|
||
8.git是否使用过,awk,sed,会给个题目,让你使用
|
||
10.数据库备份策略
|
||
11.之前公司ELK一般用来干嘛,RabbitMQ是做什么用的
|
||
13.iptables和firewalld用的多不多,怎么进行端口的转发
|
||
|
||
2.是否会加班,加班会干什么
|
||
3.脚本写过什么脚本怎么写的
|
||
4.判断tomcat服务启动方法
|
||
5.nginx启动,为什么可以这么启动
|
||
6.你们公司如果域名变了你会怎么做
|
||
7.你的优点是啥,你怎么证明
|
||
8.数据库架构
|
||
9.离职原因,是否还有其他因素
|
||
10.tomcat修改端口
|
||
11.项目上线你怎么做的
|
||
12.Jenkins的构建脚本你自己写的吗
|
||
13.假如给你文件,每一行都是一个单词,统计单词个数和重复的,如果有的一行不止一个单词用空格分开你怎么处理。你可以写出来吗
|
||
14.笔试:Java程序OOM,你熟悉的Linux命令,安装不同版本jdk,浏览器输入域名返回网页过程。
|
||
|
||
|
||
2.你是如何做系统优化的,优化的参数
|
||
3.你还优化过什么
|
||
4.你做过什么项目,怎么做的(流程)
|
||
5.你写过什么脚步,写了多少
|
||
6.你们公司的架构是什么,服务器有多少,部门多少人
|
||
7.生产中怎么测试keepalived漂移,怎么启动keepalived
|
||
8.你处理过什么报警信息,报警的等级有哪些
|
||
9.你碰见过什么问题,如何解决
|
||
10.你们的项目是怎么上线的,直接放到生产中还是?
|
||
11.你们nginx怎么安装的,安装目录在哪
|
||
12.你在搭建zabbix的时候碰见什么问题,怎么报警
|
||
13.有没有发生什么紧急情况要进行处理
|
||
14.数据库用的什么架构,怎么实现的
|
||
15.你们公司上班时间是怎样的,有加班吗
|
||
16.你们加班一般是因为什么
|
||
18.你们新项目上线要多久时间处理
|
||
19.一些一阶段的命令 还有人事题
|
||
|
||
elk数据流
|
||
elk各部份分别是什么,作用
|
||
tomcat如何查看内存是否不够,具体看什么参数
|
||
ngin 5xx 错误
|
||
location 匹配
|
||
yaml文件中写什么
|
||
中间件软件了解哪些
|
||
zabbix监控什么
|
||
dns解析
|
||
服务故障怎么去解决
|
||
还问一些基本的系统命令
|
||
怎么判断系统负载过高,top(里面的内容都是什么)
|
||
|
||
你主要做什么,
|
||
为什么要这么多运维,
|
||
日志量大吗,
|
||
|
||
1.部署tomcat,需要大致步骤。
|
||
2.nginx部署tomcat集群
|
||
3.nginx的配置文件,
|
||
4.nginx的配置文件,部署后端服务器需要修改配置,
|
||
5.sql语句@和#的区别,
|
||
6.mysql得存储引擎,具体到什么版本什么引擎,
|
||
7.了解别的java中间件吗
|
||
8.tomcat的参数,可能是开发问的,很细具体到参数的意思,问了很多个
|
||
|
||
1、lvm扩容
|
||
2、公司架构
|
||
3、压缩命令tar
|
||
4、ansible批量部署playbook的编写
|
||
5、物理服务器的配置
|
||
6、根分区满了怎么排查
|
||
7、部门
|
||
8、没人值班出了问题怎么处理
|
||
9、有没有给系统打过补丁
|
||
|
||
nginx如何限流,加密认证(让某一个地区不访问),地址库
|
||
|
||
怎么做cdn做边缘缓存
|
||
|
||
aof的实时性的策略
|
||
|
||
如何做数据库双元区备份
|
||
|
||
三个pod,怎么从service到pod 的容器里面去的呢,怎么区分每一个pod的不一样
|
||
|
||
什么是endpoint,在service转发中起到了什么重要功能
|
||
|
||
无头服务和有状态
|
||
|
||
.if里面-e和-f的区别
|
||
.写出linux里的命令,至少10个
|
||
|
||
.写出50x的不同含义
|
||
|
||
.给一张数据库表,怎么查看表a里aa.com的id以及其他的问题(其他的不记得了)
|
||
|
||
.写出python的五种库
|
||
|
||
.简单说一下Djingo架构
|
||
|
||
.是否是独生子女?
|
||
|
||
.zabbix里的参数是怎么配的
|
||
|
||
.server端和agent端怎么配的要很具体说出模块,端口是多少
|
||
|
||
.出现代码问题,怎么排错,定位,怎么和开发一起定位解决,并且由于我说打印那个java里的日志,和开发一起看,看不是很懂,
|
||
就说之后要学java,要具体怎么解决,给出解决方案
|
||
|
||
.整个公司的架构是什么的(linux还是windows)
|
||
|
||
.怎么定义报警级别,举了例子cpu超过80%,是什么报警级别,给谁报警,然后所有服务器都是这样设置的吗?不是请说出哪些
|
||
不是,依据是啥,设置成啥
|
||
|
||
.你觉得上一份工作的老大看中了你啥?
|
||
|
||
.脚本能力
|
||
|
||
.公司多少台服务器
|
||
|
||
.自己未来的工作的定义是啥,偏使用还是排查,还是脚本
|
||
|
||
.写过什么ansible部署的脚本,此处一定要谨慎,因为说写了啥,她会一直问下去
|
||
|
||
.zabbix里问的特别细,以及一直都在问生产上怎么监控,监控啥,怎么和开发解决如果是代码问题,给出解决方案,总之都是生产上怎么解决问题
|
||
要了解一些腾讯蓝鲸之类的
|
||
|
||
.shell的$0和$1分别是什么意思?
|
||
$0 脚本名
|
||
$1 位置变量
|
||
.有一个war包,端口是8080,写一个监控这个war包的脚本,服务挂了怎么让他起来,说思路即可。
|
||
.了解python吗?常用的模块知道哪些。
|
||
.实现负载均衡的软件了解哪些,说一下nginx和lvs以及haproxy的区别,lvs的几种模式。
|
||
.keepalived使用的协议,中文名字,nginx的调优,nginx的负载均衡策略(其实就是算法),还要说出大概解释一下。
|
||
.ELK部署在什么环境,kafka的一些概念,比如topic、生产者、消费者、kafka的分区。
|
||
.用过oracle吗?
|
||
.redis的数据类型,持久化存储方式以及区别,RDB和AOF哪个更安全,哪个性能更好,两种持久化方式一起用的话优先加载哪一个。
|
||
.有一台物理服务器,怎么给一块网卡配置两个ip。
|
||
.top命令了解吧,那么知道了系统负载的1分钟、5分钟、15分钟,cpu核心为2核,怎么计算它的平均负载。
|
||
.buffer和cache是什么,他们的区别是什么,缓存区的作用。
|
||
|
||
网心二面
|
||
.监控里每天同一时间服务器总是报会负载过高,计划任务里有一个程序在每天这个时间内跑,研发说是个正常的程序,不会影响服务器正常运行,
|
||
你该怎么解决?
|
||
.查看磁盘性能有哪些方式?
|
||
.MySQL掌握的怎么样?会不会多表查询?
|
||
.服务器负载过高,你会如何排查?
|
||
.zabbix监控解决过哪些问题?
|
||
.你有什么优点?缺点?
|
||
.如果领导总是把任务交给你做你该怎么解决?
|
||
.如果同事总是把任务推给你你会怎么解决?和他协商过他依旧如此,你会怎么解决?
|
||
.你有了解过我们公司吗?
|
||
.你上家公司多少人?主要是做什么的?经历过融资?能实现盈利吗?
|
||
.你平时一般和哪些人员接触?关系如何?之间如何处理矛盾?
|
||
.大学里学了哪些课程?为什么会走运维?
|
||
.校招过去工资多少?离职前工资多少?离职原因?
|
||
.你的家庭情况?
|
||
.面对客户你会怎么去解决客户的问题?
|
||
.上家公司有没有年终奖?
|
||
.说一下你在上家公司工作了三年有什么收获?
|
||
.你写的这些项目里哪一个对你来说是最有挑战性的?有没有失败过?后面为什么又成功了?
|
||
.你对未来有什么样的规划?
|
||
|
||
数据库备份怎么备份的
|
||
tomcat的优化,怎么改端口
|
||
|
||
系统优化怎么做,改什么参数
|
||
elk用的什么版本,数据流
|
||
zabbix监控过什么,自定义监控项怎么做
|
||
jenkins用来做什么,cicd流程
|
||
|
||
慧讯科技
|
||
2.elk中kibana收集不到数据从那几个方面进行排查
|
||
4.监控NGINX除了端口服务状态还监控过其他复杂的选项吗?
|
||
|
||
.elk集群kibana没有数据怎么排查
|
||
|
||
并发量多少
|
||
pv多少
|
||
公司有多少台服务器 什么配置
|
||
你管理多少台服务器
|
||
服务器部署的什么应用
|
||
必须记住应用的版本号
|
||
如果是物理机,机房在哪里,什么牌子,机房在哪里
|
||
凡是 学历 公司流水 年龄 相关问咱们就业老师 千万不要不好意思
|
||
公司的服务器架构 能手动画出
|
||
你每天的工作是什么
|
||
必须弄清楚自己该会哪些东西,哪些不该会,做到心中有数,记住 凡是你没学过的应用都可以大大方方的说上家公司没用过,但是我用过很多其他服务,这个我能很快熟悉并使用
|
||
应用及系统优化 每个常见应用准备2到3个优化选项即可
|
||
必须准备至少一件印象深刻的运维事件
|
||
必须准备一个你最熟悉的服务
|
||
数据库的架构 有多少数据量 备份方案 简单抓包命令
|
||
防火墙端口转发命令必须熟记
|
||
架构平滑升级
|
||
必须能流利描述你们公司的代码更新上线流程
|
||
必须熟悉公有云,比如阿里云
|
||
必须准备几个监控项
|
||
必须准备你写过什么脚本,上面的监控脚本即可
|
||
把时间和精力花在有用的事上
|
||
去公司面试碰壁后 保持心态
|
||
你的技术从哪学的,学了多长时间
|
||
简历上不能写了解docker必须熟悉
|
||
kvm必须写熟悉
|
||
|
||
--------------------------
|
||
癫哥下发
|
||
--------------------------
|
||
1.写过什么shell脚本
|
||
系统初始化脚本
|
||
优化脚本(系统优化、服务优化)
|
||
监控脚本 结合zabbix监控指标项(磁盘IO)
|
||
批量部署脚本 结合ansible
|
||
|
||
2.用过什么linux系统
|
||
centos
|
||
|
||
3.判断系统是什么类型
|
||
uname -a
|
||
cat /etc/redhat-release
|
||
|
||
4.查看linux系统各个服务的状态
|
||
systemctl status 服务名
|
||
|
||
5.命令top中查看cpu按什么键
|
||
P 1
|
||
|
||
6.top中还有什么指标你会关注
|
||
负载 cpu 内存 进程信息
|
||
|
||
7.什么会导致cpu平均负载升高
|
||
被植入挖矿程序
|
||
CPU密集型进程
|
||
IO密集型进程
|
||
大量等待CPU进程调度
|
||
|
||
8.网络当中查看各种连接状态统计流量数量
|
||
ifconfig
|
||
|
||
9.写一个shell脚本,假设一文本内容第一行为1第二行为2第三行为4,这个文本也可以有300行或者3000行,请问如何使用awk获
|
||
取它们的和
|
||
#!/usr/bin/bash
|
||
sum=0
|
||
awk '{sum+=$1}END{print sum}' num.txt
|
||
|
||
9.linux内核参数调优
|
||
/etc/sysctl.conf
|
||
|
||
10.如何判断主从复制是否成功
|
||
show slave status\G IO和SQL进程均为YES即成功
|
||
|
||
11.如何判断主从复制是否有延迟
|
||
show slave status\G SQL_Delay值为0即成功
|
||
|
||
12.对运维工作时间怎么看待的
|
||
时间比较灵活。比如服务器突然宕掉,zabbix报警等紧急情况都是需要我们及时处理
|
||
|
||
13.能接受打电话随时回来嘛
|
||
可以随时回来
|
||
|
||
14.tcp/ip四层、五层模型
|
||
网络接口层 网络层 传输层 应用层
|
||
物理层 数据链路层 网络层 传输层 应用层
|
||
|
||
15.http协议原理
|
||
http是超文本传输协议 架构是C/S或B/S
|
||
|
||
16.cicd自动上线部署流程
|
||
开发上传源码到版本仓库后,webhook(钩子)检测到新源码,立即触发,jenkins利用钩子获取项源码进行构建,构建完成后将构建后的项目发布的测
|
||
试环境、类生产环境;如项目测试没有问题发布到生产环境
|
||
|
||
17.nginx优化
|
||
|
||
18.nginx七层负载支持最大并发量多少
|
||
万级并发
|
||
|
||
20.zabbix监控过那些内容
|
||
磁盘IO 机器是否宕机 服务状态
|
||
|
||
21.cicd流程
|
||
23.你了解容器和k8s吗
|
||
|
||
24.故障处理过程中常用的运维命令
|
||
systemctl top df ifconfig sar ss tailf
|
||
|
||
25.进程的状态(RSTZ)
|
||
R运行 Z僵死 S睡眠 T停止
|
||
|
||
26.什么会导致僵尸进程
|
||
子进程关闭后,父进程仍在运行
|
||
|
||
27.遇到过cpu使用率过高的情况吗
|
||
遇到过(被植入挖矿程序 大量进程等待被处理......)
|
||
|
||
28.mysql运行在哪个cpu上,对应的cpu还跑了哪些进程
|
||
都有可能
|
||
若服务器只跑mysql,还会有一些系统进程
|
||
|
||
29.日常巡检会关注哪些巡检指标
|
||
磁盘(是否正常工作 剩余容量......)
|
||
内存(剩余内存大小......)
|
||
CPU(负载 使用率......)
|
||
网卡(收发流量 历史流量......)
|
||
服务(是否正常工作......)
|
||
|
||
7.使用zabbix监控,被监控端过多你会做什么优化
|
||
zabbix-proxy代理(缓解监控端的压力)
|
||
自动发现(可以提高工作效率,更快实现监控)
|
||
|
||
8.keepalived工作原理
|
||
采用VRRP(虚拟路由冗余协议)协议.主节点正常时,不断向备用节点发送心跳信息,主节点出现故障,备用节点接管主节点的
|
||
ip资源和服务,主节点故障修复完毕后,备用节点释放ip资源和服务,恢复到备用状态
|
||
|
||
9.网络链路中断,keepalived会怎么样
|
||
出现2个master(即脑裂)
|
||
|
||
10.遇到脑裂,怎么处理
|
||
爆头
|
||
|
||
11.出现脑裂,如何快速回复业务
|
||
先解决脑裂问题,再处理其它问题
|
||
|
||
12.keepalived应用在无状态的服务上还是有状态的服务上
|
||
|
||
13.keepalived给业务做高可用,假如有A、B两台业务服务器,那如何判断某一台服务器不可用了,做一个高可用切换,这个脚本
|
||
逻辑是什么
|
||
考keepalived原理
|
||
|
||
14.用zabbix对数据库主备监控是如何去做的
|
||
安装被监控端用于搜集数据
|
||
添加监控指标(存活状态 主从状态 吞吐量 主从延迟......)
|
||
|
||
15.ansible都会用于什么场景
|
||
批量自动化
|
||
|
||
16.编写过playbook吗
|
||
编写过(批量部署(nginx zabbix-agent部署) 系统初始化......)
|
||
|
||
.tomcat的日志量很大,怎么解决
|
||
.docker,k8s用过吗
|
||
.你在公司除了做运维,还做过其他工作吗
|
||
|
||
.部署lvs+nginx要多长时间
|
||
.Jenkins怎么安装
|
||
|
||
问题1:elk收集哪些日志
|
||
系统日志
|
||
安全日志
|
||
应用程序日志
|
||
网络设备日志
|
||
问题2:有什么作用
|
||
日志便于集中管理
|
||
日志搜索和分析
|
||
实时监控和告警
|
||
可视化课报表
|
||
|
||
=========================================
|
||
|
||
|
||
如何判断出Windows操作系统是32位的还是64位的。
|
||
可以在我的电脑属性中查看
|
||
|
||
Windows 操作系统设置每天下午18 点自动关机,如何操作。
|
||
方法1:
|
||
win+r
|
||
at 18:00 shutdown -s
|
||
方法2:
|
||
控制面板->管理工具->计划任务->设置每天的关机时间
|
||
|
||
问题1:swap可以关吗?
|
||
可以关
|
||
问题2:哪些进程不能放到swap?
|
||
正运行的进程无法放到swap
|
||
匿名的且非活跃的进程
|
||
问题3:swap大小?(32G即上限)
|
||
内存 swap
|
||
16G 32G
|
||
32G+ 32G
|