题库

系统管理

文件管理

如何退出vim编辑器

1
:q    :q!   :wq (保存推出)

如何快速定位catalina.out 日志中最近发生的异常

1
2
使用如下命令查找错误日志信息
# tail -f catalina.out

在使用mkdir命令创建新的目录时,在其父目录不存在时先创建父目录的选项是

1
# mkdir  -p 

hp_unix 删除文件名中含有2017 关键字的文件?

1
# rm -rf  *2017*

在linux系统中, 用来存放系统所需要的配置文件和子目录的目录是

1
/etc

什么命令是删除文件和目录?

1
rm

什么命令是移动文件和目录的命令?

1
mv

Linux 操作系统创建/data/database/oracle (注: /data目录不存在)目录的命令为_;进入/data/database/oracle目录的命令为_;

1
2
# mkdir -pv /data/database/oracle
# cd /data/database/oracle

创建目录gpowe命令

1
# mkdir  gpowe

删除目录gpowe命令

1
# rm -rf gpowe  

什么命令可以移动文件和目录,还可以为文件和目录重命名。

1
mv   

在vi编辑器中的命令模式下,键入()可在光标当前所在行下添加一新行。

1
o

存放linux基本命令的目录是什么?

1
/bin

删除文件的命令是?

1
# rm  -rf  文件名

使用命令”vi /etc/inittab” 查看文件的内容,你不小心改动了一些内容,为了防止系统出问题,你不想保存所修改的内容,你应该如何操作?

1
:q!     按ESC后输入:q!

在linux中,要查看文件内容,可用什么命令?

1
2
# cat   filename      
# vim filename

cd命令可以改变用户的当前目录,当用户键入命令cd并按Enter键后 3

1
2
3
4
1.当前目录改为根目录
2.当前目录不变,屏幕显示当前目录
3.当前目录为用户主目录
4.当前目录为上一级目录

Linux操作系统查看/etc/passwd文件前10行的命令为

1
# head -10 /etc/passwd

将文件/etc/passwd前10行追加到/etc/passwd_new文件结尾的命令是

1
# head -10 /etc/passwd >>/etc/passwd_new

用户权限

怎么给文件/etc/passwd加上不可更改属性,从而防止非授权用户获得

1
# chattr +i /etc/passwd

新增一个禁止登录的用户

1
2
使用-s指定登录shell
# useradd -s /sbin/nologin <username>

Linux 文件权限一共10位长度, 分成四段,第三段表示的内容是(C)

1
2
3
4
A 文件类型 
B 文件所有者的权限
C 文件所有者所在组的权限
D 其他用户

改变文件所有者的命令? 3

1
2
3
4
1.chmod
2.touch
3.chown
4.cat

将普通用户user加入到root组

1
2
# gpasswd -a user  root 
# usermod -g root user

编写shell程序运行前赋予该脚本什么权限?

1
x 执行权限

唯一标识每个用户得是?

1
uid

在linux系统添加新用户的命令是?

1
useradd   username 

添加用户时使用()可以指定用户目录

1
useradd   -d  用户目录

linux操作系统新建一个用户为oracle命令是码的命令为()为oracle 用户设置密码()

1
2
useradd oracle
echo '密码' | passwd --stdin oracle

修改用户自身的密码可使用?

1
2
root  :  password   user   
其他用户: passwd

以下文件中,只有root用户才能存取的是? 2

1
2
3
4
1.passwd
2.shadow
3.group
4.password

用于文件系统直接修改文件权限管理命令为?

1
chmod

创建一个用户,用户名为user02,所属组为stef,用户家目录为/home/user2,用户登录shell为/bin/bash

1
useradd -s   /bin/bash   -d /home/user2  -G  sthff

赋予所有用户读和写backup.tar.gz文件的权限

1
chown  666  backup.tar.gz  

打包压缩

解压acces.gz文件至access.log,保持源文件不删除解压:

1
2
3
4
5
6
# cp access.gz /access.log/access1.gz  
# cd /access.log
# gzip -d access1.gz

centos stream9系统上支持-k选项可以做到不删除源文件
# gzip -k -d app.py.gz

列出Linux常见打包工具并写相应解压缩参数(至少三种)

1
2
3
4
5
6
7
8
9
10
11
压缩打包命令:
tar -cvzf file name.tar.gz dirname
zip filename.zip dirname
gzip filename
bzip2 filename

解压包命令:
# tar -xf filename.tar.gz
# unzip filename.zip
# gzip -d filename.gz
# bzip2 -d filename.bz2

有关归档和压缩命令,下面描述正确的是(C)

1
2
3
4
A. 用 uncompress 命令解压缩由 compress 命令生成的后缀为.zip的压缩文件
B. unzip 命令和 gzip 命令 可以压缩相同类型的文件
C. tar 归档且压缩的文件可以由 gzip命令压缩
D. tar 命令归档后的文件也是一种压缩文件

下列哪个命令建立在一个tar归档文件的啥时候列出详细列表(3 )

1
2
3
4
1.tar -l
2.tar -cv
3.tar -cvf
4.tar -r

在linux中压缩文件后生成后缀为.gz文件的命令是?

1
#tar -czf  文件.tar.gz   文件

一个文件名字为test.tar.gz, 可以用来解压的命令是(B)

1
2
3
4
A. tar 
B. gzip
C. compress
D. uncompress

将test.tar.gz文件解压缩

1
# tar xf test.tar.gz 

若要将当前目录中的myfile.txt问价压缩成myfile.txt.tar.gz,则实现的命令为?

1
# tar -czf  myfile.txt.tar.gz  myfile.txt

文件查找

如何删除当前目录(包含子目录)下所有30天以前创建的文件名后缀为.log的文件?

1
# find ./ -mtime -30 -name '*.log' -exec rm -rf {} \;

找出/usr/local/apache2/logs中三天前以sd-360开头并以日期结尾的log并删除。

1
# find / -mtime +3 -type f -a -name "sd-360*"" -exec rm {} -f \;

快速定位当前目录下size最大的文件,命令行为()

1
# find . -type f | xargs -i ls -Sl {} | sort -t ' ' -k 5 -n | tail -1

/code/java 目录下有一份java工程,里面有一系列各种深度的子目录,其中有一个中包含HellWord这个字符,现需要通过一行命令找到该文件,请写下命令行。

1
# find /code/java -name '*HellWord*' 

将/usr/local/test目录下大于100k小于500k的文件转移到/tmp目录下

1
# find /usr/local/test -size +100k -a -size -500k -exec mv -r {} /tmp \;

使用find命令删除/data/web下的所有.svn结尾的文件

1
# find   /data/web  -name '*.svn'  -exec rm -rf {} \;

由于磁盘空间紧张,如何找出哪些文件占用了大量的磁盘空间?

1
# find /boot  -exec ls -l {} \; | sort -k 5 -n

搜索文件命令

1
# find   路径  -name  文件名   

Linux查询某文件的路径,指令为?

1
# find / -name 'filename'

找出/home下所有7天以前,以.ok结尾的文件列

1
# find /home -name "*.ok" -and -mtime +7

在/home目录下查找文件名为.Profile的文件,找到后删除

1
# find  /home -name .Profile  -exec  rm -rf {} \;

进程管理

找出系统中父进程号为105的所有进程,并将其结束

1
2
3
4
5
6
7
8
9
10
查看: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

如何查看当前系统都有哪些进程

1
2
3
4
本题方法比较多 可以使用如下3种方法任意一种
ps
top
lsof

获取tomcat pid 并杀掉进程

1
2
3
4
ps aux|grep tomcat  获取进程id  
kill -9 进程id

pkill -9 tomcat

查看某一端口的连接客户端IP,比如3306端口

1
ss -antpul | grep 3306

请写出在Linux操作系统中查看进程中含有oracle关键字的进程信息的命令(); 杀死PID为29231的进程的命令为()

1
2
ps aux | grep oracle
kill -9 29231

进程查看和调度分别使用什么命令?

1
2
进程查看的命令是ps和top。
进程调度的命令有at,crontab,kill

如何查看系统都开启了哪些端口

1
2
3
4
本题方法比较多 可以使用如下3种方法任意一种
# ss -anpt
# netstat auntpl
# lsof

若使pid进程无条件终止使用的命令是?

1
kill   -9 

linux系统中结束后台进程的命令

1
2
通过ps命令查看进程号PID,然后执行  kill %PID
通过jobs命令查看jobnum,然后执行 kill %jobnum

结束后台进程命令?

1
kill pkill killall

在超级用户下显示linux 系统中正在运行的全部进程,应使用的命令及参数?

1
2
3
4
ps -ef
ps aux
top -bn1
htop

终止一个前台进程可能用到的命令和操作(A,B)

1
2
3
4
A. kill 
B. <ctrl>+c
C. shut down
D. halt

ps aux中的VSZ代表什么意思?RSS代表什么意思?

1
2
VSZ:虚拟内存集,进程占用的虚拟内存空间 
RSS:物理内存集,进程占用实际物理内存空间

列出当前系统中所有的网络连接(包含进程名),请写出完整操作命令

1
2
3
4
5
6
7
# netstat -anputl 
-t TCP
-l 监听
-a 所有
-u UDP
-n 显示端口号和IP
-p pid

存储管理

有两分区sda2和sda3(都已使用过,未挂载),sda2做成交换分区并激活,sda3做成xfs文件系统,挂在/tmp/sda3上,请写出详细步骤

1
2
3
4
5
6
7
8
9
# 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 查看

快速生成一个10G的文件

1
# dd if=/dev/zero of=test bs=10M count=1024

根据服务器硬件配置,安装Linux操做系统时如何分区?
(硬件配置1:硬盘2T. 内存32G)、(硬件件配置2:硬盘6T. 内在128G)

1
2
1: boot 500M swap 32G / 1TG /home 500G /var 剩余
2: boot 500M swap 32G / 5T /home 500G /var 500G

磁盘空间满了,删除一部分Nginx access日志,但是,发现磁盘空间还是满的,为什么?

1
2
3
4
在Linux系统中,通过rm或者文件管理器删除文件将会从文件系统的目录结构上解除链接(unlink).然而如果文件是被打开的(有一个进程正在使用),那么进程将仍然可以读取该文件,磁盘空间也一直被占用。而我删除的是nginx的log文件删除的时候文件应该正在被使用
解决:查看进程,kill掉进程,然后再删除

如果服务器被植入恶意代码一直产生新的inode号,也会导致磁盘空间不可用

描述raid0、1、5的特点和优点?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
raid0:
生产环境最少需要两块磁盘
数据条带式分布,假如磁盘有N块,每块磁盘存1/N的数据
没有冗余,其中任何一块损坏,整个raid失效,不能应用于对数据安全性要求高的场合
性能最佳(不存储镜像、校验信息),读写速度相对较快

raid1:
生产环境最少需要2块磁盘
提供数据块冗余,安全
好读相对较快,写相对慢

raid5:
生产环境最少4块磁盘,其中一块做冗余,其他做数据盘
数据条带形式分布
以奇偶校验作冗余
适合多读少写的情景,是性能与数据冗余最佳的折中方案

在/etc/fstab 文件中指定的文件系统加载参数中,(D) 参数般用于CDROM

1
2
3
4
5
6
A defaults
B rw
C rw和ro
D noauto

cdrom文件系统 iso9660

若一台计算机的内存为 128MB 则交换分区的大小通常是 (C)

1
2
3
4
A 64MB 
B 128MB
C 256MB
D 512MB

将光盘CD-ROM(hdc) 挂在到文件系统的/mnt/cdrom 目录下的命令是 (C)

1
2
3
4
A. mount /mnt/cdrom 
B. mount /mnt/cdrom /dev/hdc
C. mount /dev/hdc /mnt/cdrom
D. mount /dev/hdc

显示已经挂载的文件系统磁盘inode使用状况的命令是?

1
# df  -h

设计用户所使用的计算机系统上有两块IDE硬盘,linux系统位于第一块硬盘上,查询第二块硬盘的分区情况命令是?

1
# fdisk -l /dev/hdb  

统计磁盘空间或文件系统使用情况的命令是?

1
# df -h

在/etc/fatab文件中指定的文件系统加载参数块,什么参数一般用于CD-ROM等移动设备

1
noauto

安装linux系统时,swap分区应该设置多少?

1
物理内存在8G以下,则swap设置为与物理内存一样大,也可以设置为物理内存的2倍。如果物理内存在8G以上,swap空间设置为8G即可。

请写出查看Linux操作系统的磁盘空间装载以及占用情况的命令();请写出将/dev/sdb文件系统挂载到/data2目录下的命令为__

1
2
df -Th
mount /dev/sdb /data2

假设服务器有6块900G本地磁盘,单盘io约为150M/S, 现对磁盘进行RAID划分,6块磁盘做成RAID5级别后实际存储大小、理论实际io为多少。

1
2
理论上6块硬盘做raid5 ;其中有一块盘做冗余;因为有校验位;所以实际大小是                    	900 * (6-2)= 3600G    
实际IO 是:150m/s*4=600m/s

*保存当前磁盘分区的分区表,dd命令是个强大的命令,在复制的同时进行转换,请写出具体命令

1
Dd if=/dev/sda of=./mbr.txt bs=1M count=512

6块300G的硬盘做raid5,新的设备容量是多大?

1
由于RAID5磁盘阵列兼顾了安全性和速度,所以有一块磁盘是要被用作安全备份区的,一块存储空间存储校验位,所以6块300G的磁盘实际使用到的只有4块4*300=1200G

假设服务器具有6块900G本地磁盘,单块磁盘IO约为150M/S,现对磁盘进行RAID划分,简述理论上6块盘做成RAID5级别后实际存储大小、实际IO为多少?

1
2
3
4
5
6
7
8
9
150*4  

理论上6块硬盘做raid5;其中有一块盘做冗余;因为有校验位;所以

实际大小是900*(6-2)=3600G

实际IO是:写的速率150m/s(小于。理论上写过程中,RAID5会进行校验耗费时间)*4=600m/s

因为读取数据的时候校验位的盘是需要读取的所以实际:读的速率是(6-2)*150=600m/s

如何关闭swap分区

1
2
# swapoff -a  //关闭所有的交换分区     
# swapoff /dev/sde //关闭sde交换分区

保存当前磁盘分区的分区表

1
partprobe

怎么理解存储?

1
存储就是根据不同的应用环境通过采取合理、安全、有效的方式将数据保存到某些介质上并能保证有效的访问,总的来讲可以包含两个方面的含义:  它是数据临时或长期驻留的物理媒介; 它是保证数据完整安全存放的方式或行为。

/etc/fstab文件的作用是什么?

1
这个文件描述系统中各种文件系统的信息,应用程序读取这个文件,然后根据其内容进行自动挂载的工作

文件系统

如何在/data/www_logs目录下找出大于10M且在90天之前被修改过的log文件,并将文件移动到/usr/local/src目录下?

1
find /data/www_logs -size +10M -mtime +90 -exec mv {} /usr/local/src \;

对文件系统进行检查的命令是

1
fsck-text4/dev/sda1-r(这样它会检查文件系统完整性,如果有什么问题,它会提示问你要不要修复的,如果你懒得理它,想让它自己修复,那就在末尾加上-y参数。)

在linux中links分类?

1
软、硬连接

软链接和硬链接的区别?

1
2
3
4
硬链接不会创建新的inode,只是给源文件多加了一个文件名,软链接创建新的inode,相当于重新创建了一个文件
硬链接不能跨分区,软链接可以跨分区
硬链接删除源文件后,另一个文件还能用,软链接删除源文件后,链接文件不能再使用
硬链接不能给目录做,软链接可以

linux操作系统支持的文件系统类型是?

1
2
3
Linux支持的文件系统较多,常见的文件系统类型如下
ext4
xfs

linux通过VFS支持多种不同的文件系统。linux缺省的文件系统是

1
2
3
4
1.VFAT
2.ISO9660
3.EXT系列
4.NTFS

linux服务器发生可故障,使用df命令查看到某目录下有剩余空间,但是无法创建文件,可能的原因是什么?

1
可能由于磁盘的inode分配完了,导致提示磁盘满

假设文件fileA的符号链接为fileB,那么删除fileA后,下面描述正确的是(2 )

1
2
3
4
1.fileB也随之删除
2.fileB仍存在,但是属于无效的文件
3.因为fileB未被删除,所以fileA会被系统自动重新新建立
4.fileB会随fileA的删除而被系统自动删除

软件管理

yum命令和rpm命令的区别,如何使用rpm安装一个有依赖的包?

1
2
3
4
5
6
区别:rpm 命令安装时,不检查软件包依赖性的问题,yum 命令安装时,可以自动处理依赖性关系,并且一次安装所有依赖的软体包。

rpm安装一个有依赖的包: 先用rpm安装这个有依赖的包,按照错误提示,如果是缺少某个依赖包也是去网上下载该包,然后用rpm命令安装所下载的依赖包。另外也可以去网上查找该包的依赖包,并将它们下载并安装。等所需依赖包安装完成后,在安装此包。

如何使用rpm安装一个有依赖的包?
先用rpm安装这个有依赖的包,按照错误提示,如果是缺少某个依赖包也是去网上下载该包,然后用rpm命令安装所下载的依赖包。另外也可以去网上查找该包的依赖包,并将它们下载并安装。等所需依赖包安装完成后,在安装此包。

查询已安装软件dhcp内所含文件信息的命令是?

1
rpm -ql dhcp 

使用rpm命令安装、卸载ntp-0.7.12.x86_64.rpm这个包。

1
2
rpm -ivh ntp-0.7.12.x86_64.rpm
rpm -e ntp-0.7.12.x86_64.rpm

如何安装软件

1
2
3
4
1、使用yum安装
2、用rpm安装
3、二进制方式安装
4、编译安装

请简要描述Linux系统下源代码编译方式安装软件的大致步骤

1
2
3
4
5
1.部署基础环境:关闭防火墙;关闭selinux;安装编译器
2.下载、解压软件包
3、配置
4、编译
5、安装

基础服务

服务管理

设置系统当前运行级别中test服务状态为启动时自动加载,请写出完整操作命令

1
systemctl enable test

Linux操作系统启动服务名为kstoredb_NODEDBd的命令为

1
systemctl start kstoredb_NODEDBd

Windows系统启动服务名为kstoredb_NODEDBd的命>令为

1
net start kstoredb_NODEDBd

分别在CentOS6和CentOS7下,查看nginx服务的工作状态,并设置为开启自动启动:

1
2
3
4
5
6
7
Centos6
# service nginx status
# chkconfig -l 5 nginx on

Centos7
# systemctl status nginx,6的方法也适用
# systemctl enable nginx

SSH

修改ssh服务端端口

1
2
#vim /etc/ssh/sshd_config		/Port查找端口行,删除#,将22修改为目标端口 
#systemctl restart sshd

Linux 操作系统从ip为10.0.4.100远程主机复制/root/script.sh文件到/database/oracle的命令为

1
scp 10.0.4.100:/root/script.sh /database/oracle

使用rsync同步/var/log目录下的多个文件到test的log模块下,并记录log

1
rsync -avz  user@ip:/var/log   /test/log

请解释下Telnet和SSH的区别

1
2
3
Telnet:不安全,没有对传输的数据进行加密,容易被监听还有遭受中间人攻击,telnet不能压缩传输数据,所以传输慢;

ssh:对数据进行了RSA加密,安全性高,ssh传输数据是经过压缩的,所以数据传输速度比较快

从本机复制文件、文件夹到服务器并替换同名文件的写法有哪几种?

1
有两种:1.scp-r源文件路径目标文件ip:目标文件路径2.rsync-avr源文件路径目标文件ip:目标文件路径

FTP

如何修改ftp用户目录路径,以及修改时应当注意的事项?

1
2
3
登录Linux主机后,运行命令:”useradd ftpadmin -s /sbin/nologin “。该账户路径默认指向/home/ftpadmin目录;如果需要将用户指向其他目录,请运行命令:useradd ftpadmin -s /sbin/nologin –d /www(其他目录)

注意事项:权限等

ftp常用的两种模式

1
2
3
4
5
主动模式 
FTP客户端连接到FTP服务器的21端口,发送用户名和密码登录,登录成功后要list列表或者读取数据时,客户端随机开放一个端口(1024以上),发送 PORT命令到FTP服务器,告诉服务器客户端采用主动模式并开放端口;FTP服务器收到PORT主动模式命令和端口号后,通过服务器的20端口和客户端开放的端口连接,发送数据。

被动模式:
FTP客户端连接到FTP服务器的21端口,发送用户名和密码登录,登录成功后要list列表或者读取数据时,发送PASV命令到FTP服务器, 服务器在本地随机开放一个端口(1024以上),然后把开放的端口告诉客户端, 客户端再连接到服务器开放的端口进行数据传输,

配置一台匿名ftp服务,应该修改那个文件

1
/etc/vsftpd/vsftpd.conf

FTP传输中使用哪两个端口?

1
20  21

升级安装vsftpd

1
yum  upgrade vsftpd 

FTP单独修改某一个账户的配置?

1
2
3
4
user_config_dir=/etc/vsftpd/userconf		

#vim /etc/vsftpd/userconf/zhanghu
local_root=/zhanghu

我们都知道FTP协议有两种工作模式,说说他们的大概的一个工作流程?(简略回答)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
模式:主动模式(ActiveFTP)和被动模式(PassiveFTP)

1在主动模式下:FTP客户端随机开启一个大于1024的端口N,向服务器的21号端口发起连接,然后开放N+1号端口进行监听,并向服务器发出PORTN+1命令。服务器接收到命令后,会用其本地的FTP数据端口(通常是20)来连接客户端指定的端口N+1,进行数据传输。

客户端使用1024以上的端口连接服务器的21号端口,并且会事先开启一个1024+N的端口准备让服务器来连接,服务器得知客户端准备的端口后,用20号端口与客户端连接,创建数据链路时server端处于主动去连接客户端的状态固称为主动传输模式

2在被动模式下:FTP客户端随机开启一个大于1024的端口N,向服务器的21号端口发起连接,同时会开启N+1号端口。然后向服务器发送PASV命令,通知服务器自己处于被动模式。服务器收到命令后,会开放一个大于1024的端口P进行监听,然后用PORTP命令通知客户端,自己的数据端口是P。客户端收到命令后,会通过N+1号端口连接服务器的端口P,然后在两个端口之间进行数据传输。

客户端使用1024以上的端口连接服务器的21号端口,服务器接到连接请求后,开启一个1024+M的端口等待客户端来连接,再通知客户端这个等待连接的端口号是1024+M,客户端接到服务器端的信息后,开启新的一个1024+N的端口与1024+M进行连接,创建数据连接时,server端处于被客户端连接的状态,固称为被动传输模式

vsftp默认是根据客户端不同而使用不同模式,windows客户端则使用主动,linux客户端则使用被动

可以用pasv_enable=NO来强制使用主动

总的来说,主动模式的FTP是指服务器主动连接客户端的数据端口,被动模式的FTP是指服务器被动地等待客户端连接自己的数据端口。

被动模式的FTP通常用在处于防火墙之后的FTP客户访问外界FTp服务器的情况,因为在这种情况下,防火墙通常配置为不允许外界访问防火墙之后主机,而只允许由防

NFS

如何让nfs服务在运行状态5下开启而在其他运行级下关闭?

1
2
# chkconfig --level 5 nfs on
# chkconfig --level 1234 nfs off

AB网络是通的,最少列出三种传输文件服务?

1
scp rsync vsftpd

简述网络文件系统NFS,并说明其作用

1
2
3
(1)网络文件系统是应用层的一种应用服务,它主要应用于Linux系统之间的文件或目录的共享,现在也支持linux和window系统之间。
(2)对于用户而言可以通过 NFS方便的访问远地的文件系统,使之成为本地文件系统的一部分。
(3)采用NFS之后省去了登录的过程,方便了用户访问系统资源。

Crontab

使用crontab每两个小时执行/data/scripts/back.sh脚本的语句

1
2
crontab -e
0 */2 * * * /data/scripts/back.sh

解释下列含义:*/2 10 1 6 1 /usr/sbin/ntpdate ntp.api.bz

1
6月1号或周一的时候10点每隔两分钟 向ntp.api.bz 同步一次时间

如何实现每周一下午三点将/tmp/logs目录下后缀为*.log的所有文件打包成 ‘年月日-log-back.tar.gz’,并rsync同步到备份服务器192.168.1.100中同样的目录下面?

1
2
3
4
5
6
# vim /cron/task.sh
tar -cvzf /tmp/logs/*.log `date +%Y%m%d`-log-back.tar.gz
rsync -avR /tmp/logs/*.log root@192.168.1.100:/tmp/logs

# crontab -e
0 15 * * 1 /usr/bin/bash /cron/task.sh

linux系统在今晚23:00关机

1
# shutdown -h 23 :00

创建一个每周三1:00-4:00每三分钟执行一次的crontab指令。

1
2
# crontab -e  
3/* 1-4 * * 3 命令

有一个普通用户想在每日凌晨零点零分定期备份/user/backup到目录下,该用户应如何做?

1
0 24  * * *   cp  filename  /user/backup

请写出linux系统查看定时任务命令

1
crontab -l

Linux默认的定时任务,一般写入/etc/下的哪个文件?

1
/etc/crontab

凌晨1:59删除/bt目录下的全部子目录和子文件用crontab计划任务写

1
59 1 * * * rm -rf /bt/*

计划每星期天早上8点服务器定时重启,如何实现?

1
2
# crontab -e
0 8 * * 0 reboot

计划任务在11月份,每天早上6点到12点钟,每隔2小时执行一次/usr/bin/httpd.sh怎么实现?

1
0 06-12/2 * 11 * bash /usr/bin/httpd.sh

请写下Linux系统中cron定时任务,每天07至23点,每隔半小时执行apache重启

1
2
# crontab-e		
*/3 07-23 * * * systemctl restart httpd>/dev/null 2>&1

以下字段可能和哪个服务有关?表示什么意思?

1
*/5 * * * *  ping -c 100 www.wanmel.com >/root/network.log  2>&1

/var/www/html/是网站的发布目录,如何每天凌晨0点30分对其进行自动备份,每次备份按时间生成不同的备份包,写出操作步骤?

1
30 0 * * *  tar -zcf  `date +%Y%m%d`.html.tar.gz /var/www/html

计划每星期天早8点服务器定时重启,如何实现?

1
0 8 * * 7 reboot

每天中午12点使用tcpdump命令抓取目的端口为tcp80的1000个包输出到当前目录,以当前时间命名。请写出定时任务及脚本内容

1
2
3
4
0 12 * * *  bash tcpdump.sh		

# vim tcpdump.sh
tcpdump -c 1000 tcp dst port 80 -w ./`date+%Y%m%d`

DNS

系统中在/etc/resolv.conf配置dns服务器地址,但后期会被清除什么原因

1
2
可能是NetworkManager的原因
网卡配置文件的dns配置会覆盖resolve.conf文件内的内容

关于DNS,下列说法错误的是( C)
A、DNS,全称Domain Name System,即域名解析系统
B、DNS协议运行在UDP协议之上。
C、只有基于类Linux, Unix操作系统的服务器,才可以安装DNS服务器端软件
D、域名的最终指向是IP地址。

列举你所知道的域名解析记录类型

1
2
3
4
5
6
A记录     正向解析
PTR记录 反向解析
CNAME记录 别名
MX记录 邮件解析
NS记录 指定权威dns服务器地址
SOA记录 授权

简述DNS进行域名解析的过程。

1
2
3
4
5
6
7
8
1、当客户机提出查询请求时,首先在本地计算机的缓存中查找。如果在本地无法获得查询信息,则将查询请求发给DNS服务器。
2、首先客户机将域名查询请求发送到本地DNS服务器,当本地DNS服务器接到查询后,首先在该服务器管理的区域的记录中查找,如果找到该记录,则利用此记录进行解析;如果没有区域信息可以满足查询要求,服务器在本地的缓存中查找。
3、如果本地服务器不能在本地找到客户机查询的信息,将客户机请求发送到根域名DNS服务器。
4、根域名服务器负责解析客户机请求的根域部分,它将包含下一级域名信息的DNS服务器地址返回给客户机的DNS服务器地址。
5、客户机的DNS服务器利用根域名服务器解析的地址访问下一级DNS服务器,得到再下一级域我的DNS服务器地址。
6、按照上述递归方法逐级接近查询目标,最后在有目标域名的DNS服务器上找到相应IP地址信息。
7、客户机的本地DNS服务器将递归查询结果返回客户机。
8、客户机利用从本地DNS服务器查询得到的IP访问目标主机,就完成了一个解析过程。

简述DNS和DHCP的功能

1
2
DNS提供域名解析服务
DHCP提供动态ip分配

关于DNS服务器,叙述错误的是(C)

1
2
3
4
A、DNS服务器配置不需要配置客户端
B、建立某个分区的DNS服务器时只需要建立一个主DNS服务器
C、主DNS服务器需要启动named进程,而辅DNS服务器不需要
D、DNS服务器的root.cache文件包含了根名字服务器的有关信息

当内网内没有条件建立dns服务器,又不想用IP访同网站,应配置什么文件。(A)

1
2
3
4
A.hosts
B.sysconfig
C.network
D.hostname

DNS域名系统主要负责主机名和(A)之间的解析

1
2
3
4
A、IP地址 
B、MAC地址
C、网络游戏
D、主机别名

权威DNS和递归DNS、迭代DNS的不同

1
2
3
4
5
6
7
8
9
一、主机向本地域名服务器的查询一般都是采用递归查询。
所谓递归查询就是:如果主机所询问的本地域名服务器不知道被查询的域名的IP地址,那么本地域名服务器就以DNS客户的身份,向其它根域名服务器继续发出查询请求报文(即替主机继续查询),而不是让主机自己进行下一步查询。
因此,递归查询返回的查询结果或者是所要查询的IP地址,或者是报错,表示无法查询到所需的IP地址。

二、本地域名服务器向根域名服务器的查询的迭代查询。
迭代查询的特点:当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的IP地址,要么告诉本地服务器:“你下一步应当向哪一个域名服务器进行查询”。
然后让本地服务器进行后续的查询。根域名服务器通常是把自己知道的顶级域名服务器的IP地址告诉本地域名服务器,让本地域名服务器再向顶级域名服务器查询。
顶级域名服务器在收到本地域名服务器的查询请求后,要么给出所要查询的IP地址,要么告诉本地服务器下一步应当向哪一个权限域名服务器进行查询。
最后,知道了所要解析的IP地址或报错,然后把这个结果返回给发起查询的主机

Linux系统中DNS服务进程名为(A)

1
2
3
4
A、named
B、httpd
C、ftpd
D、SysLog

当用户在浏览器当中输入一个网站,说说DNS解释经过哪些流程?

1
2
3
4
5
6
7
a.用户输入网址到浏览器;
b.浏览器发出DNS请求信息;
c.计算机首先查询本机HOST文件,看是否存在,存在直接返回结果,不存在,继续下一步;
d.计算机按照本地DNS的顺序,向合法dns服务器查询IP结果;
e.合法dns返回dns结果给本地dns,本地dns并缓存本结果,直到TTL过期,才再次查询此结果;
f.返回IP结果给浏览器;
g.浏览器根据IP信息,获取页面;

当你在浏览器输入一个网址,如http://www.baidu.com,按回车之后发生了什么?请从技术角度描述,如浏览器、网络、服务器等各种参与对象由此引发的一系列活动,请尽说出可能涉及到所有的关键技术点。

1
2
3
4
我们输入一个域名: www.taobao.com ,浏览器查找浏览器缓存,如果有域名的 IP 地址则返回,如果没有继续查找;
系统查找系统缓存,如果有域名的 IP 地址则返回,如果没有继续查找;路由器查找路由器缓存,如果有域名的 IP 地址则返回,如果没有继续查找;本地域名服务器采用迭代查询,它先向一个根域名服务器查询;根域名服务器告诉本地域名服务器,下一次应查询的顶级域名服务器 dns.com 的 IP 地址;本地域名服务器向顶级域名服务器 dns.com 进行查询;
顶级域名服务器 dns.com 告诉本地域名服务器,下一次应查询的权限域名服务器 dns.taobao.com 的 IP 地址;本地域名服务器向权限域名服务器 dns.taobao.com 进行查询;权限域名服务器 dns.taobao.com 告诉本地域名服务器,所查询的主机 www.taobao.com 的 IP 地址;本地域名服务器最后把查询结果告诉主机;主机浏览器获取到 Web 服务器的 IP 地址后,与服务器建立 TCP 连接;浏览器所在的客户机向服务器发出连接请求报文; 服务器接收报文后,同意建立连接,向客户机发出确认报文,客户机接收到确认报文后,再次向服务器发出报文,确认已接收到确认报文;此处客户机与服务器之间的 TCP 连接建立完成,开始通信;浏览器发出取文件命令: GET ;服务器给出响应,将指定文件发送给浏览器;
浏览器释放 TCP 连接;浏览器所在主机向服务器发出连接释放报文,然后停止发送数据;服务器接收到释放报文后发出确认报文,然后将服务器上未传送完的数据发送完;服务器数据传输完毕后,向客户机发送连接释放报文;客户机接收到报文后,发出确认,然后等待一段时间后,释放 TCP 连接;浏览器显示页面中所有文本。

linux系统中DNS服务的进程名为?

1
2
3
软件名为:bind 
进程名为:named
启动服务:service named start

DNS服务器的特点

1
DNS服务器重新对配置了静态地址的客户端进行重新配置 

权威DNS和递归DNS、迭代DNS的不同?

1
2
3
递归解析”(或叫“递归查询”,其实意思是一样的)是最常见,也是默认的解析方式。在这种解析方式中,如果客户端配置的本地名称服务器不能解析的话,则后面的查询全由本地名称服务器代替DNS客户端进行查询,直到本地名称服务器从权威名称服务器得到了正确的解析结果,然后由本地名称服务器告诉DNS客户端查询的结果。

迭代DNS所有查询工作全部是DNS客户端自己进行(以“DNS客户端”自己为中心)。

我们都知道dns既采用了tcp协议,又采用了udp协议,什么时候采用tcp协议?什么时候采用udp协议?为什么要这么设计?

1
2
3
4
5
6
7
dns有两个情况,一种是区域传输,一种是域名解析
1.区域传输时,一个区中主DNS服务器从自己本机的数据文件中读取该区的DNS数据信息,而辅助DNS服务器则从区的主DNS服务器中读取该区的DNS数据信息,传输协议是tcp。问:tcp

2.域名解析时,首选的通讯协议是udp

使用udp传输,不用经过TCP三次握手,这样DNS服务器负载更低,响应更快
但是当域名解析的反馈报文的长度超过512字节时,将不能使用udp协议进行解析,此时必须使用tcp回:udp

当用户在浏览器当中输入一个网站,说说计算机对dns解释结果哪些流程?注:本机跟本地DNS还没有缓存

www.baidu.com.

1
2
3
4
5
6
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记录

1
2
3
4
5
6
7
8
9
10
11
非交互式
# nslookup -querytype=MX test.com

交互式
# nslookup
> set type=mx
> test.com

# host -t mx test.com
# dig -t mx test.com

DHCP

简要说明客户机使用DHCP获取IP地址的过程

1
2
3
4
5
1、终端以广播的形式向网络内广播DISCOVER发现报文,报文中携带相关的参数列表。
2、网络内的服务器,从可用地址池中分配一个ip地址给客户机,向这个地址广播offer报文,报文中携带终端请求的参数。
3、终端从响应offer的服务器中选择一个,并在request报文中携带选择的服务器的ip和服务器分配给自己的ip地址。并进行广播,把终端选择的地址和服务器通知网络内所有主机服务器。
4、网络内的服务器收到终端的request请求后,如果是终端选择的服务器,根据的是上面request报文中是否携带自身的信息,比如IP地址。则发送一个广播ACK,确定分配地址等信息;如果不是终端选择的服务,则不响应,并收回分配的地址到可用地址池中。
5、终端收到ack后就把ip地址等信息跟网卡绑定。

dhcp客户端是哪个地址来申请一个新的ip地址的?

1
2
3
dhcp客户端是使用广播地址来向全网发送广播包来寻找dhcp服务器的

源地址是0.0.0.0广播地址是:255.255.255.255客户端没有IP地址才需要申请,所以它只能用0.0.0.0来代替它的ip,向服务器端申请ip地址。

DHCP(动态主机配置协议)

1
2
3
4
5
主要目的是为了方便我们的主机IP地址的配置,如果网络中存在大量的主机时,可通过部署DHCP协议,由DHCP服务器分配可用地址给主机。

客户端启用了DHCP,开机后,它会发布一个的广播报文,广播报文经过网关时会带上相应标记,要使路由可达,当DHCP服务器收到这个报文后,DHCP服务器会根据报文标记,分配一个网关所在网段IP地址给客户端,如果所有客户端未划分网关,DHCP会在地址池内随机分配IP给客户端

地址池:在用户定义了DHCP范围及排除范围后,剩余的地址构成了一个地址池,地址池中的地址可以动态的分配给网络中的客户机使用。地址池仅对自动获取IP的方式有效,手动设置IP只要符合规则可无视此项。

数据库

MySql

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
如何校验mysql主从数据不一致?出现不一致时如何处理?
答:
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表中,可以查看这个库表得到详细的数据校验信息。

主从数据修复
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
以下分别是关于在 MySQL 的 InnoDB 中定位锁问题以及减少主从复制延迟的方法:
一、InnoDB 中定位锁问题
查看锁等待信息:通过查询INFORMATION_SCHEMA.INNODB_LOCK_WAITS表,可以获取当前正在等待锁的事务以及它们所等待的锁相关信息。例如:
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;

这个表会显示出等待锁的事务 ID(REQUESTING_TRX_ID)、持有锁的事务 ID(BLOCKING_TRX_ID)、等待的锁模式等关键信息,从而帮助确定哪些事务之间存在锁等待情况。

分析事务状态:查询INFORMATION_SCHEMA.INNODB_TRX表来查看当前正在运行的事务的详细状态。例如:

SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX;

可以了解到事务的启动时间、事务是否处于等待状态、正在执行的 SQL 语句等内容。如果某个事务的状态显示为等待,结合锁等待信息,就可以进一步分析是否是因为锁的原因导致该事务无法继续执行。

使用性能监控工具:MySQL 自带的性能监控工具如SHOW ENGINE INNODB STATUS命令,它会输出关于 InnoDB 存储引擎的详细状态信息,其中包含了有关锁的部分。例如:

SHOW ENGINE INNODB STATUS\G;

在输出内容中,会有专门关于锁的段落,描述了当前锁的总体情况,如锁的类型、数量、以及是否存在严重的锁冲突等,这有助于从宏观层面了解锁的状况并定位问题所在。

二、减少 MySQL 主从复制延迟的方法
优化网络环境:确保主从服务器之间有稳定、高速的网络连接。可以通过升级网络设备、增加网络带宽等方式来降低网络延迟和减少丢包情况。例如,将主从服务器部署在同一数据中心的高速网络区域内,或者使用专线网络进行连接。
定期监测网络性能,及时发现并解决网络故障,如网络中断、高延迟等问题,可使用网络监测工具如 Ping、Traceroute 等进行检测。
合理配置主从服务器:保证主从服务器的硬件配置均衡且足够强大。如果主服务器的处理能力远强于从服务器,可能会导致从服务器在处理大量同步数据时出现延迟。例如,确保从服务器的 CPU、内存、硬盘等硬件资源能够满足同步任务的需求。
配置相同的服务器参数,如字符集、存储引擎等,避免因参数差异导致的同步问题。同时,合理设置主从同步相关参数,比如根据业务需求选择合适的二进制日志格式(如 ROW 格式在很多情况下能更准确地同步数据但占用更多日志空间,需合理权衡),以及设置合理的同步线程参数(如适当提高从库 SQL 线程和 IO 线程的优先级)。
优化数据库操作:在主库上尽量减少大事务的执行。大事务会导致二进制日志文件变大,增加从库同步的时间和难度。可以将大事务拆分成多个小事务进行执行,这样能使从库更及时地同步数据。
避免在主库上进行复杂的、长时间运行的 SQL 操作,尤其是那些涉及到大量数据查询、更新等操作。如果不可避免,尽量安排在业务低谷期进行,以减少对主从同步的影响。
采用并行复制技术:启用 MySQL 的并行复制功能(从 MySQL 5.6 版本开始支持部分并行复制,5.7 及以后版本不断完善)。并行复制可以让从库同时处理多个事务的同步,而不是传统的一个接一个地处理,大大提高了从库同步的效率,从而有效减少复制延迟。例如,在配置文件中设置相关参数开启并行复制功能(具体参数设置因版本而异)。
及时处理从库积压事务:定期查看从库的同步状态,了解是否存在事务积压情况。如果发现从库的 SQL 线程或 IO 线程出现停滞或处理速度缓慢,导致事务积压,要及时采取措施。
可以通过重启相关线程(在确保安全的情况下)、优化从库的配置等方式来解决积压问题,使从库能够尽快跟上主库的同步进度。

MySQL创建数据库的命令,创建表的命令,插入语句的命令

1
2
3
create database dbname character set 'utf8';
create table tname(id int);
insert into tname values(1);

系统启动后,不能连接数据库,可能是哪些方面的原因?

1
2
3
配置错误
数据库未打开
数据库密码不对
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
已知表:
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;

数据库表和视图的区别?存储过程和函数的区别?

1
2
3
4
5
6
7
表 是真实存在的,它占内存空间
视图 是虚拟表,不存储数据,存储的是sql,检索他的时候实际上是执行定义它的sql语句,不占任何内存
存储过程在编译后可以生成执行计划,这使得每次执行存储过程的时候效率将会更高,这是存储过程,另外台提交参数的时候,使用存储过程将会减少网络带宽流量,这是存储过程相对于普通的sql语句在性能上的最大的优势
函数:只能返回一个变量的限制。而存储过程可以返回多个。
函数是可以嵌入在sql中使用的,可以在select中调用,而存储过程不行
执行的本质都一样。
函数限制比较多,比如不能用临时表,只能用表变量.还有一些函数都不可用等等.而存储过程的限制相对就比较少

简述drop, truncate, delete操作的异同( 假设delete不带where语句)

1
2
3
drop 彻底删除
truncate 清除表内容
delete 不加where 删除表内容 加where 指定条件

sql优化的过程

1
2
3
4
5
1.通过show status 了解各种SQL的执行频率
2.定位执行效率低的SQL语句
3.通过explain分析低效SQL执行计划
4.通过show profile分析SQL
5.通过trace分析优化器如何选择执行计划

表t1数据有1000w,求表t1中字段id的最大值和最小值,如何查询速度更快?

1
2
select max(id) from t1
select min(id) from t1

表t2中数据有1000w,其中tel字段创建了索引.找出所有137开头的手机号。

1
select * from t2 where left(tel,3) = '137';

分别写出Mysql, Sql serer,Oracle 数据库的客户端管理工具。

1
2
3
mysql:  mysql phpmyadmin
sql server: SSMS
oracle: oracle client

写出mysql数据库备份数据使用的命令

1
mysqldump

写出备份和恢复Oracle数据库的方法

1
Oracle数据库有三种常用的备份方法,分别是导出/导入(EXP/IMP)、热备份和冷备份。导出/导入备份是一种逻辑备份,相对于导出/导入来说,热备份、冷备份是一种物理备份。

要清空一个几百万数据的表A里的数据,通常我们用的SQL语句为?

1
2
delete from a
truncate table a

从A表中查询出字段B等于1的集合总数,通常我们用的SQL语句为?

1
select count(*) from a where b = 1;

MySQL创建数据库的命令,创建表的命令,插入语句的命令

1
2
3
create database dbname character set 'utf8';
create table tname(id int);
insert into tname values(1);

如何做服务器的安全、容灾、以数据库为例

1
2
3
1、每天定时备份数据库
2、mysql按需求进行主从复制、主主复制、读写分离等保证数据即时备份
3、利用keepalived等工具使数据库进行高可用

请详细描述mysql主从复制原理

1
2
3
4
5
6
主节点:
开启二进制日志,主库上的数据更改(DDL DML DCL)记录到二进制日志(Binary Log)中。
dump线程:读取主库二进制日志事件用来响应从库的请求
从节点:
I/O 线程 :从master 请求二进制日志事件,并保存于中继日志中
SQL thread: 从中继日志中读取日志事件,在本地完成重放

mysql一主多从,主库宕机,如何合理切换到从库,其他的从库有如何处理

1
2
3
4
5
6
7
8
9
10
11
1、首先停业务
2、查看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 则表示从库都同步完成了。
3、所有从库执行show slave status\G;
对比所有从库的Relay_Master_Log_File,Exec_Master_Log_Pos两个参数的值,数值最大的作为新的主库,如果所有从库的值都相同,都没有落后于主库,选择哪个从库都可以做为新主库.
4、选好准主库后,执行stop slave;reset slave ;reset master;
5、在准主库上用户授权,其他从库上change master指向主库,配置主从复制。

请举一个生产中你实际遇到网站打开慢由于访问mysql数据库慢导致的

1
2
3
4
5
6
7
8
9
一次调用后台数据特别慢,经查询是mysql前期插入数据未加上有效的索引
检查 :首先show full processlist 查看数据库中的线程是否有都是有用的线程或者是否有线程卡住,经检查是一个查询语句的线程时间过长。
explain select *** 语句,发现该查询语句查询的是原始数据,没找索引。
最初发现直接插入索引,执行一个小时没反应,并且会导致锁表。
解决:
导出原表数据
创建新表与原表结构保持一致,在该表上执行alter语句添加索引;
将表数据导入创建的新表;
修改新建的表名为原表名。

mysql通过()作为媒介来实现主从数据同步

1
二进制日志

是否有数据库维护工作,列出高可用方案,备份及还原方案

1
2
备份:每天定时用mysqldumo 备份数据库
高可用 :keepalived + mysql主从,当主库宕掉后,会有脚本将从库只读改为读写并将其提升为主库,保证服务的不中断。

写出mysql备份Db_test,Db_test2这两个库命令

1
mysqldump -uroot -proot --databases Db_test,Db_test2 >/tmp/user.sql

写出mysql更改root用户密码命令

1
set password for root@localhost = password('新密码'); 

mysql给新用户newuser赋予select\insert\delete 权限访问new_test库,只允许192.168.0.0/24网段访问,然后回收delete权限。

1
2
grant select,insert,delete ON new_test to newuser@‘192.168.0.*’;
revoke delete ON new_test to newuser@‘192.168.0.*’;

mysql数据库有每日备份和binlog,简述恢复数据库到指定时间的思路。

1
2
3
4
查看位置点
mysqlbinlog查看详细位置
mysqlbinlog 命令把截取的pos点导出sql语句:eg:mysqlbinlog --start-position=214 --stop-position=1257 /data/3307/mysql-bin.000006 > /tmp/binlog.sql
source sql语句

mysql数据库如何实现读写分离

1
2
1、可以在配置文件中设置一台mysql 只读,另一台可以读写
2、利用软件mycat实现

在mysql客户端查询中,如何获取当前所有连接的进程信息。

1
show full processlist;

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

1
2
3
4
5
6
7
8
9
10
11
1、show engine  innode status ;查看锁问题
2、使用多台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的执行效率

架构上实行读写分离等;

mysql实现级联同步,需要修改那些参数?

1
2
log-bin
servier-id

mysql如何查看某一用户的权限?

1
show grants for  user@“”

如何定位执行时间过长的sql语句?

1
2
1、开启慢日志
2、show full processlist ; 通过state time command 查看连接时间超长的进程

mysql如何查看正在执行的查询语句?

1
show full processlist ; 通过command、state列 查看

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
1、show engine  innode status ;查看锁问题

2、使用多台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的执行效率

架构上实行读写分离,半同步等;

如何产看mysql当前支持的存储引擎?

1
mysql> show engines;

系统启动后,不能连接数据库,可能是哪方面的原因?

1
2
3
4
5
1、检查数据库是否启动

2、检查数据库是否正常可以被连接

3、检查磁盘是否正常

写出备份恢复mysql中gpower数据库的命令

1
2
3
备份:mysqldump  -u root -p  pass      gpower >  gpower.sql

恢复:进库 mysql > source gpower.sql

mysql索引 调优 索引对性能的影响 建立五个索引和六个的区别 索引实现原理 索引的数据结构
39、mysql表分区 mysql数据量超过1000w怎么实现性能优化(加缓存,分表分库)

79. 如何用mysql命令进行备份和恢复?以test库为例,创建一个备份,并再用此备份恢复备份:

mysqldump-u用户名-p’123’-Btest>/mysql_backup/date+%F-%H-mysql-test.sql

备份之后可用mysqlbinlog查看:#mysqlbinlog/mysql_backup/2018-09-26-20-mysql-test.sql

恢复:mysql-uroot-p’123’-Dtest</mysql_backup/2018-09-26-20-mysql-test.sql

80. MySQL:主从复制集群,高可用,具体配置,关系型数据库原则,怎么在集群中实现分库分>表,锁机制

主从复制集群:

1、mysql主

①开启二进制文件:#vim/etc/my.cnf(写入如下内容)

[mysqld] log_bin server-id=1 gtid_mode=ON enforce_gtid_consistency=1

②重启服务:#systemctlrestartmysqld

③进入数据库,为从服务器授权

#mysql-uroot-p’123’

mysql>grantreplicationslave,replicationclienton*.*to‘rep‘@’IP或网段’identifiedby’123’;

mysql>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

③重启服务:#systemctlrestartmysqld ④再次测试rep用户是否可用:#mysql-h’mysql主IP’-urep-p’123’ ⑤从设备上设置主服务

mysql>changemastertomaster_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

⑤测试及诊断

关系型数据库原则:ACID(注:数据库事务通常指对数据库进行读或写的一个操作序列)

1、A(Atomicity)原子性是说事务里的所有操作要么全部做完,要么都不做,事务成功的条件是事务里的所有操作都成功,只要有一个操作失败,整个事务就失败,需要回滚。

2、C(Consistency)一致性是说数据库要一直处于一致的状态,事务的运行不会改变数据库原本的一致性约束。如完整性约束a存款+b存款=2000。

3、I(Isolation)隔离性是指并发的事务之间不会互相影响,如果一个事务要访问的数据正在被另外一个事务修改,只要另外一个事务未提交,它所访问的数据就不受未提交事务的影响。

4、D(Durability)持久性是指一旦事务提交后,它所做的修改将会永久的保存在数据库上,即使出现宕机也不会丢失

分库:垂直拆分:按照业务垂直划分,将系统中不存在关联关系或者需要join的表可以放在不同的数据库不同的服务器中

84. 水平拆分:按照规则划分,一般水平分库是在垂直分库之后的。比如每天处理的订单数量是海量的,可以按照一定的规则水平划分

85. 读写分离:对于时效性不高的数据,可以通过读写分离缓解数据库压力

86. 分表:指将一张表按一定的规则分解成N个具有独立存储空间的实体表。

87. 常见的分表策略:1.Range(范围)2.Hash(哈希)3.按照时间拆分4.Hash之后按照分表个数取模5.在认证库中保存数据库配置,就是建立一个DB,这个DB单独保存user_id到DB的映射关系

88. 锁机制:用于保护数据的完整性,当并发事务同时访问一个资源时,有可能导致数据不一致,因此需要一种机制来将数据访问顺序化,以保证数据库数据的一致性,锁是其中的一种。

89. 请写MYSQL数据库中的SQL查询,查找customer表中uid列内大于100的记录并以uid排序,正序输出前10条记录

select * from customer where uid>100 order by uid asc limit 10;

90. 使用sql语句创建、删除数据库db_test?查询数据库列表的sql语句

创建:mysql>createdatabasedb_test;

查询:mysql>usedb_test;

mysql>showtables;

mysql>select*from表名;查内容

删除:mysql>dropdatabasedb_test;

91. 如何实现对Mysql数据库进行分库加分表备份,请用脚本实现

#!/bin/bash

user=root

pass=test

database=mysql-u$user-p"$pass"-e"showdatabases;"|sed1d|grep-v'schema'

mkdir/mysql_backup

mysql-u$user-p”$pass”-e”showdatabases;”&>/dev/null

if[$?-ne0];then

read-p”Mysqldonotrunning,startit?(yes/no):”choice

if[[“$choice”-eq”yes”]];then

systemctlstartmysqld&>/dev/null

else

echo-e”\033[31m请开启mysql服务,以过滤库、表\033[0m”

exit2

else

echo-e”\033[33m==================backupstart=====================\033[0m”

foriin$database

do

tables=mysql-u$user-p"$pass"-e"use$i;showtables;"|sed1d

forjin$tables

do

mysqldump-u$user-p”$pass”-B–databases$i–tables$j>/mysql_backup/${i}-${j}-date+%F.sql

[$?-eq0]&&echo$i-$jok>>/mysql_backup/table.log||echo$i-$jfailed>>/mysql_backup/table.log

[$?-eq0]&&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”

92. 如何监控MySQL主从同步是否异常?

#!/bin/bash

#Date:2018-9-27

#Author:zz(1608843551@qq.com)

#version1.0

whiletrue

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]}”-ne0];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

sleep60

done

93. 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>grantallondaxiang.*todaxiang@‘192.168.96.0/24‘identifiedby‘daxiang@123’withgrantoption;

94. 数据库用于事务回滚和提交的SQL语句分别是___ROLLBACK________,COMMIT_____________。

95. 创建表空间neuspace,数据文件命名为neudata.dbf,存放在d:\data目录下,文件大小为200MB设为自动增长,增量5MB,文>件最大为500MB的SQL为_____________________。

createtablespaceneuspacedatafile‘d:\data\neudata.dbf’size200mautoextendonnext5mmaxsize500m

96. SQL语言支持数据库三级模式结构,在SQL中外模式、模式对应于_基本表全体_,内模式对应于_存储文件或数据文件_____

97. 简述数据库中索引的用法及原理

索引在mysql中也叫键,是存储引擎用于快速找到记录的一种数据结构

用法:与查阅图书是一个道理:先定位到章,然后定位到章下的一个小节,再定位到页。

原理:通过不断地缩小想要获取数据的范围来筛选出最终想要的结果,同时把随机的事件变成顺序的事件。

98. 请写出数据库事务的ACID特性并简述唯一(UNIQUE)约束和主键(PRIMARYKEY)约束的异同点

每个表可以有多个UNIQUE约束,而只能有一个PRIMARYKEY

主键:PRIMARYKEY

约束唯一标识数据库表中的每条记录

主键必须包含唯一的值;主键不能包含NULL值

每个表都应该有一个主键,并且每个表只能有一个主键

唯一:UNIQUE

约束唯一标识数据库表中的每条记录

UNIQUE和PRIMARYKEY约束均为列或列集合提供了唯一性的保证。

PRIMARYKEY约束拥有自动定义的UNIQUE约束。

99. 解释冷备份和热备份的不同点以及各自的优点

热备份针对归档模式的数据库,再数据库仍旧处于工作状态时进行备份。而冷备份指数据库关闭后进行备份,适用于所有数据库。

不同点:

热备份:备份时数据库仍旧处于运行状态

冷备份:备份时数据处于关闭状态

优点:

热备份:在备份时,数据库仍可以使用并且可以将数据库恢复到任意一个时间点

冷备份:它的备份和恢复操作相当简单,并且冷备份可以工作在非归档模式下,数据库性能会比归档模式稍好

100. 列举三种表连接算法以及各自高性能的场景

三种连接算法:①嵌套循环连接 ②合并连接 ③Hash连接

嵌套循环连接:通常在小数据量并且语句比较简单的场景中使用

合并连接:在SQL数据库中,如果查询优化器,发现要连接的两张对象表,在连接上都已经排序并包含索引,那么优化器将会极大

可能选择“合并”连接策略。条件是:两个表都是排序的,并且两个表连接条件中至少有一个等号连接,查询分析器会去选择合并连接

Hash连接:当我们尝试将两张数据量较大,没有排序和索引的两张表进行连接时,SQLServer的查询优化器会尝试使用HashJoin

101. Mysql客户端工具中,请问如何让查询当前所有的连接进程信息

showprocesslist;

102. mysql主从,主库宕机,主从切换步骤?

主机故障或者宕机:

在salve执行:

stopslave;

resetmaster;

103. 查看是否只读模式:showvariableslike’read_only’;

104. 只读模式需要修改my.cnf文件,注释read-only=1并重启mysql服务。

105. 或者不重启使用命令关闭只读,但下次重启后失效:setglobalread_only=off;

查看showslavestatus\G;

查看showmasterstatus\G;

106. 将从库IP地址改为主库IP地址,测试应用连接是否正常。

正常切换

1、检查slave同步状态

在开始切换之前先对主库进行锁表:

flushtableswithreadlock

flushdata

切换完成后可以释放锁

2、在master执行:showprocesslist;

3、在slave执行:showprocesslist;

检查IO及SQL线程是否正常,如果为NO表明同步不一致,需要重新将slave同步保持主从数据一致。

4、停止slaveio线程

在slave执行:mysql>STOPSLAVEIO_THREAD

mysql>SHOWPROCESSLIST;

确保状态为:hasreadallrelaylog

以上都执行完成后可以把slave提升为master:

5、提升slave为master

Stopslave;

Resetmaster;

Resetslaveall;在5.6.3版本之后

Resetslave;在5.6.3版本之前

查看slave是否只读模式:showvariableslike’read_only’;

只读模式需要修改my.cnf文件,注释read-only=1并重启mysql服务。

或者不重启使用命令关闭只读,但下次重启后失效:setglobalread_only=off;

6、将原来master变为slave

在新的master上创建同步用户:

grantreplicationslaveon*.*repl@’IPofslave’identifiedby’replpwd’;

在新的slave上重置binlog:

Resetmaster;

changemastertomaster_host=’192.168.0.104’,//Master服务器Ip

master_port=3306,

master_user=’repl’,

master_password=’replpwd’,

master_log_file=’master-bin.000001’,//Master服务器产生的日志

master_log_pos=?;//masterbinlogpos

以上最后两步可以在master执行:showmasterstatus

启动slave:startslave;并查看slave状态:showslavestatus\G;

107. 如何让校验主从数据不一致?出现不一致时如何处理?

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重换进换出,影响其他数据的缓存;

108. MySQLbinlog的几种日志录入格式以及区别

(1)binlog的日志格式的种类和分别

(2)适用场景

(3)结合第一个问题,每一种日志格式在复制中的优劣

109. 三种日志格式:StatementMiXEDROW

1.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)会出现问题).

2.Row:不记录sql语句上下文相关信息,仅保存哪条记录被修改。

优点:binlog中可以不记录执行的sql语句的上下文相关的信息,仅需要记录那一条记录被修改成什么了。所以rowlevel的日志内容会非常清楚的记录下每一行数据修改的细节。而且不会出现某些特定情况下的存储过程,或function,以及trigger的调用和触发无法被正确复制的问题

缺点:所有的执行的语句当记录到日志中的时候,都将以每行记录的修改来记录,这样可能会产生大量的日志内容,比如一条update语句,修改多条记录,则binlog中每一条修改都会有记录,这样造成binlog日志量会很大,特别是当执行altertable之类的语句的时候,由于表结构修改,每条记录都发生改变,那么该表每一条记录都会记录到日志中。

3.Mixedlevel:是以上两种level的混合使用,一般的语句修改使用statment格式保存binlog,如一些函数,statement无法完成主从复制的操作,则采用row格式保存binlog,MySQL会根据执行的每一条具体的sql语句来区分对待记录的日志形式,也就是在Statement和Row之间选择一种.新版本的MySQL中队rowlevel模式也被做了优化,并不是所有的修改都会以rowlevel来记录,像遇到表结构变更的时候就会以statement模式来记录。至于update或者delete等修改数据的语句,还是会记录所有行的变更。

https://blog.csdn.net/vhomes/article/details/8082734

110. MySQL数据库cpu飙升到500%的话他怎么处理?

(1)多实例的服务器,先top查看是那一个进程,哪个端口占用CPU多;

(2)showprocesseslist查看是否由于大量并发,锁引起的负载问题;

(3)否则,查看慢查询,找出执行时间长的sql;explain分析sql是否走索引,sql优化;

(4)再查看是否缓存失效引起,需要查看buffer命中率;

111. 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

112. 请写下命令在MYSQL数据库中检查当前从库的同步状态,然后将同步配置修改为binlog文件”mysql-bin.000001”,偏移量为”4”。

检查状态:

mysql>showslavestatus

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密码

113. 如何用mysql命令进程备份和恢复?以test库为例,创建一个备份,并再用此备份进行恢复

备份:

mysqldump-uroot-p密码test>备份文件.sql

恢复: mysql-uroot-p密码<备份文件.sql

Mysql创建数据库的命令,创建表的命令,插入语句的命令?

创建库的命令: createdatabase库名;

创建表的命令: createtable表名;

插入表的语句: insertinto表名(记录); 数据库中有一个6亿的表a,一个3亿的表b,通过外键tid进行关联。

114. 你如何最快的查询出:满足条件的第50000到第50200中的这200条数据记录?

select*froma,bwherea.tid=b.tidanda.tidBETWEEN50000AND50200;

115. 对于数据库备份正确的做法是什么?

同时使用多个备份设备,使得备份可以同时写入所有设备。同样,也可以同时从多个设备还原备份。

使用数据库备份、差异数据库备份和事务日志备份的组合,使得将数据库恢复到故障点所用的备份数量减到最少

使用文件和文件组备份以及事务日志备份,使得可以只备份或还原那些包含相关数据的文件,而不用备份整个数据库。

使用快照备份将备份和还原时间减到最少。

有如下表的结构:

​ emp员工表(empno员工号/ename员工姓名/job工作/mgr上级编号/hiredate受雇日期

/sal薪金/comm佣金/deptno部门编号)

dept部门表(deptno部门编号/dname部门名称/loc地点)

建表语句为:

​ CREATETABLEDEPT–部门表

​ (DEPTNOintCONSTRAINTPKDEPTPRIMARYKEY,–部门编号

​ DNAMEVARCHAR(14),–部门名称

​ LOCVARCHAR(13) –所在地点

​ );

​ CREATETABLEEMP –员工表

​ (EMPNOintCONSTRAINTPKEMPPRIMARYKEY, –员工号

​ ENAMEVARCHAR(10), –员工姓名

​ JOBVARCHAR(9), –工作

​ MGRint, –上级编号

​ HIREDATEDATE, –受雇日期

​ SALfloat , –薪金

​ COMMfloat, –佣金

​ DEPTNOintCONSTRAINTFKDEPTNOREFERENCESDEPT –部门编号

​ );

​ 完成下面的SQL语句:

116. 1.列出至少有一个员工的所有部门

selectdistinctEMP.DEPTNO,DEPT.DNAMEfromEMP,DEPTwhereEMP.DEPTNO=DEPT.DEPTNO

2.列出所有员工的姓名及其上级的姓名

selectename,(selectenamefromempwhereempnoin(emp.mgr))fromemp;

3.列出受雇日期晚于其直接上级的所有员工

selectempno,enamefromempawherehiredate>(selecthiredatefromempwhereempno=a.mgr);

4.列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门

selectdname,emp.*fromdept,empwheredept.deptno=emp.deptno;

5.列出薪金高于公司平均薪金的所有员工

selectempnofromempwheresal>(avg(sal));

6.列出与“SCOTT”从事相同工作的所有员工

selectenamefromempwherejob=(selectjobformempwhereename=SCOTT)andenamenotin(SCOTT);

7.列出所有员工的姓名、部门名称和工资

selectename,dname,(sal+nvl(comm,0))fromemp,deptwhereemp.deptno=dept.deptno

8.列出薪金高于在部门30工作的所有员工的薪金的员工姓名和薪金

select*fromempwheresal>all(selectsalfromempwheredeptno=30);

9.列出所有部门的详细信息(包括部门表的所有字段)和部门人数

selectfromdeptaleftjoin(selectdeptno,count()fromempgroupbydeptno)bona.deptno=b.deptno;

10.列出各种工作的最低工资

selectjobmin(sal+nvl(comm,0))fromempgroupbyjob

117. 事务有几大特性?分别代表什么意思?

事务的四种隔离级别

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,因此是一种异步的方式。通过showengineinnodbstatus\G来观察之间的差距

118. 为100G的MySQL的数据库制定备份计划,简述mysqldump以及xtranbackup的实现

原理

(1)备份计划:

(2)xtrabackup实现原理

mysqldump属于逻辑备份。加入–single-transaction选项可以进行一致性备份。后台进程会先设置session的事务隔离级别为RR(SETSESSIONTRANSACTIONISOLATIONLEVELREPEATABLEREAD),之后显式开启一个事务(STARTTRANSACTION/!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要快。一般是选择一周一个全备,其余每天进行增量备份,备份时间为业务低峰期。

备份恢复时间:物理备份恢复快,逻辑备份恢复慢

备份恢复失败如何处理

1
首先在恢复之前就应该做足准备工作,避免恢复的时候出错。比如说备份之后的有效性检查、权限检查、空间检查等。如果万一报错,再根据报错的提示来进行相应的调整。

Mysql的复制原理以及流程,简述基本原理流程,3个线程以及之间的关联

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
mysql主从复制原理:

从库有两个线程IO线程和SQL线程

1.从库的IO线程向主库的主进程发送请求,主库验证从库,交给主库IO线程负责数据传输;

2.主库IO线程对比从库发送过来的master.info里的信息,将binlog文件信息,偏移量和binlog文件名等发送给从库

3.从库接收到信息后,将binlog信息保存到relay-bin中,同时更新master.info的偏移量和binlog文件名

4.从库的SQL线程不断的读取relay-bin的信息,同时将读到的偏移量和文件名写道relay-log.info文件,binlog信息写进自己的数据库,一次同步操作完成。

5.完成上次同步后,从库IO线程不断的向主库IO线程要binlog信息

6.从库如果也要做主库,也要打开log_bin和log-slave-update参数

配置读写mysql主从复制的步骤

1
2
3
4
5
6
7
8
9
10
11
1.在主库与从库都安装mysql数据库

2.在主库的配置文件(/etc/my.cnf)中配置server-id和log-bin

3.在登陆主库后创建认证用户并做授权。

4.在从库的配置文件(/etc/my.cnf)中配置server-id

5.登陆从库后,指定master并开启同步开关。

需要注意的是server-id主从库的配置是不一样的。

Server-id存在作用:

1
2
3
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不能再创建一个线程而保留原来的线程,那样同步就可能有问题;

MySQL中myisam与innodb的区别

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
(1)不同点有哪些?

1>.InnoDB支持事物,而MyISAM不支持事物 2>.InnoDB支持行级锁,而MyISAM支持表级锁

3>.InnoDB支持MVCC,而MyISAM不支持 4>.InnoDB支持外键,而MyISAM不支持

5>.InnoDB不支持全文索引,而MyISAM支持。

1、存储结构

MyISAM:每个MyISAM在磁盘上存储成三个文件。第一个文件的名字以表的名字开始,扩展名指出文件类型。.frm文件存储表定义。数据文件的扩展名为.MYD(MYData)。索引文件的扩展名是.MYI(MYIndex)

InnoDB:所有的表都保存在同一个数据文件中(也可能是多个文件,或者是独立的表空间文件),InnoDB表的大小只受限于操作系统文件的大小,一般为2GB。

2、存储空间

MyISAM:可被压缩,存储空间较小。支持三种不同的存储格式:静态表(默认,但是注意数据末尾不能有空格,会被去掉)、动态表、压缩表。

InnoDB:需要更多的内存和存储,它会在主内存中建立其专用的缓冲池用于高速缓冲数据和索引。

3、可移植性、备份及恢复

MyISAM:数据是以文件的形式存储,所以在跨平台的数据转移中会很方便。在备份和恢复时可单独针对某个表进行操作。

InnoDB:免费的方案可以是拷贝数据文件、备份binlog,或者用mysqldump,在数据量达到几十G的时候就相对痛苦了。

4、事务支持

MyISAM:强调的是性能,每次查询具有原子性,其执行数度比InnoDB类型更快,但是不提供事务支持。

InnoDB:提供事务支持事务,外部键等高级数据库功能。具有事务(commit)、回滚(rollback)和崩溃修复能力(crashrecoverycapabilities)的事务安全(transaction-safe(ACIDcompliant))型表。

5、AUTO_INCREMENT

MyISAM:可以和其他字段一起建立联合索引。引擎的自动增长列必须是索引,如果是组合索引,自动增长可以不是第一列,他可以根据前面几列进行排序后递增。

InnoDB:InnoDB中必须包含只有该字段的索引。引擎的自动增长列必须是索引,如果是组合索引也必须是组合索引的第一列。

6、表锁差异

MyISAM:只支持表级锁,用户在操作myisam表时,select,update,delete,insert语句都会给表自动加锁,如果加锁以后的表满足insert并发的情况下,可以在表的尾部插入新的数据。

InnoDB:支持事务和行级锁,是innodb的最大特色。行锁大幅度提高了多用户并发操作的新能。但是InnoDB的行锁,只是在WHERE的主键是有效的,非主键的WHERE都会锁全表的。

7、全文索引

MyISAM:支持FULLTEXT类型的全文索引

InnoDB:不支持FULLTEXT类型的全文索引,但是innodb可以使用sphinx插件支持全文索引,并且效果更好。

8、表主键
MyISAM:允许没有任何索引和主键的表存在,索引都是保存行的地址。

InnoDB:如果没有设定主键或者非空唯一索引,就会自动生成一个6字节的主键(用户不可见),数据是主索引的一部分,附加索引保存的是主索引的值。

9、表的具体行数
MyISAM:保存有表的总行数,如果selectcount(*)fromtable;会直接取出出该值。

InnoDB:没有保存表的总行数,如果使用selectcount(*)fromtable;就会遍历整个表,消耗相当大,但是在加了wehre条件后,myisam和innodb处理的方式都一样。

10、CURD操作

MyISAM:如果执行大量的SELECT,MyISAM是更好的选择。

InnoDB:如果你的数据执行大量的INSERT或UPDATE,出于性能方面的考虑,应该使用InnoDB表。DELETE从性能上InnoDB更优,但DELETEFROMtable时,InnoDB不会重新建立表,而是一行一行的删除,在innodb上如果要清空保存有大量数据的表,最好使用truncatetable这个命令。

11、外键
MyISAM:不支持

InnoDB:支持

(2)两种引擎者selectcount(*)哪个更快,为什么?

innodb引擎的表在使用selectcount的时候,如果表的总行数在1-2万条以内,速度应该不是瓶颈,但是一旦超过了这个值,随着行数的增多,selectcount查询效率会迅速的下降。

测试表大约4.3万行

Myisam引擎:

SELECTSQL_NO_CACHECOUNT(*)FROM`roundmember2`

耗费105微秒

innodb引擎:

耗费10335微秒

可以看出innodb引擎耗时是myisam引擎的98倍!这还是仅仅是4万多行的数据下测试的差距,随着记录行的增加,这个差距会越来越大。

MyISAM会保存表的总行数,这段代码在MyISAM存储引擎中执行,MyISAM只要简单地读出保存好的行数即可。因此,如果表中没有使用事务之类的操作,这是最好的优化方案。然而,innodb表不像myisam有个内置的计数器,InnoDB存储引擎不会保存表的具体行数,因此,在InnoDB存储引擎中执行这段代码,InnoDB要扫描一遍整个表来计算有多少行。

http://www.piaoyi.org/database/MySQL-INNODB-SELECT-COUNT.html

MySQL中varchar与char的区别以及varchar(50)中的50代表的涵义

1
2
3
4
5
6
7
8
9
10
11
(1)varchar与char的区别

CHAR(char):固定长度,最多255个字符 VARCHAR(varchar):固定长度,最多65535个字符

CHAR的长度是固定的 VARCHAR长度是可以变化的

固定与可变是针对存储介质(硬盘)来说的

(2)varchar(50)中50的涵义 ----- 设置表里的最多字符是50

(3)int(9)中9的涵义 ----- 设置表里整数的最多数字是9个字节

mysqldump中备份出来的sql,如果我想sql文件中,一行只有一个insert…value()的话,怎么办?如果备份需要带上master的复制点信息怎么办?

1
2
1).--skip-extended-insert      
2).--master-date=1

mysql的架构,怎么保证它的安全性

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
1、避免从互联网访问MySQL数据库,确保特定主机才拥有访问特权       
2、禁用或限制远程访问
3、定期备份数据库
4、设置root用户的口令并改变其登录名
5、移除测试(test)数据库
6、禁用LOCALINFILE
7、移除匿名账户和废弃的账户
8、降低系统特权
9、降低用户的数据库特权
10、移除和禁用.mysql_history文件
11、保持数据库为最新稳定版本,因为攻击者可以利用上一个版本的已知漏洞来访问企业的数据库。
12、启用日志
13、改变root目
14、禁用LOCALINFILE命令
http://dev.yesky.com/429/35432929.shtml

Redis

你配置过哪些redis的参数,作用是什么?

1
2
3
4
5
6
port 6379  Redis默认监听端口
指定日志输出的文件名,可设为/dev/null屏蔽日志 logfile ""
保存数据到disk的策略:900 秒有 1 条改变保存到disk save 900 1
300 秒有 10 条改变保存到disk save 300 10
60 秒有 10000 条改变保存到disk save 60 10000
本地数据库存放路径,默认值为 ./ dir ./

redis有几种高可用方案,每个方案的优缺点

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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、降低运维成本,提高系统的扩展性和可用性。

redis的备份方式,有没有做过redis集群

1
2
3
RDB(RedisDataBase)是在不同的时间点,将redis存储的数据生成快照并存储到磁盘等介质上;

AOF(AppendOnlyFile)则是换了一个角度来实现持久化,那就是将redis执行过的所有写指令(每秒钟)记录在日志中,在下次redis重新启动时,只要把这些写指令从前到后再重复执行一遍,就可以实现数据恢复了。

redis有几种持久化存储化的方式?工作原理?两者是否能够共存?

1
2
3
4
5
6
7
8
9
有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写入到磁盘的时机。

可以共存

redis两种存储的文件格式 rdb /aof

redis主从集群的配置 AB / mysql-cluster / galera

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
主从配置

master: bind0.0.0.0//监控本地所有网卡IP protected-modeno

客户端连到服务器查看复制信息:

>inforeplication slave1: bind0.0.0.0

slaveofmaster_ipmaster_port//修改master_ip和port protected-modeno

客户端连到服务器查看复制信息:

>inforeplication slave2: bind0.0.0.0 slaveofmaster_ipmaster_port protected-modeno

客户端连到服务器查看复制信息:

>inforeplication

--------------------

哨兵模式:1主2从做好最少3台机器

配置哨兵模式:

每台机器上修改redis主配置文件设置:bind0.0.0.0

每台机器上修改sentinel.conf配置文件:添加如下配置

sentinelmonitormymaster10.0.0.13763791 sentineldown-after-millisecondsmymaster3000

sentinelfailover-timeoutmymaster10000 protected-modeno

每台机器启动服务:

#./src/redis-sentinelsentinel.conf 注意:每台机器的防火墙

配置解析:

sentinelmonitormymaster10.0.0.13763792

这一行代表sentinel监控的master的名字叫做mymaster,地址为10.0.0.137,行尾最后的一个2代表什么意思呢?我们知道,网络是不可靠的,有时候一个sentinel会因为网络堵塞而误以为一个masterredis已经死掉了,当sentinel集群式,解决这个问题的方法就变得很简单,只需要多个sentinel互相沟通来确认某个master是否真的死了,这个2代表,当集群中有2个sentinel认为master死了时,才能真正认为该master已经不可用了。(sentinel集群中各个sentinel也有互相通信,通过gossip协议)。

sentineldown-after-millisecondsmymaster3000

sentinel会向master发送心跳PING来确认master是否存活,如果master在“一定时间范围”内不回应PONG或者是回复了一个错误消息,那么这个sentinel会主观地(单方面地)认为这个master已经不可用了(subjectivelydown,也简称为SDOWN)。而这个down-after-milliseconds就是用来指定这个“一定时间范围”的,单位是毫秒。

1、什么是redis?

redis是一个高性能的key-value数据库,它是完全开源免费的,而且redis是一个NOSQL类型数据库,是为了解决高并发、高扩展,大数据存储等一系列的问题而产生的数据库解决方案,是一个非关系型的数据库。

2、Reids的特点

Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保存。因为是纯内存操作,Redis的性能非常出色,每秒可以处理超过 10万次读写操作,是已知性能最快的Key-Value DB。

Redis的出色之处不仅仅是性能,Redis最大的魅力是支持保存多种数据结构,此外单个value的最大限制是1GB,不像 memcached只能保存1MB的数据,因此Redis可以用来实现很多有用的功能,比方说用他的List来做FIFO双向链表,实现一个轻量级的高性 能消息队列服务,用他的Set可以做高性能的tag系统等等。另外Redis也可以对存入的Key-Value设置expire时间,因此也可以被当作一 个功能加强版的memcached来用。

Redis的主要缺点是数据库容量受到物理内存的限制,不能用作海量数据的高性能读写,因此Redis适合的场景主要局限在较小数据量的高性能操作和运算上。

3、使用redis有哪些好处?

1)速度快,因为数据存在内存中,不需要读取硬盘

2)支持丰富数据类型,支持string,list,set,sorted set,hash

4、redis相比memcached有哪些优势?

1)memcached所有的值均是简单的字符串,redis作为其替代者,支持更为丰富的数据类型

2)redis的速度比memcached快很多

3)redis可以持久化其数据

4、Memcache与Redis的区别都有哪些?

1)存储方式 Memecache把数据全部存在内存之中,断电后会挂掉,数据不能超过内存大小。Redis有部份存在硬盘上,这样能保证数据的持久性。

2)数据支持类型 Memcache对数据类型支持相对简单。Redis有复杂的数据类型。

3)使用底层模型不同 它们之间底层实现方式 以及与客户端之间通信的应用协议不一样。Redis直接自己构建了VM 机制 ,因为一般的系统调用系统函数的话,会浪费一定的时间去移动和请求。

5、redis常见性能问题和解决方案

1)Master写内存快照,save命令调度rdbSave函数,会阻塞主线程的工作,当快照比较大时对性能影响是非常大的,会间断性暂停服务,所以Master最好不要写内存快照。

2)Master AOF持久化,如果不重写AOF文件,这个持久化方式对性能的影响是最小的,但是AOF文件会不断增大,AOF文件过大会影响Master重启的恢复速度。Master最好不要做任何持久化工作,包括内存快照和AOF日志文件,特别是不要启用内存快照做持久

化,如果数据比较关键,某个Slave开启AOF备份数据,策略为每秒同步一次。

3)Master调用BGREWRITEAOF重写AOF文件,AOF在重写的时候会占大量的CPU和内存资源,导致服务load过高,出现短暂服务暂停现象。

4)Redis主从复制的性能问题,为了主从复制的速度和连接的稳定性,Slave和Master最好在同一个局域网内。

6、redis的并发竞争问题如何解决?

Redis为单进程单线程模式,采用队列模式将并发访问变为串行访问。Redis本身没有锁的概念,Redis对于多个客户端连接并不存在竞争,但是在Jedis客户端对Redis进行并发访问时会发生连接超时、数据转换错误、阻塞、客户端关闭连接等问题,这些问题均是

由于客户端连接混乱造成。对此有2种解决方法:

1)客户端角度,为保证每个客户端间正常有序与Redis进行通信,对连接进行池化,同时对客户端读写Redis操作采用内部锁synchronized。

2)服务器角度,利用setnx实现锁。注:对于第一种,需要应用程序自己处理资源的同步,可以使用的方法比较通俗,可以使用synchronized也可以使用lock;第二种需要用到Redis的setnx命令,但是需要注意一些问题。

假如Redis里面有1亿个key,其中有10w个key是以某个固定的已知的前缀开头的,如果将它们全部找出来?

使用keys指令可以扫出指定模式的key列表。

*对方接着追问:如果这个redis正在给线上的业务提供服务,那使用keys指令会有什么问题?*

因为redis是单线程的。keys指令会导致线程阻塞一段时间,线上服务会停顿,直到指令执行完毕,服务才能恢复。这个时候可以使用scan指令,scan指令可以无阻塞的提取出指定模式的key列表,但是会有一定的重复概率,在客户端做一次去重就可以了,但是整体所花费的时间会比直接用keys指令长。

使用过Redis做异步队列么,你是怎么用的?

一般使用list结构作为队列,rpush生产消息,lpop消费消息。当lpop没有消息的时候,要适当sleep一会再重试。

*对方追问可不可以不用sleep呢?*

ist还有个指令叫blpop,在没有消息的时候,它会阻塞住直到消息到来。

*对方追问能不能生产一次消费多次呢?*

使用pub/sub主题订阅者模式,可以实现1:N的消息队列。

*对方追问pub/sub有什么缺点?*

在消费者下线的情况下,生产的消息会丢失,得使用专业的消息队列如rabbitmq等。

*对方追问redis如何实现延时队列?*

使用sortedset,拿时间戳作为score,消息内容作为key调用zadd来生产消息,消费者用zrangebyscore指令获取N秒之前的数据轮询进行处理。

如果有大量的key需要设置同一时间过期,一般需要注意什么?

如果大量的key过期时间设置的过于集中,到过期的那个时间点,redis可能会出现短暂的卡顿现象。一般需要在时间上加一个随机值,使得过期时间分散一些。

Redis如何做持久化的?

bgsave做镜像全量持久化,aof做增量持久化。因为bgsave会耗费较长时间,不够实时,在停机的时候会导致大量丢失数据,所以需要aof来配合使用。在redis实例重启时,会使用bgsave持久化文件重新构建内存,再使用aof重放近期的操作指令来实现完整恢复重启之前的状态。

*对方追问那如果突然机器掉电会怎样?*

取决于aof日志sync属性的配置,如果不要求性能,在每条写指令时都sync一下磁盘,就不会丢失数据。但是在高性能的要求下每次都sync是不现实的,一般都使用定时sync,比如1s1次,这个时候最多就会丢失1s的数据。

*对方追问bgsave的原理是什么?*

给出两个词汇就可以了,fork和cow。

fork是指redis通过创建子进程来进行bgsave操作,cow指的是copy on write,子进程创建后,父子进程共享数据段,父进程继续提供读写服务,写脏的页面数据会逐渐和子进程分离开来。

Redis的同步机制了解么?

Redis可以使用主从同步,从从同步。第一次同步时,主节点做一次bgsave,并同时将后续修改操作记录到内存buffer,待完成后将rdb文件全量同步到复制节点,复制节点接受完成后将rdb镜像加载到内存。加载完成后,再通知主节点将期间修改的操作记录同步到复制节点进行重放就完成了同步过程。

是否使用过Redis集群,集群的原理是什么?

Redis Sentinal着眼于高可用,在master宕机时会自动将slave提升为master,继续提供服务。

Redis Cluster着眼于扩展性,在单个redis内存不足时,使用Cluster进行分片存储。

MongoDB

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

root@localhostbin]#./mongoexport-dmy_mongodb-cuser-ouser.dat

connectedto:127.0.0.1

exported2records

[root@localhostbin]# catuser.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”

脚本

在ADMIN管理机上,并发查看APP1和APP2两台主机内存使用情况

列出/etc/init.d/file文件中包含save字段的行

1
cat /etc/init.d/file |grep save

查看文件最后10行内容

1
tail

实时查看日志文件

1
tali -f

针对Linux6、7系统简述常用运维或自动运维巡检的shell、python脚本。

查看内存使用率,CPU负载,I/O,磁盘使用率及这台服务器上的应用监控以Nginx为列查看其端口是否开启

批量修改文件或目录权限最好的办法是什么?

编写一个并发执行查询的shell执行文件exec_sql.sh,有以下要求:第一、实现脚本输入两个参数,第一个参数为存储sql语句的文件(可能存储1000条查询,语句之间用分号隔开),第二个参数为最大并发度,

1
例如:./exec_sql.sh./sql1000.sql8	第二、要求所有语句执行完脚本才可以退出	第三、记录开始时间、结束时间、每条语句的执行结果重定向到一个文件	第四、使用sqlplus命令行工具执行所需查询语句

现有a和b两个文件,将a和b文件的内容输出到c文件里,按要求写入到c文件里.

1
2
3
4
5
6
7
8
9
10
11
12
1
a
2
b
3
c

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

现有两个文件里面分别有3行内容,现将两个文件里面的内容放到第三个文件里,要求是交叉放到两个文件里,一条命令如何解决?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
一个比较粗糙的答案:

#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{printa,"\n"d,"\n"b,"\n"e,"\n"c,"\n"f}'a.txtb.txtaaa

111

bbb

222

ccc 333

用数组处理:

#awk'{a[NR]=$0}END{printa[1]"\n"a[4]"\n"a[2]"\n"a[5]"\n"a[3]"\n"a[6]}'a.txtb.txt

Aaa 111 bbb 222 ccc 333

查看http并发请求数及连接状态的命令关键字分别是

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[root@web1~]#netstat-nt

ActiveInternetconnections(w/oservers)

ProtoRecv-QSend-QLocalAddressForeignAddressState

tcp0010.18.45.108:8010.18.45.47:63136SYN_RECV tcp05210.18.45.108:2210.18.45.47:52455ESTABLISHED

tcp60010.18.45.108:8010.18.45.47:63133ESTABLISHED tcp60010.18.45.108:8010.18.45.47:63135ESTABLISHED

netstat-nt|awk'/^tcp/{++S[$NF]}END{for(ainS)printS[a],a}'

1SYN_RECV 3ESTABLISHED 2TIME_WAIT SYN_RECV表示正在等待处理的请求数;ESTABLISHED表示正常数据传输状态;TIME_WAIT表示处理完毕,等待超时结束的请求数。

状态:描述

  CLOSED:无连接是活动的或正在进行 LISTEN:服务器在等待进入呼叫 SYN_RECV:一个连接请求已经到达,等待确认 SYN_SENT:应用已经开始,打开一个连接 ESTABLISHED:正常数据传输状态 FIN_WAIT1:应用说它已经完成

FIN_WAIT2:另一边已同意释放 ITMED_WAIT:等待所有分组死掉 CLOSING:两边同时尝试关闭 TIME_WAIT:另一边已初始化一个释放 LAST_ACK:等待所有分组死掉

Linux系统统计服务器服务连接数命令?

1
2
3
4
5
netstat-n|awk'/^tcp/{++S[$NF]}END{for(ainS)printa,S[a]}'

或是

netstat-nat|grepESTABLISHED|wc-l

每五分钟ping www.wanmel.com 100次,将错误和正确的输出覆盖到/root/network.log

1

linux系统中如何获取pid为1000的进程所监听的tcp端口,请写出详细命令?

1
ss -anpt|grep 1000|awk '{print $4}'|awk -F":"  '{print $2}'

请使用awk,sed,grep三个命令,举例写出命令语句

1
2
3
awk -F':' '{print $1}' filename
sed -i.bak 's/a/A/' filename
grep 'hello world' filename

使用sed将文件file.txt中test替换为abc.com写出命令

1
sed -i  's/test/abc.com/g' file.txt

写一个脚本查找最后创建时间是3天前,后缀是*.log的文件并删除。

1
2
# vim t.sh
find / -name '*.log' -and -mtime +3 -exec rm -rf {} \;

通过访问日志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

1
awk '{print $1}' access.log | sort |uniq -c |sort -r

下列对shell 变量 FRUIT 操作,正确的是:(C)
A. 为变量赋值: $FRUIT=apple
B. 显示变量的值: FRUIT=apple
C. 显示变量的值: echo $FRUIT
D. 判断变量是否有值:[ -f ‘$FRUIT’ ]

写出输出数字0到100中3的倍数(0 3 6 9…) 的命令?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
for i in {1..100}
do
if [ $[i % 3] -eq 0 ];then
echo $i
fi
done

# for i in {3..10..3}; do echo $i; done
3
6
9

# for i in `seq 3 3 10`; do echo $i; done
3
6
9

Linux系统统计务器服务连接数命令?

1
2
本题答案以tcp连接数为例
# netstat -an|awk '/tcp/ {print $6}'|sort|uniq -c

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

1
2
3
4
5
6
7
8
9
#!/bin/bash
#description: useradd
for i in seq 1 20
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

2、请试着写出一个杀死进程http的shell脚本

1
2
3
4
5
pid=`pgrep httpd`
for i in $pid
do
kill -9 $i
done

3、请利用shell开发一个rsync服务的启动停止脚本并通过chkconfig进行开关机管理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
说明:

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 脚本

4、写一个脚本,实现判断192.168.1.0/24网络里,当前在线的ip有哪些。

1
2
3
4
5
6
7
8
9
10
11
12
13
#!/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

5、列举你所熟悉的脚本语言,并选一种脚本语言编写一个脚本解决你所遇到的问题。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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

6、写shell实现输出top10的IP地址

1
2
3
4
#!/bin/bash 

cat url.log | sort | uniq -c |sort -n -r -k 1 -t ' ' | awk -F '//' '{print $2}' | head -10 > ip10.txt

7、写一个脚本将数据库备份并打包至远程服务器192.169.1.1/backup目录下

1
2
3
#!/bin/bash 
/opt/mysql/bin/mysqldump -uroot -p***** -R --routines --events --triggers 库名 >/mysqlbackup/库名+日期.sql
scp /mysqlbackup/库名+日期.sql 129.169.1.1:/backup

8、你公司中将/var/www/html/data的文件,定期备份到192.168.90.11(centos系统)下的/var/backup下目录,请用简单的shell实现。

1
2
crontab -e 
scp /var/www/html/data 192.168.90.11/var/backup

9、如何监控某个网站最近1天的访问ip及其访问量,并对单日单个ip访问量超过10000次的ip进行报警

1
2
3
4
5
6
7
8
#!/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

10、只写一个命令,修改/tmp/input.txt文件内容要求:

删除所有空行

如果一行中包含‘11111’ ,则在前面插入‘AAA’,在后面插入‘BBB’如: 000AAA1111111BBB2222.

1
2
1、sed -ri '/^[ \t]*$/d'  /tmp/input.txt
2、sed -ri s/1111/AAA&/;s/1111/&BBB/' /tmp/input.txt

11、在bash shell 中 $0,$1,$?,$#,$*,$@分别代表什么?

1
2
3
4
5
6
7
8
       $0    脚本名
$1 第一个参数
$* 所有的参数
$@ 所有的参数
$# 参数的个数
$$ 当前进程的PID
$! 上一个后台进程的PID
$? 上一个命令的返回值 0表示成功

12、

1
正则表达式^d+[^d]+ 能匹配下列哪个字符:
1
2
3
4
5
12
dd12s
d123
d12d
答:d12d

13、在shell中变量的赋值有四种方法,其中name=12的方法称?

直接赋值

14、写一个脚本(shell、python)实现nginx日志按天分割,并将前一天的日志进行压缩,总共保留10天的备份?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/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 {} \;

15、一个bash shell脚本的第一行是什么?

1
命令解释器

16、批量检查多个网站地址是否正常?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#!/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

17、grep -E ‘[Hh]enr(y|ietta)’ file 的功能是?

1
匹配file中  Henry   Henrietta    henry  henrietta

18、文件A.txt内容为‘12:34:56’ ,只输出A.txt中的34

1
awk  -F":"  '{print $2}'   A.txt 

19、用sed修改test.txt的23行test为tset

1
sed –i ‘23s/test/tset/g’ test.txt

/usr/local/nginx/bin/nginx

怎么样不打开文件 删掉空格和注释

63.Linux shell中单引号,双引号及不加引号的简单区别

单引强引硬引取消引号内特殊字符的意义

双引弱引软引取消部分引号内特殊字符的意义让多个以空格为分隔符的字符串形成一个整体字符串

64.** 如何实现对MySQL数据库进行分库逻辑备份,请用脚本实现

Mysqldump

#vim mysqldump.sh

mysqldump -u root -p‘QianFeng@123’

\ -A–single-transaction\

–routines–triggers–master-data=2\ –flush-logs\ >/backup/date+%F-%H-mysql-all.sql

65. 设计一个shell程序,每5分钟执行一次获取当前服务器的基本情况(内存使用率,CPU负载,I/O,磁盘使用率),保存到120.20.20.20数据库上数据库帐号aaa密码bbb库名test表名host,表结构自行设计

#crontab -e

*/5 * * * * bash /serverstatus.sh

mysql -h 120.20.20.20 -u aaa -p ‘bbb’ -e’createtest.host(cipanvarchar(20),memvarchar(20),loadaver1varchar(20),loadaver2varchar(20),loadaver3varchar(20),ioaveragevarchar(20))’ #vim/serverstatus.sh

1mem_used=free-m|awk'NR==2{print$3}' 2mem_total=free-m|awk'NR==2{print$2}'

3a=df-Th|awk'NR==2{print$6}'|awk-F%'{print$1}' 4mem_average=$((mem_used*100/mem_total))

5load_average1=uptime|awk-F':|+|,''{print$(NF-4)}' 6load_average1=uptime|awk-F':|+|,''{print$(NF-2)}'

7load_average1=uptime|awk-F':|+|,''{print$(NF)}' 8io_average=iostat-x|awk'NR==4{print$4}'

9mysql-h120.20.20.20-uaaa-p’bbb’-e’insetintotest.hostvalues($a,$mem_average,$mem_average1,$mem_average2,$load_average3,$io_average)’

66. 写一个脚本,实现tomcat的web服务监控

监控tomcat的开启和关闭;或是端口8005,8009; http与tomcat连接是8080端口;与nginx是不需要端口

1.可以写脚本+计划任务2.可以使用nagios 3.可以使用zabbix在agent的配置文件内定义key: #vim/etc/zabbix/zabbix_agentd.conf

UserParameter=tomcat_port[*]:/tomcat_monitor.sh$ 编写脚本:

#vim/tomcat_monitor.sh

if[$1-eq8080];then lsof-i:8080 return$? elif[$1-eq8005];then lsof-i:8005

return$? else return8 fi

67. 写一个脚本实现nginx服务的管理

文件锁:编译安装时需要写此脚本;笔记上有答案5nginx安装7小步设置开机启动

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#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 -s QUIT $(cat $PIDF);;
restart)
$0 stop
$0 start;;
reload)
kill -s HUP $(cat$PIDF);;
*)
echo "Usage:$0{start|stop|restart|reload}"
exit 1
esac
exit 0
# chmod +x /etc/init.d/nginx
# chkconfig --add nginx

很重要:写一个防火墙配置脚本,只允许远程主机访问本机的80端口

1
2
3
# vim iptables.sh

Iptables -t filte r-I INPUT -p tcp! --dport80 -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-execrm{};

70. 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目录下。(最少写一个循环)

1
2
3
4
5
6
7
8
9
10
11
#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

71. 请使用awk、sed、grep三个命令,请举写出命令语句。

grep‘root’/etc/passwd sed-ri‘/SELINUX=/cSELINUX=disabled’/etc/selinux/conf

cat/etc/passwd|awk‘NR==1{print$1}’

72. 请用shell脚本实现:批量添加5个用户,用户名为:user1-5,密码为:user名+3个随机字符

For I in{1..5} ;do ;useradduser$i ;suijishu=opensslrand-hex2|sed-r"s/(...)(.)/\1:\2/g"|awk-F:'{print$1}'

echouser$i$suijishu|passwd–stdinuser$i ;done

73. 请说出以下符号在bashshell中的意义:

$0、$n、$#、$?、$*、$$、$(#aa)

$0当前读取内容$n位置变量$#参数个数上一语句的返回值$$pid$*所有参数

74. 请用自己熟悉的脚本语言,快速替换notic服务下config.properties配置文件中所有变量值为jdbc.username,jdbc.password的值为blue和pass1234

sed-ri‘s/jdbc.username/blue/g’config.properties

sedri‘s/jdbc.password/pass1234/g’config.properties

echo”ABCDEFGabtdefg”|sed-is/c/t/g这条命令是否正确?如若正确会显示什么结果?

在系统中添加100个用户,用户名为user001到user100

请使用脚本实现批量创建10个系统账号sj_user01-sj_user10并设置密码(密码为随机8位字符串)

在shell编程时,使用方括号表示测试条件的规则是?

用shell写一段启动脚本服务

编写shell脚本,能够生成32位随机密码

计算1加到100的值

75. 统计/var/log下文件(非目录)的个数

Find /var/log -type f | wc-l

76. 统计出yum安装的apache的访问日志access_log中访问量最多的5个IP

1
# cat /var/log/httpd/access_log | awk ‘{ips[$1]++} END{for(i in ips){print $i ips[i]}}’ | sort -rn -k2 | head -5 ssss

77. 编写SHELL脚本,查找linux系统下以txt结尾,30天没有修改的文件大小大于20K同时具有执行权限的文件并备份到/data/backup/目录下,某一天没有文件在/data/backup下生产一个当时日志的文件,内容为”缺失文件”.

PYTHON

给出程序运行结果

defextendList(val,list=[]):

​ list.append(val)

​ returnlist

list1=extendList(10)

list2=extendList(123,[])

list3=extendList(‘a’)

print”list1=%s”%list1

print”list2=%s”%list2

print”list3=%s”%list3

实现用户输入用户名和密码,当用户名为yes或ok且密码为123时,显示登陆成功,否则登陆失败,失败时允许重复输入三次

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
foriinrange(3):

u=input("user>:")

p=input("pwd>:")

ifu=="yg"oru=="sk"andp=="123":

print("登陆成功")

break

else:

print("登陆失败")

如何查看Linux系统每个IP的连接数

1
netstat-n|awk'/^tcp/{print$5}'|awk-F:'{print$1}'|sort|uniq-c|sort-rn

修改oracle环境变量/etc/profile文件并使之生效的命令。

1
2
3
#vi   /etc/profile 
定义oracle 环境变量
#source /etc/profile

在给定文件中查找与设定条件相符字符串的命令为( 1 )

1
2
3
4
1.grep
2.gzip
3.find
4.sort

进行字符串查找,使用什么命令?

1
2
3
4
字符串查找工具很多,常见的有
grep
sed
awk

Python

简述一下,以下语句的意思?

foriinrange(1,5): forjinrange(1,5): forkinrange(1,5): if(i!=k)and(i!=j)and(j!=k): printi,j,k

函数原型:range(start,end,scan):参数含义:start:计数从start开始。默认是从0开始。

例如:range(1, 5) 是[1, 2, 3, 4]没有5

①②③ :表示有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数

程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列。

从数据结构角度看,堆栈和队列都是线性表,堆栈的特性 队列是先进先出, 堆栈是先进后出 。

队列的特性先进先出。

面向对象的主要特征:封装 、继承、多态。

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’)

高级服务

Web

进程和线程的区别

1
2
3
线程:线程来源与进程  线程模式需要事先开启进程  线程模式并发量高

进程:进程稳定性高;线程稳定性低 进程独占内存;线程共享进程的内存 一个进程可以有多个线程;

查看WEB服务器当前的连接数、并发数、进程数。

1
netstat -n|grep  ^tcp|awk '{print $NF}'|sort -nr|uniq -c   

简述当用户输入login.lanxin.cn到这个页面显示在浏览器上,这个过程中都发生了?

1
2
3
1.浏览器输入域名回车	2.查询本地的DNS缓存,以找到域名对应的主机IP地址,如果本地没有	3.查询远程域名根DNS,找到IP地址	4.查询到后,向远程IP地址的服务器发送请求	5.服务器响应请求,向用户发送数据

6.浏览器对返回的数据进行处理(浏览器渲染) 7.显示

请简述C/S、B/S的含义。

1
2
3
C/S表示客户端/服务器的模式C是client,S是server。c/s中需要另外开发客户端程序

B/S表示浏览器/服务器的模式B是browser,S是server。b/s是基于浏览器来实现的。

描述lvs,nginx负载均衡的五种调度算法

1
rr wrr dh sh lc

Apache如何修改配置参数,将默认端口改为非默认端口

1
2
vim /etc/httpd/conf/httpd.conf
Listen port

如何实现nginx代理的节点访问日志记录客户的ip而不是代理的ip

1
2
修改nignx负载均衡器的/usr/local/nginx/conf/nginx.conf;
在location / 添加 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

linux系统nginxphp环境,发现php-fpm进程高,请说明可能原因以及如何解决

1
2
3
1)php的插件程序与现有的PHP版本存在不兼容情况,解决方法从php.ini中禁止相关插件
2)php程序存在死循环现象,使用服务器负载过高,解决方法使用top命令查看
3)php-fpm服务池开启了太多子进程,通过配置 pm.max_children 属性,控制php-fpm子进程数量

Nginx禁止访问test目录

1
2
3
location =/test{
return 404;
}

如何实现系统接入层nginx灰度发布?

1
2
3
nginx 做反向代理+负载均衡  

如果是内部IP,则反向代理到预发布环境;如果不是则反向代理到生产环境。

列出你常用的nginx模块,用来做什么

1
2
3
4
5
6
7
8
9
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模块 :做防盗链的模块,

Tomcat调整JVM内存大小需要修改那些配置文件

1
2
3
4
在catalina.sh文件中,找到cygwin=false,在这一行的前面加入参数,具体如下
# vi TOMCAT_HOME/bin/catalina.sh
JAVA_OPTS="-server -Xms800m -Xmx800m -XX:PermSize=256m -XX:MaxPermSize=512m -XX:MaxNewSize=512m"

Tomcat服务器配置为2核4G,CATALINA.OUT日志目前6.2G,我们需要打开文件并搜索一些关键词,并分析上下文。用什么命令查看比较合适,为什么?

1
vi  catalina.out    进入后  /关键词

tomcat jvm内存参数,在物理内存充足的情况下,是否越大越好,为什么?

1
2
 不是,1、如果系统上不止有tomcat,那么会影响其他服务的运行
 2、tomcat得GC垃圾回收机制

优化tomcat你会如何操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
一、有富余物理内存的情况,加大tomcat使用的jvm的内存

二、服务器资源
  服务器所能提供CPU、内存、硬盘的性能对处理能力有决定性影响。
  (1) 对于高并发情况下会有大量的运算,那么CPU的速度会直接影响到处理速度。
  (2) 内存在大量数据处理的情况下,将会有较大的内存容量需求,可以用-Xmx -Xms -XX:MaxPermSize等参数对内存不同功能块进行划分。我们之前就遇到过内存分配不足,导致虚拟机一直处于full GC,从而导致处理能力严重下降。
  (3) 硬盘主要问题就是读写性能,当大量文件进行读写时,磁盘极容易成为性能瓶颈。最好的办法还是利用下面提到的缓存。

三、利用缓存和压缩
  对于静态页面最好是能够缓存起来,这样就不必每次从磁盘上读。这里我们采用了Nginx作为缓存服务器,将图片、css、js文件都进行了缓存,有效的减少了后端tomcat的访问。
  另外,为了能加快网络传输速度,开启gzip压缩也是必不可少的。但考虑到tomcat已经需要处理很多东西了,所以把这个压缩的工作就交给前端的Nginx来完成。
  除了文本可以用gzip压缩,其实很多图片也可以用图像处理工具预先进行压缩,找到一个平衡点可以让画质损失很小而文件可以减小很多。曾经我就见过一个图片从300多kb压缩到几十kb,自己几乎看不出来区别。

四、采用集群
  单个服务器性能总是有限的,最好的办法自然是实现横向扩展,那么组建tomcat集群是有效提升性能的手段。我们还是采用了Nginx来作为请求分流的服务器,后端多个tomcat共享session来协同工作。

五、 优化tomcat参数
  这里以tomcat7的参数配置为例,需要修改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"
URIEncoding="UTF-8" />

Http的错误代码含义(404、410、504、502)?

1
2
3
4
5
6
7
404(未找到)服务器找不到请求的网页。

410(已删除)如果请求的资源已永久删除,服务器就会返回此响应。

504(网关超时)服务器作为网关或代理,但是没有及时从上游服务器收到请求。

502(错误网关)服务器作为网关或代理,从上游服务器收到无效响应。

apache如何修改配置参数,将默认端口改为非默认端口。

如何改变Apache端口:

找到Apache安装目录下conf目录下的httpd.conf文件。打开它,找到“Listen”,紧接着Listen的数字就是端口号,默认状态下为“Listen80”。在之前的PHP专题中提到过关于在安装配置Apache时会遇到端口与IISHTTP端口冲突的问题,因为IISHTTP端口默认也为80。那么我们就可以在这里改变Apache的端口,从而避免冲突,比如可以改成:Listen8011。改好之后别忘重起Apache服务使得配置生效。

vim /etc/httpd/conf/httpd.conf

apache有几种工作模式,分别介绍下其特点,并说明什么情况下采用不同的工作模式?

apache有三种工作模式:分别是prefork,worker和event

1.prefork:是一种进程、与派生的工作模式,用的是进程去处理请求,所以比较容易消耗内存,但是稳定性好,某个进程出现问题不会影响到其他请求。要求稳定的时候使用

2.worker:是使用多个子进程、每个子进程有多个线程、由于使用的是线程去处理请求,消耗内存小,适合高流量的请求,但是如果某个进程出现问题,那么这个进程下的线程都会出现问题,即稳定性不是很好。这种模式不能php要测试一下在访问量多的时候使用

3.event模式:是为解决keep-alive保持长连接出现的一种工作模式,使用keep-alive长连接的时候,某个线程会一直被占用,即使中间没有请求,需要等到超时才会被释放,所以这个时候就出现了event的工作模式就出现了。在event工作模式中,会有一些专门的线程用来管理这些keep-alive类型的线程,当有真实请求过来的时候,将请求传递给服务器的线程,执行完毕后,又允许它释放。这增强了在高并发场景下的请求处理。另外,event模式是不支持用在https上的。

46. apache的工作模式,如何执行php代码

进程模式prefork 线程模式work 事件模式event 安装apache的php模块libphp5.so apache做代理—-后端服务器安装php-fpm

47. 进程和线程的区别?

线程:线程来源与进程,线程模式需要事先开启 线程模式并发量高 相对与进程模式来说没有进程模式稳定 共享内存 不支持php

进程:进程稳定性高;线程稳定性低 进程独占内存;线程共享进程的内存一个进程可以有多个线程;

133. 请简单描述nginx与php-fpm的两种连接方式及其优缺点

nginx服务器和php-fpm可以通过端口和unixsocket两种方式实现

tcpsocket的优点是可以跨服务器,当nginx和php-fpm不在同一台机器上时,只能使用这种方式

TCP是使用TCP端口连接127.0.0.1:9000Socket是使用unixdomainsocket连接套接字/dev/shm/php-cgi.sock

请写下命令检查nginx的当前配置文件,然后平滑重启

nginx-t-c指定配置文件

kill-HUP住进称号或进程号文件路径

134. nginx如何配置能够获取用户的真实ip?

当多层代理或使用CDN时,如果代理服务器不把用户的真实IP传递下去,那么业务服务器将永远不可能获取到用户的真实IP

nginx反向代理及cdn:•proxy_set_headerHost$http_host;

proxy_set_headerX-Real-IP$remote_addr;针对首层代理

proxy_set_headerX-Forwarded-F$proxy_add_x_forwarded_for;针对非首层代理

使用nginx自带模块realip获取用户IP地址:nginxrealip_module模块需要在编译nginx的时候加上参数–with-http_realip_module

#setuserrealiptoremoteaddr

set_real_ip_fromip段或地址

set_real_ip_fromip段或地址

real_ip_headerX-Forwarded-For;

real_ip_recursiveon;

需要知道所有CDN节点的ip地址或者ip段

135. 下面nginx配置文件中的一段配置,请写出输出结果,并说明为什么?

location/test{

set $a 32;

echo $a;

set $a 56;

echo $a;

}

理论:输出3256实际:nginx配置文件不识别echo命令服务起不来

客户端发起请求,需要Web代理服务器根据请求(GET和POST)的参数代理到不同的后端服务器,请选择Web代理软件并简述实现的过程?

我们是用nginx做的代理软件

只需在nginx的location块下配置相应请求的路由

列如:location/{

root/usr/share/nginx/html;

indexindex.htmlindex.htm;

if($request_uri~*.html$){

proxy_passhttp://htmlserver;

}

再在nginx的相应子配置文件中配置upstream

如:upstreamhtmlserver{

server192.168.122.10;

server192.168.122.20;

}

编写nginx rewrite规则,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=$1last;

}

136. 线上访问的WEB页面出现504,如何处理?

504表示超时,也就是客户端所发出的请求没有到达网关,请求没有到可以执行的php-fpm。

与nginx.conf的配置也有关系

fastcgi_connect_timeout60 fastcgi_send_timeout60

fastcgi_read_timeout60

设置更久的nginx连接超时时间

nginx遇到盗链怎么解决的,Nginx的几种算法,反向代理,跨网访问

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_namestianyun.google.~.baidu.;

if($invalid_referer){

return403;

#rewrite.*http://qfcloud.top/403.jpg;

}

}

Nginx的几种算法:

轮询、ip_hash、weight、fair(第三方)、url_hash(第三方)

反向代理:笔记

跨域访问:

add_header’Access-Control-Allow-Origin’’*’;

add_header’Access-Control-Allow-Credentials’’true’;

nginx怎么控制一个ip访问的次数?

请求数限制模块:

Syntax: limit_req_zonekeyzone=name:sizerate=rate;

Default:p

​ —

Context:http

列子:limit_req_zone$binary_remote_addrzone=allips:10mrate=20r/s;

链接数限制模块:

Syntax: limit_conn_zonekeyzone=name:size;

Default:p

​ —

Context:http

137. nginx:实现负载均衡和反向代理,503,502,504报错从哪几个方面去考虑

使用nginx代理,而后端服务器发生故障;或者php-cgi进程数不够用;php执行时间长,或者是php-cgi进程死掉;已经执行fastCGI使用情况等都会导致502、504错误

502:调整php-fpm.conf的相关设置进程数不够max_children增加request_terminate_timeout也可以相应增加

503:用limit_conn_zone和limit_req指令配合使用来达到限制。一旦并发连接超过指定数量,就会返回503错误

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_passhttp://phpb:80/;

​ }

​ if($request_uri^~/login){

​ proxy_passhttp://phpa:8080/;

​ }

​ }

145.** 您用过的几种中间件/Web应用服务器软件产品,各是什么?

中间件:php:php-fpmphp-mysqlphp-gdphp-cli

jsp:Tomcat,Resin,JBOSS,WebSphere(IBM),Weblogic(Oracle)

Web应用服务器软件产品:

Apache,由于其跨平台和安全性被广泛使用,是最行流行的web服务器端软件之一;

tomcat服务器是一个免费的开放源代码的Web应用服务器nginx

Tomcat调整JVM内存的大小需要修改哪些配置文件。

在tomcat的启动脚本catalina.sh添加如下:

#OSspecificsupport.$var_must_besettoeithertrueorfalse.

JAVA_OPTS=”-server-Xms800m-Xmx800m-XX:PermSize=64M-XX:MaxNewSize=256m-XX:MaxPermSize=128m-Djava.awt.headless=true” 常见的Java虚拟机有:J9VM、HotSpotVM、ZingVM。

请写出Tomcat程序的主配置文件名 在conf目录下:server.xml

Tomcat:调优工作模式基于什么协议

并发优化:在TOMCAT_HOME/bin/catalina.sh增加如下语句,

JAVA_OPTS=”-Xms1024m-Xmx1024m-Xss1024K-XX:PermSize=64m-XX:MaxPermSize=128m”

建议和注意事项:

-Xms和-Xmx选项设置为相同堆内存分配,以避免在每次GC后调整堆的大小,堆内存建议占内存的60%~80%;非堆内存是不可回收内存,大小视项目而定;线程栈大小推荐256k.

tomcat的运行模式有3种,即BIO、NIO和APR。 tomcat基于HTTP协议

Tomcat服务的配置文件是哪个? tomcat服务的配置文件是server.xml

后端Java,客户端访问慢,从哪几点考虑?服务器内存java虚拟机内存分配问题并发设置进程设置

邮件服务器

网络管理员对www服务器可以进行访问,控制存取和运行等控制,这些控制可在(1)文件中体现?

1
2
3
4
1.httpd.conf
2.lilo.conf
3.inerd.conf
4.resolv.conf

http的错误代码含义(404,410, 502, 504).

1
2
3
4
5
6
7
8
9
200 访问成功
301 永久重定向
302 临时重定向
304 缓存
403 访问被拒绝
404 找不到页面
410 被请求的资源在服务器上已经不再可用
502 网关错误
504 网关超时

我们想将/usr/local/nginx/logs中的log前一天做压缩,归档到 backup文件夹中,并保留7天的内容,你有什么好办法?如果我们还想将log收集走并分析,使用什么工具?如果收集走并加以分析,你主要关注哪些指标?

1
使用find命令查找,前一天的日志,或者在每天晚上12点将日志备份,打包压缩,使用shell脚本判断7天之前的文件删除。分析日志可以使用elk或者通过python、shell脚本进行分析。

http 1.0和http 1.1下有何区别? http 2.0的主要变化或优势有哪些?

1
2
3
4
5
6
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完全语义兼容的基础上,进一步减少了网络延迟

简述一下apache和nginx的异同点。

1
两者最核心的区别在于apache是同步多进程模型,一个连接对应一个进程,而nginx是异步的,多个连接(万级别)可以对应一个进程。一般来说,需要性能的web服务,用nginx。如果不需要性能只求稳定,更考虑apache,apache的各种功能模块实现比nginx好,例如ssl的模块就比nginx好,可配置项多。epoll(freebsd上是kqueue)网络IO模型是nginx处理性能高的根本理由,但并不是所有的情况下都是epoll大获全胜的,如果本身提供静态服务的就只有寥寥几个文件,apache的select模型或许比epoll更高性能。当然,这只是根据网络IO模型的原理作的一个假设,真正的应用还是需要实测。更为通用的方案是,前端nginx抗并发,后端apache集群,配合起来会更好。

apache如何修改配置参数,将默认端口改为非默认端口。

1
Listen 80

7、网络管理员对www服务器可进行访问、控制存取和运行等控制,这些控制可在(A )文件中体现。
A.httpd.conf

B.lilo.conf

C.inetd.conf

D.resolv.conf

8、某网站页面上的应展示图片和一些动态内容的一个展示框变为黑色,网站其他部分正常,可能的原因是什么?

1
网站页面源码的静态资源路径问题。

9、某日志路径 是/data/logs/a.txt. 如何跟踪该日志,以查看当时的运行状况?

1
tailf /data/logs/a.txt

10、HTTP协议默认使用的端口号为( ) ,FTP 协议默认使用的端口号为(),Microsoft SQL Server数据库默认使用的端口号为( ),Windows操作系统远程桌面应用使用的默认端口号是()。

1
80   21   1433  3389

11、HTML语言中,用于加入一个层的标签是(),用于加入图片的标签是(),用于链接外部样式的标签是()

1
div  img  link

12、apache和nginx的主配置文件是什么?

1
2
3
apache:  /etc/httpd/conf/httpd.conf
nginx: /etc/nginx/nginx.conf
/usr/local/nginx/n

13、apache有几种工作模式,分别简述两种工作模式及其优缺点?

1
2
3
4
5
6
7
8
9
10
11
Prefork MPM:
优点:成熟,兼容所有新老模块。进程之间完全独立,使得它非常稳定。同时,不需要担心线程安全的问题。(我们常用的mod_php,PHP的拓展不需要支持线程安全)

缺点:一个进程相对占用更多的系统资源,消耗更多的内存。而且,它并不擅长处理高并发请求,在这种场景下,它会将请求放进队列中,一直等到有可用进程,请求才会被处理。

Worker MPM:
优点:占据更少的内存,高并发下表现更优秀。

缺点:必须考虑线程安全的问题,因为多个子线程是共享父进程的内存地址的。如果使用keep-alive的长连接方式,也许中间几乎没有请求,这时就会发生阻塞,线程被挂起,需要一直等待到超时才会被释放。如果过多的线程,被这样占据,也会导致在高并发场景下的无服务线程可用。(该问题在prefork模式下,同样会发生)

Event MPM

14、http和https有什么区别?

1
2
3
http协议:是超文本传输协议,信息是明文传输。如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息。

https协议:是具有安全性的ssl加密传输协议,为浏览器和服务器之间的通信加密,确保数据传输的安全。

15、有一web服务器,某天某用户投诉上某个网站速度很慢,如果你是服务器的管理员,请问你如何查找原因。假设服务器有任意操作系统和软件。

1
2
3
1.检查网站的在线用户量,根据用户的并发量来做初步判断是不是因为并发量过大引起的数据库连接负荷原因。
2.检查数据库连接是否满负荷。
3.通过浏览器自带的检测请求发送到返回的时间来判断是否是因为用户带宽原因。

16、已知apache服务的访问日志按天记录在服务器本地目录/app/logs下,
由于磁盘空间紧张,现在要求以后只能保留最近7天访问日志!请问如何解决?

1
2
find /app/logs -type f -name "access*.log" -mtime +7 exec rm –f {} \;
日志轮转

17、aptget remove httpd和apt-get purge httpd的区别是什么?

1
2
apt-get remove 只删除软件包,不删除配置文件
apt-get purge 删除软件包并删除配置文件

18、http状态码有哪些? 分别表示什么意思?

1
2
3
4
5
6
200 - 请求成功
301 - 资源(网页等)被永久转移到其它URL
403 Forbidden 服务器理解请求客户端的请求,但是拒绝执行此请求
404 - 请求的资源(网页等)不存在
500 - 内部服务器错误
502 Bad Gateway 作为网关或者代理工作的服务器尝试执行请求时,从远程服务器接收到了一个无效的响应

19、介绍一下哪些可以优化加速用户访问网站体验的技术措施?

1
2
3
4
5
1、使用固态硬盘存储静态资源,扩大带宽
2、压缩或精简代码
3、降低HTTP请求
4、服务器端开启gzip压缩功能
5、使用cdn加速

当你在浏览器输入一个网址,如http://www.baidu.com, 按回车之后发生了什么?请从技术的角度描述,如浏览器、网络、服务器等各种参与对象上由此引发的一系列活动,请尽说出可能的涉及到所有的关键技术点。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
1.DNS解析
DNS解析的过程就是寻找哪台机器上有你需要资源的过程,寻找的过程遵循就近原则。

输入一个网址并按回车的时候浏览器会根据输入的URL去查找对应的IP,具体过程如下:

(1)首先是查找浏览器缓存,浏览器会保存一段时间内访问过的一些网址的DNS信息,不同浏览器保存的时常不等。

(2)如果没有找到对应的记录,这个时候浏览器会尝试调用操作系统缓存来继续查找这个网址的对应DNS信息。

(3)如果还是没找到对应的IP,那么接着会发送一个请求到路由器上,然后路由器在自己的路由器缓存上查找记录,路由器一般也存有DNS信息。

(4)如果还是没有,这个请求就会被发送到ISP(注:Internet Service Provider,互联网服务提供商,就是网络运营商,中国电信中国移动等),ISP也会有相应的ISP DNS服务器,就是本地DNS服务器,请求的域名基本上都能在这里找得到。

(5)如果还是没有的话, ISP的DNS服务器会将请求发向根域名服务器进行搜索。根域名服务器就是面向全球的顶级DNS服务器,共有13台逻辑上的服务器,从A到M命名,真正的实体服务器则有几百台,分布于全球各大洲。

(6)如果到了这里还是找不到域名的对应信息,那只能说明一个问题:这个域名本来就不存在,它没有在网上正式注册过。或者域名过期了。

这也就是为什么有时候打开一个新页面会有点慢,因为如果本地没什么缓存,查找域名的过程要这样递归地查询下去,查找完还要一层层的向上返回。例如"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次握手。

当浏览器需要的全部数据都已经加载完毕,一个页面就显示完了。

网站出现200,302,400,403.404,500,502,503都是什么意思?

1
2
3
4
5
6
7
8
200	OK	请求成功。一般用于GET与POST请求
302 Found 临时移动。与301类似。但资源只是临时被移动。客户端应继续使用原有URI
400 Bad Request 客户端请求的语法错误,服务器无法理解
403 Forbidden 服务器理解请求客户端的请求,但是拒绝执行此请求
404 Not Found 服务器无法根据客户端的请求找到资源(网页)。通过此代码,网站设计人员可设置"您所请求的资源无法找到"的个性页面
500 Internal Server Error 服务器内部错误,无法完成请求
502 Bad Gateway 作为网关或者代理工作的服务器尝试执行请求时,从远程服务器接收到了一个无效的响应
503 Service Unavailable 由于超载或系统维护,服务器暂时的无法处理客户端的请求。延时的长度可包含在服务器的Retry-After头信息中

配置Apache服务器需要修改的配置文件为( A)
A. httpd.conf
B. access.conf
C. srm.conf
D. named.conf

当用户反映访问你所维护的WEB服务器速度慢,访问其它网站都很流畅时.你的排查思路是什么?

1
2
1.检查网站的在线用户量,根据用户的并发量来做初步判断是不是因为并发量过大引起的数据库连接负荷原因。
2.检查数据库连接是否满负荷。

apache在linux系统上安装的步骤和命令

1
2
yum install -y httpd
systemctl start httpd

网站打开慢,请给出排查方法,如果是数据库慢导致,如何排查并解决。

1
2
3
1、是否后端服务有问题,例如php-fpm tomcat
2、进库explian 检查语句是否有进程问题
3、看看查询语句是否有索引

nginx服务器的配置文件是?

1
/etc/nginx/nginx.conf

2、请写出190.5.27.13/16网段的网络地址和广播地址。

1
2
网络地址:190.5.0.0
广播地址:192.5.255.255

4、手动安装grub

1
2
3
1、使用 grul-install 命令在要启动的分区中安装 GRUB 相关文件
2、修改GRUB的配置文件
3、安装GRUB到/dev/sdb1分区的启动扇区中

5、修改内核参数

1
2
vim /etc/sysctl.conf
sysctl -p

6.在1-39内取随机数

1
echo $[$RANDOM % 40]

Ansible

1、请写出saltstack或者ansible中你常用的5个管理模块。

1
2
3
4
saltstack:
cmd acl cloud cp cron
ansible:
shell copy yum service cron

2、你对自动化运维的理解,以及自动化运维需要掌握哪些技能?

1
2
3
4
1、项目部署维护能力
2、脚本开发能力
3、运维方案制定,业务架构关联分析
4、shell、python使用能力,应用架构设计能力

3、如何用ansible获取远程服务器10.10.125.125的时间(环境配置已完成)

1
ansible 10.10.125.125 -m shell -a 'date'

4、ansible你用过它的哪些模块,ansbile同时分发多台服务器的过程很慢,你想过怎么解决吗?

1
2
通过ansible的异步和并发设置:async和poll
或者在配置文件中设置forks,并发进程数。

5、ansible用过没有,熟不熟,问对四百台服务器设置IP和不同的网关怎么做?

1
先确定机器和新ip、网关的对应关系,然后通过shell模块执行shell脚本完成配置

6、一台新装的 Centos操作系统机器,要开始部署业务服务之前需要做什么操作?如果有二十台了,要怎么做?

1
2
1、需要先进行环境初始化,根据业务需求,调整防火墙,selinux的配置,修改内核参数,以满足业务需求。
2、如果需要操作的服务器较多,可以使用自动化运维工具完成配置,如ansible等。

7、常用的运维自动化工具写出两种:

1
saltstack、ansible

ansible怎么用的,版本发布用ansible吗? Ansible有哪些优点怎么优化ansible去推新的更新包(整个推送过程最多10秒 )

使用ansible-playbook创建一个abc用户并赋予644权限,host为all

-hosts:all

user:root

tasts:

-name:useraddabc

user:name=abcpassword=1group=root

-name:privileges

shell:chmod-R644/home/abc

**
**

131. 请写出saltstack或者ansible中你常用的5个管理模块

文件模块:copy,file,blockinfile,lineinfile,find,replace

包管理模块:yum_repository,yum

命令模块:command,shell,script

系统类模块:cron,service,user,group

收集模块:setup

Linux下使用ansible实现批量修改50台机器上面的test用户密码。请写出实现方法

方法一:

-–

-hosts:test

注释:对迭代项的引用,固定变量名为”item”,使用with_item属性给定要迭代的元素;

方法二:

/etc/ansible/hosts

test

132. ansible都用来做什么

实现了批量系统配置;批量程序部署;批量运行命令;自动化运维工具

负载均衡高可用

简述keepalived实现高可用部署的原理

1
虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个路由器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip(该路由器所在局域网内其他机器的默认路由为该vip),master会发组播,当backup收不到vrrp包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个backup当master。这样的话就可以保证路由器的高可用

请详细说明LVS DR模式的原理以及Keepalived高可用服务工作原理?

1
2
LVS DR:客户端向目标vip发出请求,lvs接收 ,LVS根据负载均衡算法选择一台活跃的的节点,将此节点的ip所在网卡的mac地址作为目标mac地址,发送到局域网里,节点在局域网中收到这个帧,拆开后发现目标IP(VIP)与本地匹配,于是处理这个报文.随后重新封装报文,发送到局域网.此时IP包的目标ip是客户端,源ip是自己的vip地址。
Keepalived高可用:keepalived通过vrrp协议来实现故障切换转移。在主节点正常工作的时候,会不断地向备节点广播心跳消息,用以告诉备节点自己还活着,当主节点发生故障的时候,备节点就无法收到主节点广播的消息,即可判定主节点发生故障,进而调用自身的接管程序,接管主节点的IP资源及服务。而而当主节点被修复时,备节点会释放主节点故障时自己所接管的IP资源和服务,恢复到原来备用的角色。

LVS支持几种模式,工作过程是什么?

1
2
3
4
5
6
7
8
9
10
11
NAT模式
原理
这个是通过网络地址转换的方法来实现调度的。首先调度器(LB)接收到客户的请求数据包时(请求的目的IP为VIP),根据调度算法决定将请求发送给哪个后端的真实服务器(RS)。然后调度就把客户端发送的请求数据包的目标IP地址及端口改成后端真实服务器的IP地址(RIP),这样真实服务器(RS)就能够接收到客户的请求数据包了。真实服务器响应完请求后,查看默认路由(NAT模式下我们需要把RS的默认路由设置为LB服务器。)把响应后的数据包发送给LB,LB再接收到响应包后,把包的源地址改成虚拟地址(VIP)然后发送回给客户端。
TUN模式(隧道模式)
原理
v采用NAT模式时,由于请求和响应的报文必须通过调度器地址重写,当客户请求越来越多时,调度器处理能力将成为瓶颈。为了解决这个问题,调度器把请求的报文通过IP隧道转发到真实的服务器。真实的服务器将响应处理后的数据直接返回给客户端。这样调度器就只处理请求入站报文,由于一般网络服务应答数据比请求报文大很多,采用VS/TUN模式后,集群系统的最大吞吐量可以提高10倍。
DR模式(直接路由模式)
原理
DR模式是通过改写请求报文的目标MAC地址,将请求发给真实服务器的,而真实服务器响应后的处理结果直接返回给客户端用户。同TUN模式一样,DR模式可以极大的提高集群系统的伸缩性。而且DR模式没有IP隧道的开销,对集群中的真实服务器也没有必要必须支持IP隧道协议的要求。但是要求调度器LB与真实服务器RS都有一块网卡连接到同一物理网段上,必须在同一个局域网环境。
LVS-FULLNAT转发模式
FULLNAT转发数据包是类似NAT模式,IN和OUT数据包都是经过LVS;唯一的区别:后端RealServer 或者交换机不需要做任何配置。FULLNAT的主要原理是引入local address(内网ip地址),cip-vip转换为lip->rip,而 lip和rip均为IDC内网ip,可以跨vlan通讯

在一个系统架构中,我们为了避免单点故障会怎么做?请写出至少2中方案及优点。

1
做集群  比如nginx 会做反向代理、利用nginx 或lvs 做负载均衡  ,利用keepalived做高可用

LVS、nginx、HAproxy有什么区别?工作中你怎么选择?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
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

lvs模式 数据包封包解包 源mac和目标MAC

请简单阐述keepalived的故障切换工作原理

1
2
3
4
5
6
7
keepalived是以VRRP协议为实现基础的VRRP,全称VirtualRouterRedundancyProtocol,中文名为虚拟路由冗余协议,VRRP的出现就是为了解决静态路由的单点故障问题,VRRP是通过一种竞选机制来将路由的任务交给某台VRRP路由器的。

在两个负载均衡调度器上安装Keepalived以实现高可用的目的。

两个调度器之间通过VRRP协议来保证高可用性,当一台调度器宕机时,另一台备用的立即接替原主机服务,当主机被修复之后又将服务返还给主机。

在主节点正常工作的时候,会不断地向备节点广播心跳消息,用以告诉备节点自己还活着,当主节点发生故障的时候,备节点就无法收到主节点广播的消息,即可判定主节点发生故障,进而调用自身的接管程序,接管主节点的IP资源及服务。而而当主节点被修复时,备节点会释放主节点故障时自己所接管的IP资源和服务,恢复到原来备用的角色。

描述Lvs、Nginx负载均衡的五种调度算法。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
nginx负载均衡的5种策略

一,Lvs:

1、静态算法:rr(轮询调度算法),wrr(权重调度算法),sh(源地址散列),dh(目标地址散列,把同一个ip地址的请求,发送给同一个server)

2、动态调度算法:LC(最少连接),wlc(加权最少连接),sed(最短延迟调度),nq(永不排队,改进的sed)

二、nginx:

1、rr:轮询算法(依次将用户的访问请求,平均的分配到后端的web集群中每个节点,此种算法不会考虑每个节点的性能,所以比较适用于所有节点的性能一致的情况)

2、wrr:权重算法(根据设定的权重值,权重值越大,被配到的请求次数也就越多,有效的解决了rr算法的缺点)

3、ip_hash算法(根据用户访问的真实ip生成一个hash表,此后,同一个ip地址的访问请求都将会分配到这个节点上,可以解决session会话共享的问题)

4、url_hash(根据用户访问的url的hash结果,使每个url定向到同一个后端服务器上)

5、fair(更加智能的负载均衡算法,可以根据页面大小的和加载时间长短智能的进行负载均衡)

采用四层负载均衡的可以用哪种方式?

1
2
lvs haproxy
硬件负载均衡器(F5-BigIp Redware)

RabbitMQ

描述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均衡

监控

zabbix监控的优缺点。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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在执行过程中会对数据库增加压力,需要对数据库进行优化

服务器系统状态监控指标

说说你使用过得监控软件的各自的特点。

1
2
zabbix :图像化,可以自定义模板,功能强大
Prometheus:支持在多层监控,业务、应用、系统层都可监控,可以集成其他监控,经常与k8S一起用

服务器监控有哪些方法

1
2
1、利用脚本定时检查服务,系统性能
2、利用第三方监控软件

zabbix怎么监控的 监控项都有哪些

zabbix 怎么维护的

写下之前工作中在生产环境配置使用过的监控系统?针对网络或服务配置过哪些监控项?使用什么方法进行报警通知

答:zabbix监控:服务器启动分区剩余空间服务器网络接口进出流量服务器服务状态服务器进程数量服务器CPU状态磁盘IO情况文件修改磁盘总和报警方式:邮件报警,微信报警,

使用何种工具监控的数据库?监控哪些指标?

zabbix

使用mysql自带的模板

监控:QPS(增删改查)、mysql请求流量带宽,mysql响应流量带宽,监控主从(showslavestatus\G);TPS(每秒事务的处理数量);监控缓冲池使用情况;缓存碎片;慢查询数量;当前连接数;吞吐量;端口和服务状态;mysql正常运行的时间;

zabbix都监控什么,有自己添加的监控项吗?监控哪些应用程序和服务,怎么监控nginx的日志,怎么监控Tomcat,具体是Tomcat调优的问题,还是后端Java报错socket的问题。监控中具体用到哪些模块,当监控服务出现一些问题怎么处理,比如MySQL的复制状态或者是gps过高,nginx报错的一些日志

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
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表示秒。

3).有自己添加的监控项吗

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] 监控程序端口启用

查看内存使用率,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

ELK

CICD

1、简述集中式版本管理和分布式版本管理的优缺点。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
集中式优点:
  1、采用集中式,易于管理,保证安全性;
  2、管理方便,逻辑明确,理念符合常规思维;
  3、代码的一致性高;
  4、适合人数不多的项目开发;
  5、允许一个文件有任意多的可命名属性,会关注所有的文件类型;
  6、支持二进制文件,更容易处理大文件;
集中式缺点:
  1、服务器压力太大,数据库容量暴增;
  2、必须连接在服务器上,否则基本不能工作、提交、对比、还原等;
  3、不适合开源开发。

分布式优点:
  1、适合分布式开发,强调个体;
  2、公共的服务器压力和数量都不会太大;
  3、速度快,成熟的架构,开发灵活;
  4、任意两个开发者之间可以很容易的解决冲突;
  5、离线工作,管理代码成本低,不需要依赖服务器;
  6、部署方便。基本上下个命令就可以用;
  7、良好的分支机制,可以让主干代码保持干净。
分布式缺点:
  1、资料少,学习成本比较大,学习周期比较长,要求人员素质比较高;
  2、不符合常规思维;
  3、代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息。

Jenkins怎么实现上线?

gitlab怎么备份的?

1
2
3
4
gitlab有自己的备份工具gitlab-rake

备份命令为
# /opt/gitlab/bin/gitlab-rake gitlab:backup:create

什么是配置管理?配置管理目的是什么?

1
2
3
4
配置管理是一种确保系统配置一致性、稳定性和可维护性的技术实践。
其主要目的是提高部署效率、降低配置错误、简化变更管理、支持自动化操作,并保证系统的安全性和可扩展性。在 DevOps 和持续交付的背景下,配置管理变得尤为重要,它能够帮助团队管理复杂的 IT 环境,减少人工干预,提高系统的可靠性和安全性。

配置管理通常使用专门的工具和技术来实现,如 Ansible、Puppet、Chef、SaltStack 等。

简述一个系统的发布流程。

简述软件完整的生命周期,及工作过程中产品从立项到上线的流程。

不考虑环境因素,简述引起编译过程报错的原因。

简述集中式版本管理和分布式版本管理的优缺点。

说一下你了解的配置管理,版本控制,持续集成等工具?

jenkins都用过哪些插件,简单介绍一下?jenkins如何备份?

用命令将test.sh文件发送到OS为Centos的minion 的/usr/local目录下

Jenkins你是怎样使用的,如何发布代码和回滚代码?有结合使用其他软件比如gitlab没有?

Jenkins什么版本 有没有用到pipeline

Jenkins 三种构建方式

什么叫网站灰度发布?如何实现灰度发布?

1
2
3
4
5
6
什么是灰度发布:在一般情况下,升级服务器端应用,需要将应用源码或程序包上传到服务器,然后停止掉老版本服务,再启动新版本。但是这种简单的发布方式存在两个问题,一方面,在新版本升级过程中,服务是暂时中断的,另一方面,如果新版本有BUG,升级失败,回滚起来也非常麻烦,容易造成更长时间的服务不可用。

如何实现灰度发布:
Nginx+LUA方式
根据Cookie实现灰度发布
根据来路IP实现灰度发布

虚拟化

虚拟化vSphere,Hyper-V,kvm

1、VMwarevSphere集成容器(VIC)建立了一个在轻量级虚拟机内部署并管理容器的环境。

2、Hyper-V是微软提出的一种系统管理程序虚拟化技术,能够实现桌面虚拟化

3、KVM是一个开源的系统虚拟化模块,自Linux2.6.20之后集成在Linux的各个主要发行版本中。它使用Linux自身的调度器进行管理,所以相对于Xen,其核心源码很少。KVM目前已成为学术界的主流VMM(虚拟机监控器)之一。

Docker

1、如何批量清理临时镜像文件?

1
# docker rmi $(sudo docker images -q -f danging=true)

2、如何查看镜像支持的环境变量?

1
# docker run IMAGE env

3、本地的镜像文件都存放在哪里

1
于Docker相关的本地资源存放在/var/lib/docker/目录下,其中container目录存放容器信息,graph目录存放镜像信息,aufs目录下存放具体的镜像底层文件。

4、构建Docker镜像应该遵循哪些原则?

1
整体远侧上,尽量保持镜像功能的明确和内容的精简,要点包括:# 尽量选取满足需求但较小的基础系统镜像,建议选择debian:wheezy镜像,仅有86MB大小# 清理编译生成文件、安装包的缓存等临时文件# 安装各个软件时候要指定准确的版本号,并避免引入不需要的依赖# 从安全的角度考虑,应用尽量使用系统的库和依赖# 使用Dockerfile创建镜像时候要添加.dockerignore文件或使用干净的工作目录
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
1、容器退出后,通过docker ps 命令查看不到,数据会丢失么?
容器退出后会处于终止(exited)状态,此时可以通过 docker ps -a 查看,其中数据不会丢失,还可以通过docker start 来启动,只有删除容器才会清除数据。

2、如何停止所有正在运行的容器?
使用docker kill $(sudo docker ps -q)

3、如何清理批量后台停止的容器?
使用docker rm $(sudo docker ps -a -q)

4、如何临时退出一个正在交互的容器的终端,而不终止它?
按Ctrl+p,后按Ctrl+q,如果按Ctrl+c会使容器内的应用进程终止,进而会使容器终止。

5、很多应用容器都是默认后台运行的,怎么查看它们的输出和日志信息?
使用docker logs,后面跟容器的名称或者ID信息

6、使用docker port 命令映射容器的端口时,系统报错Error: No public port ‘80’ published for …,是什么意思?
创建镜像时Dockerfile要指定正确的EXPOSE的端口,容器启动时指定PublishAllport=true

7、可以在一个容器中同时运行多个应用进程吗?
一般不推荐在同一个容器内运行多个应用进程,如果有类似需求,可以通过额外的进程管理机制,比如supervisord来管理所运行的进程

8、如何控制容器占用系统资源(CPU,内存)的份额?
在使用docker create命令创建容器或使用docker run 创建并运行容器的时候,可以使用-c|–cpu-shares[=0]参数来调整同期使用CPU的权重,使用-m|–memory参数来调整容器使用内存的大小。
1
2
3
4
5
1、仓库(Repository)、注册服务器(Registry)、注册索引(Index)有何关系?
首先,仓库是存放一组关联镜像的集合,比如同一个应用的不同版本的镜像,注册服务器是存放实际的镜像的地方,注册索引则负责维护用户的账号,权限,搜索,标签等管理。注册服务器利用注册索引来实现认证等管理。

2 、从非官方仓库(如:dl.dockerpool.com)下载镜像的时候,有时候会提示“Error:Invaild registry endpoint [https://dl.docker.com:5000/v1/](https://dl.docker.com:5000/v1/)…”?
Docker 自1.3.0版本往后以来,加强了对镜像安全性的验证,需要手动添加对非官方仓库的信任。DOCKER_OPTS=”–insecure-registry dl.dockerpool.com:5000”重启docker服务
1
2
3
4
5
1、Docker的配置文件放在那里。如何修改配置?
Ubuntu系统下Docker的配置文件是/etc/default/docker,CentOS系统配置文件存放在/etc/sysconfig/docker

2、如何更改Docker的默认存储设置?
Docker的默认存放位置是/var/lib/docker,如果希望将Docker的本地文件存储到其他分区,可以使用Linux软连接的方式来做。
1
2
3
4
5
6
7
8
9
1、Docker与LXC(Linux Container)有何不同?
LXC利用Linux上相关技术实现容器,Docker则在如下的几个方面进行了改进:
移植性:通过抽象容器配置,容器可以实现一个平台移植到另一个平台;镜像系统:基于AUFS的镜像系统为容器的分发带来了很多的便利,同时共同的镜像层只需要存储一份,实现高效率的存储;版本管理:类似于GIT的版本管理理念,用户可以更方面的创建、管理镜像文件;仓库系统:仓库系统大大降低了镜像的分发和管理的成本;周边工具:各种现有的工具(配置管理、云平台)对Docker的支持,以及基于Docker的Pass、CI等系统,让Docker的应用更加方便和多样化。

2 、Docker与Vagrant有何不同?
两者的定位完全不同Vagrant类似于Boot2Docker(一款运行Docker的最小内核),是一套虚拟机的管理环境,Vagrant可以在多种系统上和虚拟机软件中运行,可以在Windows。Mac等非Linux平台上为Docker支持,自身具有较好的包装性和移植性。原生Docker自身只能运行在Linux平台上,但启动和运行的性能都比虚拟机要快,往往更适合快速开发和部署应用的场景。

3、开发环境中Docker与Vagrant该如何选择?
Docker不是虚拟机,而是进程隔离,对于资源的消耗很少,单一开发环境下Vagrant是虚拟机上的封装,虚拟机本身会消耗资源。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1、Docker能在非Linux平台(Windows+MacOS)上运行吗?
可以

2 、如何将一台宿主机的docker环境迁移到另外一台宿主机?
停止Docker服务,将整个docker存储文件复制到另外一台宿主机上,然后调整另外一台宿主机的配置即可

3、Docker容器创建后,删除了/var/run/netns 目录下的网络名字空间文件,可以手动恢复它:
查看容器进程ID,比如1234
sudo docker inspect --format='{{. State.pid}}' $container_id 1234
到proc目录下,把对应的网络名字空间文件链接到/var/run/netns,然后通过正常的系统命令查看操作容器的名字空间。

4、对docker都知道些什么
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器或Windows 机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口

5、vmware和docker的区别
VM(VMware)在宿主机器、宿主机器操作系统的基础上创建虚拟层、虚拟化的操作系统、虚拟化的仓库,然后再安装应用;
Container(Docker容器),在宿主机器、宿主机器操作系统上创建Docker引擎,在引擎的基础上再安装应用。

6、Docker 和虚拟机有啥不同?
Docker 是轻量级的沙盒,在其中运行的只是应用,虚拟机里面还有额外的系统

7、docker 的三大组件是什么?分别的作用?
镜像(Image)、容器(Container)、仓库(Repository)是我们常说的Docker的三大组件
Docker镜像就是一个Linux的文件系统(Root FileSystem),这个文件系统里面包含可以运行在Linux内核的程序以及相应的数据。
容器是通过镜像来创建的,所以必须先有镜像才能创建容器,而生成的容器是一个独立于宿主机的隔离进程,并且有属于容器自己的网络和命名空间
仓库(Repository)是集中存储镜像的地方,这里有个概念要区分一下,那就是仓库与仓库服务器(Registry)是两回事,像我们上面说的Docker Hub,就是Docker官方提供的一个仓库服务器,不过其实有时候我们不太需要太过区分这两个概念。

8、如何将-台宿主机的docker 环境迁移到另外-台宿主机?
停止Docker服务,将整个docker存储文件复制到另外一台宿主机上,然后调整另外一台宿主机的配置即可

9、docker中-v -ps分别是什么

10、使用docker搭建套简 单的LNMP环境要求最终实现能够

1
2
3
4
1.访问: index. php  
2.新的网桥IP为: 192. 168.0.100/24
3.PHIP 版本为PHP-7 nginx 版本为NGINX-1.14
4.nginx 配置文件物理机路径:/data/nginxconf/nginx. conf,容器配置文件路径: /etc/nginx/ 5.使用nginx新的容器创建个新的镜像: 镜像名为: local nginx 版本为: tag-V1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
11、docke容器技术有哪些优势和不足?

容器的优点
敏捷环境:容器技术最大的优点是创建容器实例比创建虚拟机示例快得多,容器轻量级的脚本可以从性能和大小方面减少开销。
提高生产力:容器通过移除跨服务依赖和冲突提高了开发者的生产力。每个容器都可以看作是一个不同的微服务,因此可以独立升级,而不用担心同步。
版本控制:每一个容器的镜像都有版本控制,这样就可以追踪不同版本的容器,监控版本之间的差异等等。
运行环境可移植:容器封装了所有运行应用程序所必需的相关的细节比如应用依赖以及操作系统。这就使得镜像从一个环境移植到另外一个环境更加灵活。比如,同一个镜像可以在 Windows 或 Linux 或者 开发、测试或 stage 环境中运行。
标准化: 大多数容器基于开放标准,可以运行在所有主流 Linux 发行版、Microsoft 平台等等。
安全:容器之间的进程是相互隔离的,其中的基础设施亦是如此。这样其中一个容器的升级或者变化不会影响其他容器。
容器的缺点
复杂性增加:随着容器及应用数量的增加,同时也伴随着复杂性的增加。在生产环境中管理如此之多的容器是一个极具挑战性的任务,可以使用
Kubernetes 和 Mesos 等工具管理具有一定规模数量的容器。
原生 Linux 支持:大多数容器技术,比如 Docker,基于 Linux 容器(LXC),相比于在原生 Linux 中运行容器,在Microsoft 环境中运行容器略显笨拙,并且日常使用也会带来复杂性。
不成熟:容器技术在市场上是相对新的技术,需要时间来适应市场。开发者中的可用资源是有限的,如果某个开发者陷入某个问题,可能需要花些时间才能解决问题。

12、清理docker环境已停止的容器?
删除所有已经停止的容器
docker rm `docker ps -a |grep Exited |awk '{print $1}'`

13、查看容器名为rancher-scrvcr的输出日志?
docker logs -f -t --tail 行数 容器名

14、Docker常见的网络模式有哪些,区别是什么?
Docker网络子系统支持以下网络驱动:
bridge:默认网络驱动,用于单宿主机的docker容器和主机通信;
overlay:叠加网络,用于连接多个宿主机Docker进程管理的容器和swarm services;
macvlan:将容器的虚拟网卡直接连接在主机所在的物理网络上;
host:Docker 17.06+ 创建swarm services时支持,容器直接使用docker主机的网卡和网络;
none:禁用容器的网络,不连接任何网络,swarm services不支持该类型;
Network plugins:安装第三方网络插件,实现自定义的网络类型

15、写出下列操作对应的命令
1)删除pod
kubectl delete pod pod名

2)查看 pod
kubectl get pod

3)查看 service列表
kubectl get svc

5)查看所有 Docker容器
docker ps -a

6)删除 Docker容器
docker rm -f $(docker ps -a -q)

7)查看Docker镜像
docker images

8)删除 Docker镜像
docker rmi image名

9)获取镜像
docker pull image名

16、下列哪项可以作为集群的管理工具()
a.pupper b.pdsh c.cloudera manager d.zookeeper

17、Dockerfile如何优化?
编写.dockerignore 文件
容器只运行单个应用
将多个 RUN 指令合并为一个
基础镜像的标签不要用 latest
每个 RUN 指令后删除多余文件
选择合适的基础镜像(alpine 版本最好)
设置 WORKDIR 和 CMD
使用 ENTRYPOINT (可选)
在 entrypoint 脚本中使用 exec
COPY 与 ADD 优先使用前者
合理调整 COPY 与 RUN 的顺序
设置默认的环境变量,映射端口和数据卷
使用 LABEL 设置镜像元数据
添加 HEALTHCHECK

18、描述一下服务器虚拟化技术和容器技术原理,以及各自的优劣

1
2
3
虚拟化的优点:1、资源池化,将硬件资源虚拟化为抽象的资源从而提升了资源利用率;2、具有易拓展性,当物理资源不够时可以增添物理资源再将其抽象成虚拟资源以供使用。3、为云服务的到来打下基础;这时我们发现虚拟化技术并没有解决全部的问题,它也缺点:每一个虚拟机环境都需要在一个完整的OS之上运行,当虚拟机个数较多时就会对物理资源造成很大的占用。同时依旧需要物理服务器的支持,且可移植性的问题依旧没有解决。

在后来就有了容器技术,它将软件及其运行环境打包成一个整体从而主要解决了可移植性、开发和运维环境差异等带来的问题,它和云计算结合更是解决了必须具备物理服务器的问题,随之而来的问题也就迎刃而解了;

19、docker容器其中的命令有哪些,举例说明。

1
2
3
4
5
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 删除一个容器

20、容器常用操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
如何批量删除已停止运行的容器?   
docker ps -a|grep Exited|awk '{print $1}'
docker rm `docker ps -a|grep Exited|awk '{print $1}'`
如何查看容器挂载了哪些目录?
docker inspect container_name | grep Mounts -A 20
容器有几种网络模式?分别有哪些特点?
三种
Container:这个模式指定新创建的容器和已经存在的一个容器共享一个 Network Namespace,而不是和宿主机共享。新创建的容器不会创建自己的网卡,配置自己的 IP,而是和一个指定的容器共享 IP、端口范围等。同样,两个容器除了网络方面,其他的如文件系统、进程列表等还是隔离的。两个容器的进程可以通过 lo 网卡设备通信。
None:该模式关闭了容器的网络功能。
Bridge:此模式会为每一个容器分配、设置IP等,并将容器连接到一个docker0虚拟网桥,通过docker0网桥以及Iptables nat表配置与宿主机通信。
为什么构建镜像要尽量小?哪些措施可以使构建镜像更小?
因为传输和部署体积较小的镜像速度更快。
尽量在同一层运行更多的命令
如果在镜像中通过yum安装软件包,尽量在一行装完,不要多行,同样安装完后运行,clean all后对大小影响很大
docker-compose 启动的一组容器之间可以用localhost互相通信吗?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
1.什么是Docker

Docker是一个容器化平台,它以容器的形式将您的应用程序及其所有依赖项打包在一起,以确保您的应用程序在任何环境中无缝运行。

2.Docker与虚拟机有何不同

A 容器不需要引导操作系统内核,因此可以在不到一秒的时间内创建容器。此功能使基于容器的虚拟化比其他虚拟化方法更加独特和可取。

B 由于基于容器的虚拟化为主机增加了很少或没有开销,因此基于容器的虚拟化具有接近本机的性能。

C 对于基于容器的虚拟化,与其他虚拟化不同,不需要其他软件。

D 主机上的所有容器共享主机的调度程序,从而节省了额外资源的需求。

E 与虚拟机映像相比,容器状态(Docker或LXC映像)的大小很小,因此容器映像很容易分发。

F 容器中的资源管理是通过cgroup实现的。Cgroups不允许容器消耗比分配给它们更多的资源。虽然主机的所有资源都在虚拟机中可见,但无法使用。这可以通过在容器和主机上同时运行top或htop来实现。所有环境的输出看起来都很相似。

3.什么是Docker镜像

Docker镜像是Docker容器的源代码,Docker镜像用于创建容器。使用build命令创建镜像。

4.什么是Docker容器

5.Docker容器有几种状态

四种状态:运行、已暂停、重新启动、已退出。

6.Dockerfile中最常见的指令是什么

FROM:指定基础镜像

LABEL:功能是为镜像指定标签

RUN:运行指定的命令

CMD:容器启动时要运行的命令

COPY/ADD

7.docker常用命令

docker pull 拉取或者更新指定镜像

docker push 将镜像推送至远程仓库

docker rm 删除容器

docker rmi 删除镜像

docker images 列出所有镜像

docker ps 列出所有容器

8.容器与主机之间的数据拷贝命令

docker cp 命令用于容器与主机之间的数据拷贝

主机到容器:

img

容器到主机:

img

9.启动nginx容器(随机端口映射),并挂载本地文件目录到容器html的命令

img

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
10.Docker使用流程

11.如何批量清理临时镜像文件?

docker rmi $(docker images -q)

12.如何查看镜像支持的环境变量?

docker run IMAGE env

13.本地的镜像文件都存放在哪里?

与Docker相关的本地资源存放在/var/lib/docker/目录下,其中container目录存放容器信息,graph目录存放镜像信息,aufs目录下存放具体的镜像底层文件。

14.构建Docker镜像应该遵循哪些原则?

A:整体原则上,尽量保持镜像功能的明确和内容的精简,要点包括:

B:尽量选取满足需求但较小的基础系统镜像,建议选择debian:wheezy镜像,仅有86MB大小

C:清理编译生成文件、安装包的缓存等临时文件

D:安装各个软件时候要指定准确的版本号,并避免引入不需要的依赖

E:从安全的角度考虑,应用尽量使用系统的库和依赖

F:使用Dockerfile创建镜像时候要添加.dockerignore文件或使用干净的工作目录

15.容器退出后,通过docker ps 命令查看不到,数据会丢失么?

容器退出后会处于终止(exited)状态,此时可以通过 docker ps -a 查看,其中数据不会丢失,还可以通过docker start 来启动,只有删除容器才会清除数据。

16.如何停止所有正在运行的容器?

img

17.如何清理批量后台停止的容器?

img

18.如何获取某个容器的PID信息?

img

19.如何获取某个容器的IP地址?

20.如何给容器指定一个固定IP地址,而不是每次重启容器IP地址都会变?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61

21.如何临时退出一个正在交互的容器的终端,而不终止它?

Ctrl+p+q

22.很多应用容器都是默认后台运行的,怎么查看它们的输出和日志信息?

docker logs 容器名称或容器id

23.使用docker port 命令映射容器的端口时,系统报错Error: No public port ‘80’ published for …,是什么意思?

创建镜像时Dockerfile要指定正确的EXPOSE的端口

24.可以在一个容器中同时运行多个应用进程吗?

一般不推荐在同一个容器内运行多个应用进程,如果有类似需求,可以通过额外的进程管理机制,比如supervisord来管理所运行的进程

25.如何控制容器占用系统资源(CPU,内存)的份额?

在使用docker create命令创建容器或使用docker run 创建并运行容器的时候,可以使用-c|–cpu-shares[=0]参数来调整同期使用CPU的权重,使用-m|–memory参数来调整容器使用内存的大小。

26.仓库(Repository)、注册服务器(Registry)、注册索引(Index)有何关系?

首先,仓库是存放一组关联镜像的集合,比如同一个应用的不同版本的镜像,注册服务器是存放实际的镜像的地方,注册索引则负责维护用户的账号,权限,搜索,标签等管理。注册服务器利用注册索引来实现认证等管理。

27.从非官方仓库(如:dl.dockerpool.com)下载镜像的时候,有时候会提示“Error:Invaild registry endpoint https://dl.docker.com:5000/v1/…”?

Docker 自1.3.0版本往后以来,加强了对镜像安全性的验证,需要手动添加对非官方仓库的信任。DOCKER_OPTS=”–insecure-registry dl.dockerpool.com:5000” 重启docker服务

28.docker pull 某一个镜像很慢,比如说centos. 这种情况是因为docker官方的镜像库是国外,我们应该配置国内的镜像库或者加速器。

加速器可以用阿里云镜像加速器,进入阿里云网站在控制台可以看到,根据提示来即可。配置文件 /etc/docker/daemon.json 添加如下命令

DOCKER_NETWORK_OPTIONS="--registry-mirror=https://....."

地址可以为国内镜像地址,也可为公司内网镜像仓库地址。

29.docker push镜像时碰到的443问题,这是因为docker默认会走ssl加密的。

如果是公司内网的,直接在/etc/sysconfig/docker-network 里面添加如下配合DOCKER_NETWORK_OPTIONS=“--insecure-registry xxx-ip”

30.Docker的配置文件放在那里。如何修改配置?

Ubuntu系统下Docker的配置文件是/etc/default/docker,CentOS系统配置文件存放在/etc/sysconfig/docker

31.如何更改Docker的默认存储设置?

Docker的默认存放位置是/var/lib/docker,如果希望将Docker的本地文件存储到其他分区,可以使用Linux软连接的方式来做。

32.Docker与LXC(Linux Container)有何不同?
LXC利用Linux上相关技术实现容器,Docker则在如下的几个方面进行了改进:

移植性:通过抽象容器配置,容器可以实现一个平台移植到另一个平台;

镜像系统:基于AUFS的镜像系统为容器的分发带来了很多的便利,同时共同的镜像层只需要存储一份,实现高效率的存储;

版本管理:类似于GIT的版本管理理念,用户可以更方面的创建、管理镜像文件;

仓库系统:仓库系统大大降低了镜像的分发和管理的成本;

周边工具:各种现有的工具(配置管理、云平台)对Docker的支持,以及基于Docker的Pass、CI等系统,让Docker的应用更加方便和多样化。

K8S

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
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 的实际状态改变成目标状态。开发者可以定义一个全新的 Deployment 来创建 ReplicaSet 或者删除已有的 Deployment 并创建一个新的来替换。使用Deployment能够更加方便地管理Pod,包括扩容、缩容、暂停、滚动更新、回滚等。在Choerodon中用实例的方式来展现Deployment,同时支持在线升级,停止,删除等多元化功能

4、可以在一个Docker Container中同时运行多个应用进程吗?
可以同时运行,但不建议

5、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。

6、kubernetes中的pod内有几个容器它们之间是什么关系?
Pod中的容器们运行在一个逻辑“主机”上。他们使用同一个网络命名空间(network namespace,换句话讲,就是同样的IP地址和端口空间),以及同样的IPC(inter-process communication,进程间通信)命名空间,他们还使用共享卷(shared volume)。这些特征使得Pod内的容器能互相高效地通信。同时,Pod使得你可以将多个紧耦合的应用容器当做一个实体来管理。

7. K8s 集群中有一个节点notready.请说明排查该节点故障流程。
检查master到node节点的网络,或者重启一下网络pod,

8. 如何通过kubectl查看某个 label 关联的所有pod。
kubectl get pods -l name=<label-name>

9. 下列是一个示列的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:
replicas 1
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

kubectl get pod的时候某个pod一直处理terminating, 以什么命令可以强制删除。
使用kubectl中的强制删除命令
kubectl delete pod podName -n NAMESPACE –force –grace-period=0

请问你在kubernetes中用过有状态服务吗?有哪些?
有,mysql数据库、kafka、zookeepe

如何从外部(kubernetes集群之外), 访问到kubernetes里创建的service?

1
2
3
4
5
6
7
根据创建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。

Headless服务主要用来干什么。

1
headless service 是将service的发布文件中的clusterip=none ,不让其获取clusterip , DNS解析的时候直接走pod,因为没有ClusterIP,kube-proxy 并不处理此类服务,因为没有load balancing或 proxy 代理设置,在访问服务的时候回返回后端的全部的Pods IP地址,主要用于开发者自己根据pods进行负载均衡器的开发(设置了selector)。

请写出一些你用过的K8s常用命令,并简要说明用途。

1
2
3
kubectl get nodes
kubectl get pods --all-namesapces 获取所有pod
kubectl get ns
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
kubernetes常见面试题
1.k8s是什么,请说出你的了解?
Kubenetes是一个针对容器应用,进行自动部署,弹性伸缩和管理的开源系统。主要功能是生产环境中的容器编排。
K8S是Google公司推出的,它来源于由Google公司内部使用了15年的Borg系统,集结了Borg的精华。

2.K8s架构的组成是什么?
2.1、Master节点(默认不参加实际工作):
Kubectl:客户端命令行工具,作为整个K8s集群的操作入口;
Api Server:在K8s架构中承担的是“桥梁”的角色,作为资源操作的唯一入口,它提供了认证、授权、访问控制、API注册和发现等机制。客户端与k8s群集及K8s内部组件的通信,都要通过Api Server这个组件;
Controller-manager:负责维护群集的状态,比如故障检测、自动扩展、滚动更新等;
Scheduler:负责资源的调度,按照预定的调度策略将pod调度到相应的node节点上;
Etcd:担任数据中心的角色,保存了整个群集的状态;
2.2、Node节点:
Kubelet:负责维护容器的生命周期,同时也负责Volume和网络的管理,一般运行在所有的节点,是Node节点的代理,当Scheduler确定某个node上运行pod之后,会将pod的具体信息(image,volume)等发送给该节点的kubelet,kubelet根据这些信息创建和运行容器,并向master返回运行状态。(自动修复功能:如果某个节点中的容器宕机,它会尝试重启该容器,若重启无效,则会将该pod杀死,然后重新创建一个容器);
Kube-proxy:Service在逻辑上代表了后端的多个pod。负责为Service提供cluster内部的服务发现和负载均衡(外界通过Service访问pod提供的服务时,Service接收到的请求后就是通过kube-proxy来转发到pod上的);
container-runtime:是负责管理运行容器的软件,比如docker

3.容器和主机部署应用的区别是什么?
容器的中心思想就是秒级启动;一次封装、到处运行;这是主机部署应用无法达到的效果,但同时也更应该注重容器的数据持久化问题。
另外,容器部署可以将各个服务进行隔离,互不影响,这也是容器的另一个核心概念。

4.请你说一下kubenetes针对pod资源对象的健康监测机制?
livenessProbe探针
可以根据用户自定义规则来判定pod是否健康,如果livenessProbe探针探测到容器不健康,则kubelet会根据其重启策略来决定是否重启,如果一个容器不包含livenessProbe探针,则kubelet会认为容器的livenessProbe探针的返回值永远成功。
ReadinessProbe探针
同样是可以根据用户自定义规则来判断pod是否健康,如果探测失败,控制器会将此pod从对应service的endpoint列表中移除,从此不再将任何请求调度到此Pod上,直到下次探测成功。
startupProbe探针
启动检查机制,应用一些启动缓慢的业务,避免业务长时间启动而被上面两类探针kill掉,这个问题也可以换另一种方式解决,就是定义上面两类探针机制时,初始化时间定义的长一些即可。
Exec:通过执行命令的方式来检查服务是否正常,比如使用cat命令查看pod中的某个重要配置文件是否存在,若存在,则表示pod健康。反之异常。
Httpget:通过发送http/htps请求检查服务是否正常,返回的状态码为200-399则表示容器健康(注http get类似于命令curl -I)。
tcpSocket:通过容器的IP和Port执行TCP检查,如果能够建立TCP连接,则表明容器健康,这种方式与HTTPget的探测机制有些类似,tcpsocket健康检查适用于TCP业务。

5.K8s中镜像的下载策略是什么?
可通过命令“kubectl explain pod.spec.containers”来查看imagePullPolicy这行的解释。
K8s的镜像下载策略有三种:Always、Never、IFNotPresent;
Always:镜像标签为latest时,总是从指定的仓库中获取镜像;
Never:禁止从仓库中下载镜像,也就是说只能使用本地镜像;
IfNotPresent:仅当本地没有对应镜像时,才从目标仓库中下载。
默认的镜像下载策略是:当镜像标签是latest时,默认策略是Always;当镜像标签是自定义时(也就是标签不是latest),那么默认策略是IfNotPresent。

6.pod的重启策略是什么
可以通过命令“kubectl explain pod.spec”查看pod的重启策略。(restartPolicy字段)
Always:但凡pod对象终止就重启,此为默认策略。
OnFailure:仅在pod对象出现错误时才重启

7. Service这种资源对象的作用是什么?
用来给相同的多个pod对象提供一个固定的统一访问接口,常用于服务发现和服务访问。

8.版本回滚相关的命令?

9.标签与标签选择器的作用是什么?
标签:是当相同类型的资源对象越来越多的时候,为了更好的管理,可以按照标签将其分为一个组,为的是提升资源对象的管理效率。
标签选择器:就是标签的查询过滤条件。目前API支持两种标签选择器:
基于等值关系的,如:“=”、“”“==”、“!=”(注:“==”也是等于的意思,yaml文件中的matchLabels字段);基于集合的,如:in、notin、exists(yaml文件中的matchExpressions字段);
注:in:在这个集合中;notin:不在这个集合中;exists:要么全在(exists)这个集合中,要么都不在(notexists);

10.查看标签的方式?
kubectl get node --show-labels
kubectl get pod --show-labels

11.添加、修改、删除标签的命令?
kubectl label node node-1 app=nginx
kubectl label node node-1 app=mycat --overwrite
kubectl label node node-1 app-

12.描述一下pod的生命周期有哪些状态?
Pending:表示pod已经被同意创建,正在等待kube-scheduler选择合适的节点创建,一般是在准备镜像;
Running:表示pod中所有的容器已经被创建,并且至少有一个容器正在运行或者是正在启动或者是正在重启;
Succeeded:表示所有容器已经成功终止,并且不会再启动;
Failed:表示pod中所有容器都是非0(不正常)状态退出;
Unknown:表示无法读取Pod状态,通常是kube-controller-manager无法与Pod通信。

13.创建一个pod的流程是什么?
1) 客户端提交Pod的配置信息(可以是yaml文件定义好的信息)到kube-apiserver;
2) Apiserver收到指令后,通知给controller-manager创建一个资源对象;
3) Controller-manager通过api-server将pod的配置信息存储到ETCD数据中心中;
4) Kube-scheduler检测到pod信息会开始调度预选,会先过滤掉不符合Pod资源配置要求的节点,然后开始调度调优,主要是挑选出更适合运行pod的节点,然后将pod的资源配置单发送到node节点上的kubelet组件上。
5) Kubelet根据scheduler发来的资源配置单运行pod,运行成功后,将pod的运行信息返回给scheduler,scheduler将返回的pod运行状况的信息存储到etcd数据中心。

14.删除一个Pod会发生什么事情?
Kube-apiserver会接受到用户的删除指令,默认有30秒时间等待优雅退出,超过30秒会被标记为死亡状态,此时Pod的状态Terminating,kubelet看到pod标记为Terminating就开始了关闭Pod的工作;

15.k8s集群外流量怎么访问Pod?
可以通过Service的NodePort方式访问,会在所有节点监听同一个端口,比如:30000,访问节点的流量会被重定向到对应的Service上面。

16.k8s数据持久化的方式有哪些?
EmptyDir(空目录):没有指定要挂载宿主机上的某个目录,直接由Pod内保部映射到宿主机上。类似于docker中的manager volume。
Hostpath:将宿主机上已存在的目录或文件挂载到容器内部。类似于docker中的bind mount挂载方式。这种数据持久化方式,运用场景不多,因为它增加了pod与节点之间的耦合。
PersistentVolume(简称PV):基于NFS服务的PV,也可以基于GFS的PV。它的作用是统一数据持久化目录,方便管理。

17.kube-apiserver和kube-scheduler的作用是什么?
kube -apiserver遵循横向扩展架构,是主节点控制面板的前端。这将公开Kubernetes主节点组件的所有API,并负责在Kubernetes节点和Kubernetes主组件之间建立通信。
kube-scheduler负责工作节点上工作负载的分配和管理。因此,它根据资源需求选择最合适的节点来运行未调度的pod,并跟踪资源利用率。它确保不在已满的节点上调度工作负载。

18.Replica Set 和 Replication Controller之间有什么区别?
Replica Set 和 Replication Controller几乎完全相同。它们都确保在任何给定时间运行指定数量的pod副本。不同之处在于复制pod使用的选择器。Replica Set使用基于集合的选择器,而Replication Controller使用基于权限的选择器。

19.kubernetes 认证
kubernetes 提供了多种认证方式,比如客户端证书,静态token,静态密码文件,ServiceAccountTokens等等。你可以同时使用一种或多种认证方式。只要通过任何一个都被认作是认证通过。

20.kube-scheduler工作原理,多少节点对外提供服务
根据各种调度算法将 Pod 绑定到最合适的工作节点
预选(Predicates):输入是所有节点,输出是满足预选条件的节点。kube-scheduler根据预选策略过滤掉不满足策略的Nodes。例如,如果某节点的资源不足或者不满足预选策略的条件如“Node的label必须与Pod的Selector一致”时则无法通过预选。
优选(Priorities):输入是预选阶段筛选出的节点,优选会根据优先策略为通过预选的Nodes进行打分排名,选择得分最高的Node。例如,资源越富裕、负载越小的Node可能具有越高的排名。

21.集群使用的网络方案,pod如何和node网络通信的
Flannel:使用vxlan技术为各节点创建一个可以互通的Pod网络,使用的端口为UDP 8472(需要开放该端口,如公有云AWS等)。flanneld第一次启动时,从etcd获取配置的Pod网段信息,为本节点分配一个未使用的地址段,然后创建flannedl.1网络接口(也可能是其它名称,如flannel1等)。flannel将分配给自己的Pod网段信息写入 /run/flannel/subnet.env文件,docker后续使用这个文件中的环境变量设置docker0网桥,从而从这个地址段为本节点的所有Pod容器分配IP。
22.k8s集群节点需要关机维护,需要怎么操作

23.生产中碰到过什么问题,故障排查思路,如何解决的
Pod 故障归类
Pod状态 一直处于 Pending
Pod状态 一直处于 Waiting
Pod状态 一直处于 ContainerCreating
Pod状态 处于 ImagePullBackOff
Pod状态 处于 CrashLoopBackOff
Pod状态 处于 Error
Pod状态 一直处于 Terminating
Pod状态 处于 Unknown
Pod 排查故障命令
 # 查看 Pod 配置是否正确

 # 查看 Pod 详细事件信息

 # 查看容器日志

Pod 故障问题与排查方法
Pod 一直处于 Pending状态
Pending状态,这个状态意味着,Pod 的 YAML 文件已经提交给 Kubernetes,API 对象已经被创建并保存在 Etcd 当中。但是,这个 Pod 里有些容器因为某种原因而不能被顺利创建。比如,调度不成功(可以通过 kubectl describe pod命令查看到当前 Pod 的事件,进而判断为什么没有调度)。可能原因: 资源不足(集群内所有的 Node 都不满足该 Pod 请求的 CPU、内存、GPU 等资源);HostPort 已被占用(通常推荐使用 Service 对外开放服务端口)。
Pod 一直处于 Waiting或 ContainerCreating状态
首先还是通过 kubectl describe pod命令查看到当前Pod的事件。可能的原因包括:
1、镜像拉取失败比如,镜像地址配置错误、拉取不了国外镜像源(gcr.io)、私有镜像密钥配置错误、镜像太大导致拉取超时(可以适当调整 kubelet 的 --image-pull-progress-deadline 和 --runtime-request-timeout 选项)等。
2、CNI 网络错误,一般需要检查 CNI 网络插件的配置,比如:无法配置 Pod 网络、无法分配 IP 地址。
3、容器无法启动,需要检查是否打包了正确的镜像或者是否配置了正确的容器参数。
4、Failed create pod sandbox,查看kubelet日志,原因可能是磁盘坏道(input/output error)。
Pod 一直处于 ImagePullBackOff状态
通常是镜像名称配置错误或者私有镜像的密钥配置错误导致。这种情况可以使用 docker pull来验证镜像是否可以正常拉取。
如果私有镜像密钥配置错误或者没有配置,按下面检查:
1、查询 docker-registry 类型的 Secret

2、创建 docker-registry 类型的 Secret

Pod 一直处于 CrashLoopBackOff 状态
CrashLoopBackOff 状态说明容器曾经启动了,但又异常退出。此时可以先查看一下容器的日志。
通过命令 kubectl logs 和 kubectl logs --previous 可以发现一些容器退出的原因,比如:容器进程退出、健康检查失败退出、此时如果还未发现线索,还可以到容器内执行命令来进一步查看退出原因(kubectl exec cassandra – cat /var/log/cassandra/system.log),如果还是没有线索,那就需要 SSH 登录该 Pod 所在的 Node 上,查看 Kubelet 或者 Docker 的日志进一步排查。
Pod 处于 Error 状态
通常处于 Error 状态说明 Pod 启动过程中发生了错误。常见的原因包括:依赖的 ConfigMap、Secret 或者 PV 等不存在;请求的资源超过了管理员设置的限制,比如超过了 LimitRange 等;违反集群的安全策略,比如违反了 PodSecurityPolicy 等;容器无权操作集群内的资源,比如开启 RBAC 后,需要为 ServiceAccount 配置角色绑定;
Pod 处于 Terminating 或 Unknown 状态
从 v1.5 开始,Kubernetes 不会因为 Node 失联而删除其上正在运行的 Pod,而是将其标记为 Terminating 或 Unknown 状态。想要删除这些状态的 Pod 有三种方法:
1、从集群中删除该 Node。使用公有云时,kube-controller-manager 会在 VM 删除后自动删除对应的 Node。而在物理机部署的集群中,需要管理员手动删除 Node(如 kubectl delete node )。
2、Node 恢复正常。Kubelet 会重新跟 kube-apiserver 通信确认这些 Pod 的期待状态,进而再决定删除或者继续运行这些 Pod。用户强制删除。用户可以执行 kubectl delete pods pod-name --grace-period=0 --force 强制删除 Pod。除非明确知道 Pod 的确处于停止状态(比如 Node 所在 VM 或物理机已经关机),否则不建议使用该方法。特别是 StatefulSet 管理的 Pod,强制删除容易导致脑裂或者数据丢失等问题。
3、Pod 行为异常,这里所说的行为异常是指 Pod 没有按预期的行为执行,比如没有运行 podSpec 里面设置的命令行参数。这一般是 podSpec yaml 文件内容有误,可以尝试使用 --validate 参数重建容器,比如:
kubectl delete pod mypod 和 kubectl create --validate -f mypod.yaml,也可以查看创建后的 podSpec 是否是对的,比如:kubectl get pod mypod -o yaml,修改静态 Pod 的 Manifest 后未自动重建,Kubelet 使用 inotify 机制检测 /etc/kubernetes/manifests 目录(可通过 Kubelet 的 --pod-manifest-path 选项指定)中静态 Pod 的变化,并在文件发生变化后重新创建相应的 Pod。但有时也会发生修改静态 Pod 的 Manifest 后未自动创建新 Pod 的情景,此时一个简单的修复方法是重启 Kubelet。
Unknown 这是一个异常状态,意味着 Pod 的状态不能持续地被 kubelet 汇报给 kube-apiserver,这很有可能是主从节点(Master 和 Kubelet)间的通信出现了问题。

公有云

1、你用过那些云平台?用过其中的哪些产品?

1
阿里云、华为云

2、你所知道的是虚拟化产品和方案有哪些?并对这些方案进行一个简单的对比。

1
2
3
4
虚拟化软件有:
(1) 公有云平台:亚马逊AWS,阿里云,腾讯云,华为云,QingCloud;
(2) 混合云平台:ZStack,BeyondCMP,CAS虚拟化平台等;
(3) 私有云平台:VisionStack杭州云容,ESCloud易捷云,Ucloud,AWCloud,ZStack等

AWS每月的账单开出后,给使用方多长时间来进行支付?

1
2
AWS的付费机制是:只需要为已使用的资源付费,并且AWS会在次月3号左右给出本月的账单,付款时间为30天;
你这边的问题应该是没有创建资源的权限,应该是信用卡或个人认证信息没有补充完成,可以后台提工单申请提高资源限额。

阿里云,AWS相关的功能特性

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
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参数配置,最大化利用系统资源。

架构

公司的架构,服务器的数量,之前公司运维部的人员数量,之前工作流程

1
服务器数量五六十台,运维人数2人,运维人员对公司互联网业务所依赖的基础设施、基础服务、线上业务进行稳定性加强,进行日常巡检发现服务可能存在的隐患,对整体架构进行优化以屏蔽常见的运行故障,多数据中接入提高业务的容灾能力。通过监控、日志分析等技术手段,及时发现和响应服务故障,减少服务中断的时间,使公司的互联网业务符合预期的可用性要求,持续稳定地为用户提供务。

说说你对B/S结构与C/S结构的认识。

1
2
3
4
5
6
7
8
9
10
11
12
B/S 是浏览器服务器架构
C/S 是客户端服务端架构

客户端服务端架构
对硬件和软件要求高

浏览器服务器架构
C/S 程序可以处理用户面固定, 并且在相同区域, 安全要求高需求, 与操作系统相关. 应该都是相同的系统

对安全要求不同
C/S 对服务端、客户端都安全都要考虑。
B/S 因没有客户端,所以只注重服务端安全即可。

你可以采取任何设备和不同操作系统服务设计对两台WWW服务器和两台FTP服务器作负载均衡,用网络拓扑图表示并加以说明!(方法越多越好)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
这是利用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

请用画图的方法说明并讲解你曾经接触过的规模最大的服务器集群架构

1
2
3
4
5
6
7
8
9
10
11
12
13
client:客户端  cdn加速:内容分发网络  firewall:防火墙   wiki:(多人协作的写作系统)  dr:负载均衡器  rabbitMQ:消息队列集群  站内搜索服务器solr(做集群,工具由开发选用)

memcachedx3:缓存堆(不能做集群,但可用多个。与gelara集群并行)

redis集群:(keepalived提供一个唯一ip入口)

pxe服务器:批量安装操作系统,初始ss化使用服务器 ansible:统一部署

zabbix:监控服务器(可用做高可用)(分布式监控:核心监控,代理层监控下的服务器才是真正被监控的机器)

ELK:开源实时日志分析平台 ips:入侵防御系统 ids:入侵检测系统

cmdb资产管理:配置管理数据库,通过识别、控制、维护,检查企业的IT资源,从而高效控制与管理不断变化的IT基础架构与IT服务

rsync+inotify是做什么的?加什么参数才能实现实时同步?–delete参数又是什么意思?

1
2
3
4
5
6
7
Linux内核从2.6.13版本开始提供了inotify通知接口,用来监控文件系统的各种变化情况,如文件存取、删除、移动等。利用这一机制,可以非常方便地实现文件异动告警、增量备份,并针对目录或文件的变化及时作出响应。

使用rsync工具与inotify机制相结合,可以实现触发式备份(实时同步)

加什么参数才能实现实时同步? inotifywait-m

--delete参数又是什么意思? --delete:文件或目录被删除在监控目录中

网络及安全

网络基础知识

已知某一主机的IP地址为201.103.136.184,其子网掩码为255.255.255.192,则该主机是在 C 类网络中,主机所在子网最多允许有 62 台主机。

简述TCP三次握手的过程?

在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接.

第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;

第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;

第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手.

完成三次握手,客户端与服务器开始传送数据

简述tcp链接三次握手的过程。

在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接.

第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;

SYN:同步序列编号(Synchronize Sequence Numbers)

第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;

第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手.完成三次握手,客户端与服务器开始传送数据

简单说一下tcp/ip协议中的tcp和ip

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
TCP/IP是一个协议族,是因为TCP/IP协议包括TCP、IP、UDP、ICMP、RIP、TELNETFTP、SMTP、ARP、TFTP等许多协议,这些协议一起称为TCP/IP协议。

说明:
  TCP(TransportControlProtocol)传输控制协议 IP(InternetworkingProtocol)网间网协议

  UDP(UserDatagramProtocol)用户数据报协议 ICMP(InternetControlMessageProtocol)互联网控制信息协议

  SMTP(SimpleMailTransferProtocol)简单邮件传输协议 SNMP(SimpleNetworkmanageProtocol)简单网络管理协议

  FTP(FileTransferProtocol)文件传输协议 ARP(AddressResolationProtocol)地址解析协议

  从协议分层模型方面来讲,TCP/IP由四个层次组成:网络接口层、网间网层、传输层、应用层。

TCP(TransmissionControlProtocol传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议

在因特网协议族(Internetprotocolsuite)中,TCP层是位于IP层之上,应用层之下的中间层

ip协议是网络之间互连的协议也就是为计算机网络相互连接进行通信而设计的协议

IP协议是将多个包交换网络连接起来,它在源地址和目的地址之间传送一种称之为数据包的东西,它还提供对数据大小的重新组装功能,以适应不同网络对包大小的要求。

IP不提供可靠的传输服务,它不提供端到端的或(路由)结点到(路由)结点的确认,对数据没有差错控制,它只使用报头的校验码,它不提供重发和流量控制。如果出错可以通过ICMP报告,ICMP在IP模块中实现。

icmp协议属于tcp/ip协议或者OSI模型的那一层。

1
2
3
4
5
6
7
8
9
icmp===Internet控制消息协议

该协议是TCP/IP协议集中的一个子协议,属于网络层协议,主要用于在主机与路由器之间传递控制信息,

包括报告错误、交换受限控制和状态信息等。当遇到IP数据无法访问目标、IP路由器无法按当前的

传输速率转发数据包等情况时,会自动发送ICMP消息。我们可以通过Ping命令发送ICMP回应请求消息

并记录收到ICMP回应回复消息,通过这些消息来对网络或主机的故障提供参考依据。

ping命令通过什么协议(internet控制信息协议)来实现?

1
icmp

下面的网络协议中,面向连接协议的是(C)

1
2
3
A. 传输控制协议 
B. 用户数据报协议
C. 网际协议

一台主机要实现通过局域网与另一个局域网通信,需要做的工作是(D)

1
2
3
4
A 配置域名服务器
B 定义一条本机指向所在网络的路由
C 定义一条本机指向所在网络网关的路由
D 定义一条本机指向目标网络网关的路由

在局域网络内的某台主机用ping 命令测试网络连接时发现网络内部的主机都可以连通,而不能与公网连通,问题可能是(C)

1
2
3
4
A 主机IP设置有误
B 没有设置连接局域网的网关
C 局域网的网关或主机的网关设置有误
D 局域网DNS 服务区设置有误

说明静态路由和动态路由的区别?

1
2
3
4
5
静态路由
  是在路由器中设置的固定的路由表。除非网络管理员干预,否则静态路由不会发生变化由于静态路由不能对网络的改变作出反映,一般用于网络规模不大、拓扑结构固定的网络中。静态路由的优点是简单、高效、可靠。在所有的路由中,静态路由优先级最高。当动态路由与静态路由发生冲突时,以静态路由为准

动态路由
  是网络中的路由器之间相互通信,传递路由信息,利用收到的路由信息更新路由器表的过程。它能实时地适应网络结构的变化。如果路由更新信息表明发生了网络变化,路由选择软件就会重新计算路由,并发出新的路由更新信息。这些信息通过各个网络,引起各路由器重新启动其路由算法,并更新各自的路由表以动态地反映网络拓扑变化。动态路由适用于网络规模大、网络拓扑复杂的网络。

下面的网络协议中,面向连接的的协议是(C)

1
2
3
4
A 传输控制协议 
B 用户数据报协议
C 网际协议
D 网际控制报文协议

IDC机房宽带突然从平时100M增加到400M,请你分析问题可能原因所在,并给出解决方法

1
2
3
4
(1)可能遭受DDOS攻击(写一个预防DDOS的脚本)
(2)内部的服务器中毒,大量外发流量(内部运维规范、制度)
(3)网站的元素被盗连,在门户页面被推广导致大量流量产生(网站的基本优化)
(4)用户访问量剧增

二层交换机和三层交换机的区别

1
2
3
4
5
6
二层交换是纯2层的网络设备,只有交换功能
三层交换不但有二层交换的交换功能还带路由功能


二层交换机工作于OSI模型的第2层(数据链路层),故而称为二层交换机。
三层交换机的最重要目的是加快大型局域网内部的数据交换,所具有的路由功能也是为这目的服务的,能够做到一次路由,多次转发。对于数据包转发等规律性的过程由硬件高速实现,而像路由信息更新、路由表维护、路由计算、路由确定等功能,由软件实现。三层交换技术就是二层交换技术+三层转发技术。

在Windows操作系统和linux系统中如何查看MAC地址。

1
2
3
4
5
windows
win+r运行输入cmd打开dos窗口,运行如下指令
ipconfig /all
linux
ip a

依次写出osi七层模型

1
物理层、数据链路层、网络层、传输层、会话层、表示层、应用层

使用tcpdump监听tcp80端口来自192.168.0.1的所有流量,请写出命令.

1
# tcpdump -i eth0 src 192.168.0.1 and tcp and port 80

系统中有一台数据库服务器,发现木马,症状是不定期向外网发包,影响服务器性能现登录该服务器,如何快速找到该木马进程?请写出命令行,并解释原因。

1
2
3
4
5
6
1、查看异常用户
cat /etc/passwd
2、查看异常进程
ps
3、查看异常定时任务
crontab -e 删除异常定时任务

被植入代码有哪些特点,怎样快速找到被植入的木马

1
2
3
4
5
6
7
8
可能定时执行,破坏系统文件

如何快速找到:
查看开机启动文件
查看系统日志
查看系统用户
查看进程是否有异常进程
查看定时任务是有异常

Linux应该从哪些方面提高安全性

1
2
3
1、 取消不必要的服务
2、 加密用户登录密码并设定用户账号安全等级
3、 增强安全防护工具

如何看待系统安全加固

1
2
3
4
5
6
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.做任何修改文件的动作先备份再做操作

NAT使用的几种情况:

1
2
3
4
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
1.TRANSLATION INSIDE LOCAL ADDRESS-----------将内部地址一对一的翻译成外部地址;

2.OVER LOADING INSIDE GLOBAL ADDRESS---------将内部地址多对一的翻译成外部地址,通过地址加端口号的方式区别不同的本地地址。这种方式就是所谓的PAT[/color:43aa144927];

3.TCP LOAD DISTRIBUTING----提供在多个、利用率高的主机之间进行负载分担的方法;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―多对多.

禁止来自10.0.0.188ip地址访问80端口的请求

1
2
3
4
5
6
7
8
#iptables -t filter-A INPUT-s 10.0.0.188-ptcp--dport80-jREJECT

或者

#iptables-tfilter-AINPUT-s10.0.0.188-ptcp--dport80-jDROP

用iptables添加一个规则允许192.168.0.123访问本机端口
#iptables-tfilter-AINPUT-s192.168.0.123-jACCEPT
1
2
3
4
5
6
7
iptables是否支持time时间控制用户行为,如有请写出其具体操作步骤
支持。需要增加相关支持的内核补丁,并且要重新编译内核。

或者使用crontab配合iptables,首先:vi/deny.bat输入/sbin/iptables-AOUTPUT-ptcp-s192.168.1.0/24--dport80-jDROP保存退出

打开crontab-e
输入:00 21 * * * /bin/sh/deny.bat

包过滤防火墙与代理应用防火墙有什么区别,能列出几种相应的产品吗?

1
2
3
4
5
6
7
包过滤防火墙工作在网络协议IP层,它只对IP包的源地址、目标地址及相应端口进行处理,因此速度比较快,能够处理的并发连接比较多,缺点是对应用层的攻击无能为力。

代理服务器防火墙将收到的IP包还原成高层协议的通讯数据,比如http连接信息,因此能够对基于高层协议的攻击进行拦截。缺点是处理速度比较慢,能够处理的并发数比较少。

代理应用防火墙:天融信GFW4000

包过滤防火墙:华为NE16E

142. 什么是NAT,常见分为哪几种,DNAT与SNAT有什么不同,应用事例有哪些?

NAT(NetworkAddressTranslation,网络地址转换)是将IP数据包头中的IP地址转换为另一个IP地址的过程。分为DNAT(目的网络地址转换)和SNAT(源网络地址转换)

SNAT主要是用于内网主机通过路由器或网关访问外网

DNAT将外部地址和端口的访问映射到内部地址和端口

如何将本地80端口的请求转发到8080端口,当前主机IP为192.168.16.1,其中本地网卡eth0

1
2
3
4
5
# iptables -t nat -A PREROUTING -i eth0  -d 192.168.16.2 --p tcp -m tcp --dport  80  -j   DNAT  --to  192.168.122.3:8080

或者:

# iptables -t nat -A PREROUTING -i eth0 -d 192.168.16.1 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080

请注释说明以下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-d192.168.0.0/255.255.0.0-jREJECT–reject-with_icmp-port-unreachable

-APOSTROUTING-s10.0.1.0/255.255.255.0-oeth0-JMASQUERADE

centos7默认防火墙允许80端口外网访问,写出相应安全策略。

1
2
3
# firewall-cmd --zone=public --add-port=80/tcp --permanent

# iptables -A INPUT -p tcp --dport 80 -j ACCEPT

143. service iptables stop与iptables -F有何区别?

service iptables stop停止iptables服务,防火墙设定的所有规则都失效,但表和链中的规则还在

iptables -F,清空所有表所有链中的规则,iptables服务是运行状态,链中的默认策略还生效

请问如何用iptables工具阻断来自192.168.0.1的所有网络连接

iptables-AINPUT-s192.168.0.1-jDROP

请写出iptables做NAT转发的步骤及iptables命令

DNAT目标地址转换

iptables -t nat -A PREROUTING -i ppp0 -p tcp –dport 80 -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

dd if=/dev/zero

144. 诊断DNAT映射是否成功的最好方法(命令)是?

elinkshttp://映射前的ip

配置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 –d port 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

实现把访问10.0.0.3:80的请求转到172.16.1.17:80

iptables-tnat-APREROUTING-d10.0.0.3-ptcp–dport80-jDNAT–to172.16.1.17:80

Linux系统层面有哪些常见的安全防护方法

1,防火墙只开放对外的服务端口 2,禁止ROOT远程登录 3,修改/etc/passwd访问权限 4,修改sshd的服务端口

5,只允许公司出口IP连接sshd服务端口 6,还有修改执行命令历史记录数 7,禁用不用的服务和应用

8,检查系统日志

请简述非对称加密算法工作过程

1.乙方生成两把密钥(公钥和私钥)

2.甲方获取乙方的公钥,然后用它对信息加密。

3.乙方得到加密后的信息,用私钥解密,乙方也可用私钥加密字符串

4.甲方获取乙方私钥加密数据,用公钥解密

如何检查Selinux是否开启?getenforce

7、http是()层的协议,Referer指的是()

1
2
3
http是七层的协议
Referer是http请求头的一部分,表示一个来源。
比如在www.google.com 里有一个www.baidu.com 链接,那么点击这个www.baidu.com ,它的header 信息里就有:Referer=http://www.google.com

8、hash查找做好的情况时间复杂度是()

1
2
3
4
1.判断key,根据key算出索引。
2.根据索引获得索引位置所对应的键值对链表。
3.遍历键值对链表,根据key找到对应的Entry键值对。
4.拿到value。

9、查看tcp连接情况

1
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

10、简述画出TCP/IP三次握手

11、.查看TCP的并发请求数与其连接状态

1
netstat -ant | awk '{print $NF}' | grep -v '[a-z]'| sort | uniq -c

12、使用curl,wget查看www.baidu.com的head信息命令

1
2
curl -I http://baidu.com
wget http://baidu.com -S

13、在网络排错中,你经常会用到的操作命令的作用:

1
2
3
4
5
6
7
8
9
10
11
ping  查看网络是否互通

netstat 一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息。

nbtstat 用于查看在TCP/IP协议之上运行NetBIOS服务的统计数据,并可以查看本地远程计算机上的NetBIOS名称列表。

net

telnet 查看端口是否互通

ipconfig 显示IP地址

14、使用tcpdump监听主机192.168.1.1,tcp端口为80的数据,同时将结果保存输出到tcpdump.log请写出相应的命令

1
# tcpdump host 192.168.1.1  and  tcp and port 80  -w tcpdump.log

实时抓取并显示当前系统中tcp80端口的网络数据信息,请写出完整操作命令

1
# tcpdump -n tcp  port 80

15、linux下添加172.132.7.132为ip白名单

1
2
3
4
5
#添加规则
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="172.132.7.132/24" port protocol="tcp" accept"

#reload使生效
firewall-cmd --reload

16、办公室同事反映网络打不开,请简述一下排查故障的思路及解决方法?如果时好时坏又该怎么排查?

1
2
3
查看网卡配置是否有问题
查看路由表是否正确
时好时坏 查看是否IP冲突

17、网站出现200,302,400,404,500,502,503是什么意思?怎么排查和解决?

1
2
3
4
5
6
7
8
9
10
11
200  请求已成功,请求所希望的响应头或数据体将随此响应返回。
302 请求的资源现在临时从不同的 URI 响应请求。
400 1、语义有误,当前请求无法被服务器理解。除非进行修改,否则客户端不应该重复提交这个请求。   2、请求参数有误。
404 请求失败,请求所希望得到的资源未被在服务器上发现。
500 服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理。一般来说,这个问题都会在服务器的程序码出错时出现。
502 作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效
的响应。
503 由于临时的服务器维护或者过载,服务器当前无法处理请求。


400是客户端问题 50是服务端问题

18、描述会话超时、会话保持分别是什么概念什么场景使用?

1
2
3
会话超时:在HTTP协议中,客户机不再活跃时没有明确的终止信号.这意味着只有超时才是标识客户机不再活跃的唯一机制.比如用户打开网页后长时间不点
会话保持:在一次会话过程中发起的多个请求都会落到同一台机器上。常用于负载均衡

19、介绍一下那些可以优化加速用户访问网站体验的技术措施?

1
2
1、利用缓存
2、后端实行动静分离

20、什么叫网站灰度发布?如何实现灰度发布?

1
2
3
4
5
先启动一个新版本应用,但是并不直接将流量切过来,而是测试人员对新版本进行线上测试,启动的这个新版本应用,就是我们的金丝雀。如果没有问题,那么可以将少量的用户流量导入到新版本上,然后再对新版本做运行状态观察,收集各种运行时数据,如果此时对新旧版本做各种数据对比,就是所谓的A/B测试。

当确认新版本运行良好后,再逐步将更多的流量导入到新版本上,在此期间,还可以不断地调整新旧两个版本的运行的服务器副本数量,以使得新版本能够承受越来越大的流量压力。直到将100%的流量都切换到新版本上,最后关闭剩下的老版本服务,完成灰度发布。
如果在灰度发布过程中(灰度期)发现了新版本有问题,就应该立即将流量切回老版本上,这样,就会将负面影响控制在最小范围内。

21、哈希和加密的区别是什么?各自有什么用途?

1
哈希(Hash)是将目标文本转换成具有相同长度的、不可逆的杂凑字符串(或叫做消息摘要),而加密(Encrypt)是将目标文本转换成具有不同长度的、可逆的密文。

22、在linux系统中,测试DNS服务器是否能正确解析域名的客户端命令使用什么命令?

1
nslookup

23、tcp/ip四层模型分别是什么?

1
主机到网络层(比特)、网络层(数据帧)、传输层(数据包)、应用层(数据段)。

24、其中应用层最常用的协议有什么?

1
2
3
4
5
6
DNS 
SMTP   
HTTP
HTTPS
TELNET
FTP

25、传输控制协议中,面向连接的协议是?

TCP/IP 协议

26、一台主机要实现通过局域网与另一个局域网通信,需要做的工作是?

1
2
3
1.设置本机的默认网关 。

2.本地局域网默认网关上需要设置一条路由,用以完成本地局域网内的任一主机到目标局域网主机的路由工作。

27、局域网的网络地址192.168.1.0/24 局域网络连接其他网络的网关地址是192.168.1.1。主192.168.1.20访问172.16.1.0/24网络时,其路由如何设置?

1
route add -net 172.16.1.0  gw 192.168.1.1 netmask 255.255.255.0 metric1

28、ifconfig命令的作用是?

ifconfig命令被用于配置和显示Linux内核中网络接口的网络参数

29、在局域网内的某台主机ping命令测试网络连接时发现网络内部主机都可以ping通,而不能与公网联通,问题可能是

1
局域网的网关或主机的网关设置有误

30、包含主机名到ip地址的映射关系的文件是?

1
/etc/hosts

31、如何将本地80端口的请求转发到8080端口,当前主机ip192168.2.1

1
iptables -t nat -A PREROUTING -d 192.168.2.1 -p tcp --dport 80 -j REDIRECT --to 8080

32、查看http的并发请求数与其tcp连接状态

1
2
3
ps -ef | grep httpd | wc -l

netstat -nt | awk ‘{++S[$NF]}END{for(a in S) print a,S[a]}‘

33、用tcpdump嗅探80端口的访问看看谁最高

1
tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F"." '{print $1"."$2"."$3"."$4}' | sort | uniq -c | sort -nr |head -20

34、两台电脑都在同一个网络环境中A电脑访问不到B电脑的应用。此类现象可能是那些方面所致?如何处理?

1
2
3
1、防火墙未添加白名单,需要在防火墙配置中添加白名单

2、应用例如nginx未添加白名单 在应用的访问配置中添加白名单

35、修改以太网mac地址的命令为?

1
ifconfig

202.106.100.1是何类地址?

1
C

当IP地址的主机地址全为1时表示?

1
对于该网络的广播地址

路由器的主要功能是?

1
选择信息包传送的最佳路径

Linux系统网络

linux下如何添加路由

1
2
3
4
5
6
7
8
9
10
11
12
使用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

1
2
3
4
5
6
7
修改ip地址--    即时生效:   # ifconfig ens33 10.18.41.5 netmask 255.255.255.0

重启生效:修改 # vim /etc/sysconfig/network-scripts/ifcfg-eth0 IPADDR=10.18.41.2

---修改host name-- 即时生效: # hostname 主机名

重新进入:# hostnamectl set-hostname 主机名

修改dns

1
修改# vim /etc/resolv.conf  #修改后即时生效,重启同样有效

在命令行下发一邮件,发件人:123@abc.com,收信人:abc@xyz.com

1
echo "hello"|mail -s "test" abc@xyz.com -- -f 123@abc.com 

请写出ip10.0.14.70mask255.255.255.192的网络地址和广播地址。并写下命令,在linux系统上配置10.0.14.65作为默认网关

1
2
网络地址:10.0.14.64     广播地址:10.0.14.127
sudo route add default gw 10.0.14.65

使用tcpdump监听TCP80端口来自192.168.0.1的所有流量,请写出命令。

1
$ tcpdump -i ens33 -nnA ‘port 80 and src host 192.168.0.1'

linux下如何添加路由

1
route  add   destination    mask     gw   

通过tcpdump查看网卡的Ping包?

1
2
3
4
5
6
7
#tcpdump -i ens33 icmp
执行命令后,查看是否有request和reply
出现request说明系统收到ping包,出现reply说明系统响应ping包
如果只出现request,那么
1、检查sysctl -a | grep icmp_echo,确认net.ipv4.icmp_echo_ignore_all=0
2、检查iptables -vL,确认-p icmp为ACCPET
如果没有request和reply都没有,那么说明ping包未能到达此主机,需要检查链路或者前端防火墙的策略。

显示网络接口常见命令是

1
2
3
ifconfig
或者
ip a

查看服务端口的命令是

1
ss -anptul

Linux查看当前主机TCP协议连接情况的命令为

1
ss -antpl

Linux操作系统查看当前网络设备命令为

1
ip a

将当前计算机的IP地址设为192.168.1.10,子网掩码为255.255.255.0命令为

1
ifconfigeth0192.168.1.10netmask255.255.255.0

Linux防火墙

有IP恶意刷流量怎么办

1
2
3
4
将对应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

如何临时、永久关闭linux防火墙?

1
2
systemctl stop firewalld (重启失效)
systemctl disable firewalld(永久关闭)

centos7默认防火墙允许80端口外网访问,写出相应安全策略

1
# iptables -A INPUT -p tcp --dport 80 -j ACCEPT

使用iptables拒绝8.8.8.8访问本机的53端口

1
2
3
4
iptables -I INPUT -s 8.8.8.8  -p tcp --dport 53 -j REJECT
表filter
3个链
INPUT FORWARD OUTPUT

Linux系统安全

优化

CPU利用率和CPU负载的区别

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
CPU利用率:显示的是程序在运行期间实时占用的CPU百分比

CPU负载:显示的是一段时间内正在使用和等待使用CPU的平均任务数。CPU利用率高,并不意味着负载就一定大。举例来说:如果我有一个程序它需要一直使用CPU的运算功能,那么此时CPU的使用率可能达到100%,但是CPU的工作负载则是趋近于“1”,因为CPU仅负责一个工作嘛!如果同时执行这样的程序两个呢?CPU的使用率还是100%,但是工作负载则变成2了。所以也就是说,当CPU的工作负载越大,代表CPU必须要在不同的工作之间进行频繁的工作切换。

举例说明

网上有篇文章举了一个有趣比喻,拿打电话来说明两者的区别,我按自己的理解阐述一下。

某公用电话亭,有一个人在打电话,四个人在等待,每人限定使用电话一分钟,若有人一分钟之内没有打完电话,只能挂掉电话去排队,等待下一轮。电话在这里就相当于CPU,而正在或等待打电话的人就相当于任务数。

在电话亭使用过程中,肯定会有人打完电话走掉,有人没有打完电话而选择重新排队,更会有新增的人在这儿排队,这个人数的变化就相当于任务数的增减。为了统计平均负载情况,我们5分钟统计一次人数,并在第1、5、15分钟的时候对统计情况取平均值,从而形成第1、5、15分钟的平均负载。

有的人拿起电话就打,一直打完1分钟,而有的人可能前三十秒在找电话号码,或者在犹豫要不要打,后三十秒才真正在打电话。如果把电话看作CPU,人数看作任务,我们就说前一个人(任务)的CPU利用率高,后一个人(任务)的CPU利用率低。

当然, CPU并不会在前三十秒工作,后三十秒歇着,只是说,有的程序涉及到大量的计算,所以CPU利用率就高,而有的程序牵涉到计算的部分很少,CPU利用率自然就低。但无论CPU的利用率是高是低,跟后面有多少任务在排队没有必然关系。

nginx的优化选项?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
1)nginx运行工作进程个数,一般设置cpu的核心或者核心数x2
如果不了解cpu的核数,可以top命令之后按1看出来,也可以查看/proc/cpuinfo文件 grep ^processor /proc/cpuinfo | wc -l

[root@lx~]# vi/usr/local/nginx1.10/conf/nginx.conf

worker_processes 4;

[root@lx~]# /usr/local/nginx1.10/sbin/nginx-s reload

[root@lx~]# 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

如何查看当前LINUX系统的状态:CPU使用内存使用负载情况以及网络状态

1
2
3
可以用TOP工具实时动态查看CPU使用率、内存使用负载情况,用ps命令查看当前时刻的CPU使用率、内存使用负载情况。

可以用netstat命令查看网络状态,netstat命令用来打印网络连接状况、系统所开放端口、路由表等信息;可以用ifconfig这个命令可以用于网络接口的启动/停止,更改设置和表示网络状态,在不添加任何参数的情况下,ifconfig可以表示网络接口的状态;可以用ss命令可以用来获取socket统计信息,它可以显示和netstat类似的内容。但ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信息,而且比netstat更快速更高效。

对于一个web服务器来说,应该调整那些linux内核参数。并说明他们的含义。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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。

jvm调优

1
vmstat iostat netstat strace top awk sed grep nexus MobaXterm 

硬件性能测试用过什么

1
2
3
4
对IO进行简单测试dd if=/dev/zero of=test bs=1M count=4096	用top和iostat查看wa%及写硬盘速度top-n1每秒钟的cpu
而发给我i的股份文件格式的结果v那边的而发给我i的股份文件格式的结果v那边的
建设建设咩黎中国
通过df-h命令查看磁盘情况通过hdparm测试读取速率hdparm-t/dev/sda linux中几块盘求平均值就是磁盘的平均读取速率

临时调整和永久生效系统内核参数在哪里调

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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_ignnore_all-=1

调整所有进程可以打开的文件总 fs.file-max=108248

如何查看当前linux系统的状态,如CPU使用,内存使用,负载情况

1
sar综合命令	mpstat11cpu监测		free-m内存使用		top负载

显示CPU利用率的命令,查看系统版本的命令

1
2
3
CPU利用率的命令:top或sar

查看系统版本的命令:cat/etc/redhat-release或uname-a

查看网卡历史流量实时查看网卡流量

1
2
3
网卡历史流量:sar-nDEV-f/var/log/sa/saxx#查看xx日的网卡流量历史

实时查看网卡流量:sar-nDEV15(每间隔1秒刷新一次,共5次)

如何查看当前系统每个ip的连接数

1
netstat -n | awk '/^tcp/{print$5}' | awk -F : '{print$1}' | sort | uniq -c

kernel调参

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
linux内核参数调整说明

所有的TCP/IP调优参数都位于/proc/sys/net/目录。例如,下面是最重要的一些调优参数,后面是它们的含义:

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—发送窗口的最大大小。

/proc目录下的所有内容都是临时性的,所以重启动系统后任何修改都会丢失。

建议在系统启动时自动修改TCP/IP参数:

把下面代码增加到/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有选择的应答。

请描述你是怎么优化Linux系统的?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
1、不用root,添加普通用户,通过sudo授权管理。

2、更改默认的远程连接SSH服务端口及禁止root用户远程连接。

3、定时自动更新服务器时间。

4、配置yum更新源,从国内更新源下载安装rpm包。

5、关闭selinux及iptable。

6、调整文件描述符的数量。进程及文件的打开都会消耗文件描述符。

7、定时自动清理/var/spool/clientmquene/目录垃圾文件,防止inodes节点被占满。

8、关闭没必要的开机自启动服务。

9、linux内核参数优化/etc/sysctl.conf,执行sysctl-p生效。

10、更改字符集,支持中文,但建议还是使用英文字符集,防止乱码问题,不要使用中文。

11、锁定关键系统文件。

12、清空/etc/issue,去除系统及内核版本登陆前的屏幕显示。

Linux系统下,如何修改test用户,最大的打开文件数量为10240,最大的进程数为20480?

1
2
3
4
5
6
7
8
9
[root@wing~]#vim /etc/security/limits.conf 

test softfsize 9000

test hardfsize10240

[root@wing~]#vim/etc/security/limits.d/20-nproc.conf rootsoftnprocunlimited

test hard nproc 20480

windows

如何判断出Windows操作系统是32位的还是64位的。

1
可以在我的电脑属性中查看

Windows 操作系统设置每天下午18 点自动关机,如何操作。

1
控制面板-》管理工具-》计划任务-》设置每天的关机时间

运维综合

如何查看当前登陆用户?同时知道自己使用的账户名?

1
# w

在linux系统中如何备份?

1
2
3
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 用来确定分区表在备份文件中的位置

MBR是什么?有什么用?

1
2
3
4
5
6
7
8
9
10
11
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引导程序的使命就光荣完成。

14日下午2点date+%Y%M%D%H%M输出的时间是什么?

1
18年10月14日2点10月

查看文件修改时间指令

1
stat

请简单描述vi编辑器的使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
vi是一种模式文本编辑器,具备三种使用模式。

一、一般模式:默认模式,用于移动光标、删除、复制、粘贴;

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、复原和重复

(1) 复原:u; (2) 重复上一操作:”.”。

二、编辑模式:用于插入或替换编辑文本;

1、插入模式

i,从当前光标处插入; I,从当前行的第一个非空格符处开始插入;

a,从当前光标的下一个字符处开始插入; A,从当前行的最后一个字符处插入;

o,当前行的下一行处插入新行; O,当前行的上一行处插入新行。

2、替换模式

r,替换光标所在的字符一次; R,一直替换光标所在的文字。

三、命令模式:用于查找、保存、替换大量文本、显示行号等。

1、查找与替换

/ 向下查找要搜索的字符串; ? 向上查找要搜索的字符串;

n 重复前一个查找(从前往后); N 反向重复前一个查找(从后往前);

:% s/替换前/替换后/g 或 1,$ s/替换前/替换后/g 全文替换

:n1,n2 s/替换前/替换后/g 在n1和n2行之间替换

2、行号的设置

:set nu, 显示行号 :set nonu, 取消行号

:wq或:x, 保存和离开 :w [文件路径], 另存为

:q 离开不保存

说出你知道的几种LINUX/UNIX发行版本

1
2
3
4
5
6
Linux主要的几种发行版本:
1、RedHat系列:RHEL、CentOS、Oracle linux。
2、SUSE 3、Ubutun 4、debian

Unix主要的几个发行版本:
1、Solaris 2、HP-UX 3、AIX

Linux如何挂载windows下的共享目录

1
2
3
4
5
6
7
8
9
10
11
12
# 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

linuxA机器提供了80端口服务,但是用户反馈访问慢,如何排查问题?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
亚信面试题MZD

第一题:数据库

账单表: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;

第二题:Unix命令

文件名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这个文件进行压缩;

tarczfAccQryFree2016.tar.gzAccQryFree2016.log

5、将AccQryFree2016.log这个文件移动到/root/pkgcx/log/下;

mvAccQryFree2016.log/root/pkgcx/log/

6、配置一个定时任务cron,将该文件在每周五下午6点进行删除;

018**5/usr/bin/rm-rf/root/pkgcx/log/AccQryFree2016.log

第三题:脚本语言

1、请使用shell脚本把第一题中账单月是2018.4月的整月账单数据写入文件中。

mysq-uroot-p'mima'-e"select*fromacc_billwherebill_mon=201804">a.txt

2、请写出一个守护进程脚本,脚本名称是send_sms.sh,请对此脚本编写守护进程脚本。

# vi /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)

$0stop

$0start

;;

reload)

kill-sHUP$(cat$PIDF)

;;

*)

echo"Usage:$0{start|stop|restart|reload}"

exit1

esac

exit0

#chmod+x/etc/init.d/nginx
#chkconfig--addnginx

第五题:自我阐述
请自我阐述一到两项自己的技能或者比较精通的技术;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
1、当网站访问较慢时,首先先查看本地网络是否正常

2、本地网络速率正常时,再检查下所访问的网站是否正常

总时间:网站的响应时间,可了解网站的性能瓶颈或者是利用谷歌或IE浏览器的F12开发者工具查看下网站的大小和网站的打开速度成不成正比。
3、网站出现无法访问时,使用故障诊断命令定位故障点。

命令分析:ping:检测IP或域名的连通性dig/nslookup:查看DNS解

析情况traceroute:显示从访问者到网站的路由连接状态,如果有节点无法连接,只需针对该故障点进行修复便可快速恢复网络。

4、利用浏览器开发者模式检查下图片、js、css是否做过压缩处理

5、数据库(连接数等)、服务器(cpu、内存等)

6、从网站本身找问题,网站的问题包括网站程序设计,网页设计结构,网页内容三个部分。

tcp链接状态有哪些,分别代表什么意思

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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:没有任何连接状态

写下之前工作中在生产环境中对何种角色的服务器上的哪些内容配置过备份,使用什么备份方法及备份策略,使用了什么方法检查备份的可用性?

1
2
3
4
5
1、 每天晚上00点整在Web服务器上打包备份系统配置文件、网站程序目录及访问日志并通过rsync命令推送备份服务器backup上备份保留2.内核备份

数据库备份

备份方案:1.设置数据库自动备份脚本文件,计划任务2.每个星期天做全库备份3.每日(星期天除外)做级增量备份4.在主服务器保留一个礼拜内的全库备份、增量备份5.将一个礼拜前的全库备份,增量备份数据FTP到其他环境6.还可以加入差异备份,多种备份形式。

名词解释:HDLC,VTP,OSPF,RIP,DDOS,GNU,netscreen,ssh,smartd,apache,WAIT_TIME

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
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

如何测试网速,测试视频吞吐与常规网速测试的区别

java报错socket

1
2
3
4
5
6
7
8
9
1.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状态的端口。只需要找一个没有被占用的端口就能解决这个问题。

平时在公司都干些什么?

1
2
3
4
5
6
7
8
9
10
11
1.处理报警,查看报警的原因,和开发一起解决,并且尽量找出避免再次发生的方法,例如添加一些定时清理脚本

2.处理发布,基本都是自动化,但是总有发布不成功或者需要回滚的时候,这时候就需要手工介入,找到原因,并跟开发一起讨论最后是否撤销还是重上 3.日常一起能够自动化的工作尽量找到自动化的方法

4.会启动一些和运维相关的项目,所以有时候也兼职项目开发 5.参与例会 6.学习,看看新闻,学习资料等等。

或者

1,等待监控系统报警 2,核心系统巡检,备份系统备份任务完成情况巡检 3,等待用户报障

4,例行任务计划攥写,例行任务执行,比如新开用户,存储扩容等; 5,项目性的工作,比如新购存储,新的监控系统,新的操作系统,应用系统验证 6,学习新知识,看技术文档或者公司的各种通知 7,和不同供应商(工程师),内部人员开会

远程管理卡作用。怎么通过命令看硬盘,内存等硬件故障。

1
2
3
4
5
6
7
1、远程安装操作系统

登录 监控电池、风扇、CPU、内存、磁盘等硬件设备的状态远程管理卡管理界面,用控制卡上的虚拟介质映射功能把自己电脑上的ISO文件或者物理光驱投递给机房里服务器。

2、电源控制功能 远程登录管理界面,进行开机、关机、重启

3.检查服务器硬件状态 监控电池、风扇、CPU、内存、磁盘等硬件设备的状态

请写出5个你常用的系统或网络维护工具的名称

1
2
3
4
5
6
7
8
9
10
11
配置部署自动化:ansible(puppet,saltstart)

日志采集、分析、报警:ELK

网络质量监控:smokeping、zabbix

监控(报警)自动化:nagios(监控系统),ganglia(集群监控),cacti(流量监控)、ipmonitor(ping监控)等

指标收集:collectd+statsd(statsite)

指标绘图:graphite、nrpe、pnp4nagios

假设网站结构为:Nginx→PHP-FPM→Mysql有部分链接打开缓慢,通过什么方式可以找到访问缓慢的链接

1
2
3
4
5
6
7
8
9
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可能有慢查询

在之前的运维工作中你遇到过哪些运维故障?是怎么解决的?请描述2个你发现并解决的故障案例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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.log2&1
01 3 * * 6 /app/bin/restart_tomcat.sh>>/app/log/backup/restart.log2&1

如果接到客服反馈:A项目www.lanxinA.cn无法打开,作为一名运维人员需要怎么操作?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
1、先把服务切走,保证公司网站能正常对外提供服务

2、查看网络是否正常

3、本地网络速率正常时,再检查网站是否正常,域名是否能被正常解析到ip

使用故障诊断命令定位故障点。

命令分析:ping:检测IP或域名的连通性

dig/nslookup:查看DNS解析情况

traceroute:显示从访问者到网站的路由连接状态,如果有节点无法连接,只需针对该故障点进行修复便可快速恢复网络。

4、检查服务器本身是否故障

5、协调开发检查设计是否异常

Linux运维工程师都需要具备哪些技能和职业品质?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
熟练使用shell,最好也能掌握python的使用。

熟悉运维自动化工具和平台的使用,能整合、研发更好,通过自动化,实现运维数据可视化、生成报表;

能够独立进行运维的问题跟踪与管理,故障处理和隐患排查,定期给出业务运维状况和容量报告;

能够研究移动互联网应用服务架构及其依赖的软硬件环境,跟踪各个子系统的内部运行状况,不断提高系统的健壮性与效率;

能熟练应对协助开发完成日常变更,上下线等的维护事务;

能对系统和业务数据进行统一存储、备份和恢复,对网络设备、服务器设备、操作系统运行状况进行监控。

首先要有良好的品行需要有发现问题,解决问题的能力。遇事沉着冷静。动动你的小脑袋夸夸自己,

一定要积极向上,杜绝消极思想。

有一个员工,说他的机器上不了网,请你描述一下,可能是哪些故障产生的,怎么解决这些故障?

1
2
3
4
5
查看软件和硬件

ping网关和其他机器.ping不通,看看是不是网卡被禁了,还是ipdnsgateway有问题,再看看网卡驱动是不是有问题.

硬件方面: 看看是不是网线没插好,网卡的灯亮不亮.

电脑开机时主机内发出嘀嘀的鸣叫声,且显示器无任何信号,此对象可能是哪方面所导致,怎样处理?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
可能是内存问题导致,一般是内存松动,灰尘较多.可以做清扫灰尘处理,重新插好内存等操作.

各种主板的报警音有些差别,常见两种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短:显卡损坏或显示卡没插好。

你对运维工程师的理解和以及对其工作的认识

1
2
运维工程师在公司当中责任重大,需要保证时刻为公司及客户提供稳定、安全的服务。保障公司正常对外提供服务。运维工程师的一个小小的失误,很有可能会对公司及客户造成重大损失,因此运维工程师的工作需要严谨。
同时在工作中也要能及时发现问题,解决问题,记录问题。在工作中以及工作之余不断充实完善自己,更好的服务公司。

标准端口的范围是?

1
答:1-65535

Linux中的服务自启动添加方法有哪些。

1
2
3
4
5
6
7
8
9
10
11
12
centos6:
有2种
1.chkconfig --level 35 服务名 on
2.vim /etc/rc.d/rc.local
/usr/sbin/服务名 start

centos7:
有三种
1.systemctl enable 服务名
2.vim /etc/rc.local
systemctl start 服务名

检查服务器是否正常工作的最好办法是?

1
1.ping服务器ip2.ss-antul|grep服务端口3.psaux|grep服务名4.systemctlstatus服务名

Linux记录log的服务叫什么名字?

1
rsyslog

如何查看命令的具体使用方法

1
2
3
4
5
6
7
8
命令  
--help
eg : ps --help

或者

man 命令
eg: man ps

Linux开机启动流程详细步骤是什么?系统安装完,忘记密码如何破解?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1.post加电自检  

2.MBR引导

3.GRUB引导

4.读取grub.conf文件

5.启动内核

6.加载伪文件系统(ramdisk)

7.启动init(systemd)进程

8.执行/bin/login

centos7:

1.BIOS初始化,开始post开机自检

2.加载mbr到内存

3.GRUB阶段

4.加载内核和initramfs模块

5.内核开始初始化,使用systemd来代替centos6以前的init程序

6.Systemd执行multi-user.target下的getty.target及登录服务

7.systemd执行graphical需要的服务

破解密码:

1
开机grub界面-->e-->Linux16开头的行-->ro改成rw-->行尾添加init=/bin/bash-->进入系统-->修改密码

写出linux系统开机的启动顺序

1
加载BIOS 读取MBR Boot Loader 加载内核 用户层init依据inittab文件来设定运行等级 init进程执行rc.sysinit  启动内核模块 执行不同运行级别的脚本程序 -执行/etc/rc.d/rc.local -执行/bin/login程序,进入登录状态

Linux开机启动流程详细步骤是什么?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
第一步:当然是加电了

第二步:加载BIOS设置,选择启动盘。这是因为因为BIOS中包含了CPU的相关信息、设备启动顺序信息、硬盘信息、内存信息、时钟信息、PnP特性等等。在此之后,计算机心里就有谱了,知道应该去读取哪个硬件设备了。在BIOS将系统的控制权交给启动硬盘第一个扇区之后,就开始由Linux来控制系统了。

第三步:加载磁盘中MBR中的grub MBR(Master Boot Record):即主引导分区,是启动盘的前512字节,里面存放了预启动信息和分区信息。前446个字节,即是grub引导程序后66个字节是分区表的信息

第四步:加载Linux内核系统到内存当中,运行超级进程/sbin/init进程。在Linux系统中,init进程的进程号永远是1,也就是说,系统中的所有进程的父进程都是init进程。可以使用命令pstree进行查看。

第五步:加载配置文件。init程序启动之后,会读取/etc/inittab文件,来决定系统的运行级别,Linux系统的运行级别有7中,从0-6

\# 0 - 关机模式(千万不要把initdefault设置为0 ,要不然你永远开不了机)

\# 1 - 单用户模式 (此模式相当于救援模式,内核损坏,root忘记密码等可以使用此模式进行恢复。相当于windows下的安全模式)

\# 2 - 多用户,但是没有NFS

\# 3 - 完全多用户模式 (文本命令行界面,一般服务器都是此模式)

\# 4 - 保留未使用

\# 5 - 图形桌面(系统启动之后会进入到图形化桌面系统中)

\# 6 - 重新启动(千万不要把initdefault设置为6 )

平时我们常用的也就是1,3,5。可以使用init 3 ,init 5进行切换。运行级别决定之后,加载相应的配置文件。第一个用户层文件就是/etc/rc.d/rc.sysinit脚本程序,它做的工作非常多,包括设定PATH、设定网络配置(/etc/sysconfig/network)、启动swap分区、设定/proc等等

第六步:加载内核模块,具体是依据/etc/modules.conf文件或/etc/modules.d目录下的文件来装载内核模块。

第七步:根据运行级别,系统会运行rc0.d到rc6.d中的相应的脚本程序,来完成相应的初始化工作和启动相应的服务。

第八步:启动init.d下的系统进程

第九步:出现登录系统的画面。

至此,Linux开启启动完成。

</body><scripts>

英文翻译
Many of our components require the use of JavaScript to function.
Specifically, they require jQuery, Popper.js, and our own JavaScript
plugins. Place the following near the end of your pages, right
before the closing tag, to enable them. jQuery must come first,
then Popper.js, and then our JavaScript plugins

请将上述英语翻译为中文。

1
2
3
4
我们的许多组件都需要使用JavaScript来运行。
具体来说,它们需要jQuery、Popper.js和我们自己的JavaScript插件。将下面的<script>s放在页面的末尾,右侧
在关闭</body>标记之前,启用它们。jQuery必须排在第一位,
然后是Popper.js,然后是我们的JavaScript插件。

常见协议http. https. ftp. mysql. redis默认端口号。

1
80 443 21 3306 6379

下列服务的默认端口

1
2
https    ftp    mysql    pop3  smtp   redis
443 21/22 3306 110 25 6379

写出下面服务的常用端口:ftp、http、dns、smtp、pop3、dhcp、tftp、mysql、ssh、https

1
2
3
ftp:21http:80dns:53smtp:25“简单邮件传输协议”pop3:110“邮局协议版本3”

dhcp:客户端是以UDP68服务器是以UDP67tftp:69文件传输协议mysql:3306ssh:22https:443

网络装机工具cobbler了解吗,有哪些组件?批量装机:pxe

linux中你常用的系统命令说5个

你对现在运维工程师的理解和以及对其工作的认识

1
运维工程师需要保障公司系统服务的正常运行,需要配和其他部门例如研发部门的发布工作,需要给公司进行系统搭建等等

发现一个病毒文件你删除了他又自动创建怎么解决?

1
查看进程是否异常,查看计划任务crontab  是否有异常

utf-8和Unicode的区别是什么?

1
2
Unicode 是「字符集」,Unicode为世界上所有字符都分配个唯一的数字编号
UTF-8 是「编码规则」

当前市场中有几种主流的浏览器? (至少列举出3种)。

1
chrome firefox  safari edge

请写出Linux系统关机命令、重启命令、文件夹赋权命令

1
2
3
4
5
6
7
8
9
10
shutdown
halt
init 0
poweroff

reboot
init 6
shutdown -h now -r

chmod

cdn原理

Squid有什么用?

1
Squid是一个高性能的代理缓存服务器,可以加快内部网浏览互联网的速度,提高客户机的访问命中率.Squid不仅仅支持HTTP协议,还支持FTP,gopher,SSL和WAIS等协议,还可以做代理服务器,降低服务器负载。

当安装linux操作系统时一般选择哪种操作?选择题2

1
2
3
4
1.“图形登录方式”,设定系统开始运行级别为4
2.“文本登录方式”,设定系统开始运行级别为3
3.“文本登录方式”,设定系统开始运行级别为5
4.“图形登录方式”,设定系统开始运行级别为3

说出你知道的linux/unix发行版本

1
Redhat、CentOS、Fedora、SuSE、Debian、Ubuntu

一般可以使用什么软件远程linux服务器?通过什么上传和下载文件?

1
2
远程终端:crt   x-shell   finalshell   
上传下载:xftp lrzsz

使用什么命令可以关闭linux系统?

1
shutdown              init 0

如果想在linux下实现热启,应当修改/etc/inittab下的那一行()。 2

1
2
3
4
1.#Trap CTRL-ALT-DELETE
2.#ca::ctrlaltfel :/sbin/shutdown -t3 -r now
3.#id:3:initdefault
4.#10:3:wait:/etc/rc.d.rc 3

若在文字界面下,需要键入何种指令才能进入图形界面(Xwindow)。 2 startx

1
2
3
4
1.reboot
2.startx
3.startwindow
4.getinto

启动samba服务器进程,可以有两种方式:独立启动方式和父进程启动方式,其中后者在( 3 )文件中以独立进程方式启动。

1
2
3
4
1./usr/sbin/smbd
2./usr/sbin/nmbd
3.rc.samba
4./etc/indetd.com

字符界面下使用shutdown命令重启计算机时所用的参数?

1
shutdown   -r 

显示系统主机名的命令是?

1
uname  -n 

某网站页面上的应显示图片和一些动态内容的一个展示框变为黑色,网站其他部分正常,可能的原因是什么?

1
查看网站图片连接是否正常,图片是否存在,数据库是否可以正常访问

如何找回root密码?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
1. 在重启系统的时候通过不断按下上下选择键阻断系统进行入正常启动,而是进入启动选择界面,然后根据
系统提示按下‘e’键去编辑选项

2、找到如下图中标记中的那一部分,这就是需要编辑的部分

3. 将ro 以后到UTF-8结束的所有内容全部删掉,然后将ro改为rw rd.break

根据系统提示的下一步同时按下Ctl+x进入密码修改

4. 首先执行chroot /sysroot/进行入到系统根目录下
然后执行passwd命令进行密码修改
修改完成后在根下创建文件touch /.autorelabel,使得系统再次启动时能够识别修改

5、 最后通过执行两次exit命令使系统重启,然后修改的密码就会生效了!

linux系统中用于打印队列查询的命令是?

1
Ipstat

请描述下列路径的内容是做什么?

1
2
3
4
5
6
7
8
9
/var/log/messages        存放的是系统的日志信息,它记录了各种事件,基本上什么应用都能往里写日志,在做故障诊断时可以首先查看该文件内容

/var/log/secure 一般用来记录安全相关的信息,记录最多的是哪些用户登录服务器的相关日志,如果该文件很大,说明有人在破解你的 root 密码

/var/spool/clientmqueue 是如果系统中有用户开启了cron,而cron中执行的程序有输出内容,输出内容会以邮件形式发给cron的用户,而sendmail没有启动所以就产生了这些文件。

/proc/interrupts 列出当前所以系统注册的中断,记录中断号,中断发生次数,中断设备名称

/etc/profile 记录环境变量 、开机自启动内容

某个项目现场需要对数据库做一些调整,项目经理早上通知A晚上7点到项目现场的机房开始准备工作,7点30准时开始调整,A晚上7点到现场后发现项目现场的大门紧闭,给用户打电话为没人接,一直徘徊到8点才得以进入机房,A对数据库进行操作后,在程序上进行调试,对应的功能完成了修改,A离开现场。第二天下午项目经理打电话给小A说道用户反馈因A操作失误导致其他功能异常。整个事件出了那些问题,如果换成你改怎么做。

1
给用户打电话无人接听后给项目经理打电话确认时间是否修改以及确定如果时间推迟和客户确认是否还需要调整,调整前调整过后都和客户及项目经理确认是否成功。

系统邮件

写出命令行发邮件,发件人:123@abc.com,收信人:abc@xyz.com。主题为test

1
mail   -s test    -r  123@abc.com   abc@xyz.com 

ZOOKEEPER

zookeeper如何保证事务的一致性

数据一致性是靠Paxos算法(一种基于消息传递的一致性算法。)保证的,Paxos可以说是分布式一致性算法的鼻祖,是ZooKeeper的基础 paxos的基本思路(深入解读zookeeper一致性原理):http://wely.iteye.com/blog/2362118

配置zookeeper节点(列入:server.1=llhadoop009:9502:9503),需要修改的配置文件是

1
zoo.cfg

你熟悉的远程控制软件有哪些?请列列举三种以上。

1
2
3
向日葵
teamviewer
vnc

默认情况下zookeeper的数据文件和事务日志是保存在同一个目录中,建议是将事务日志存储到单独的磁盘上,原因是?

平时在公司开发系统肯定都利用可视化配置界面将所有配置信息配置好了,如果要将这些配置信息部署到新的环境,或者更新已经存在的另一个环境的配置信息, 肯定不能把整个Zookeeper集群的文件夹都拷贝过去,删掉原有的完全替换为现在的新的这个。

列出作为完整邮件系统的软件,至少二类

1
2
3
Sendmail,(邮件传输代理程序)postfix,(WietseVenema在IBM的GPL协议之下开发的MTA(邮件传输代理)软件)

qmail(qmail是一个因特网邮件传送代理(简写为MTA),它运行在linux/Unix兼容系统下,是一个直接代替UNIX下Sendmail软件的邮件传送程序。)

hadoop中的HDFS的文件存储过程中的写操作。namenode节点作用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
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的作用:是管理文件目录结构,接受用户的操作请求,是管理数据节点的

运维面试套题-面试总结

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
阿里面试题
一、单项选择题
1. 一个大型网站准备上线,时间非常紧急,需要在 2 天内完成 2000 台 ECS 的开
通的环境部署,以下哪个功能可以帮客户解决困难?(C)
A、SSD
B、快照+OpenAPI
C、自定义镜像+OpenAPI
D、共享快照
2.存放用户账号的文件是(C)
A shadow
B group
C passwd
D Gshadow
3.Linux 系统中,下面哪个命令可以查看服务器的序列号(A)
A:dmidecode
B: lspci
C:modinfo
D:dmesg
4.当运行在多用户模式下时,用 Ctrl+ALT+F* 可以切换多少虚拟用户终端()
A:3
B:6
C:1
D:12
5.Linux 系统中,如何查看静态进程数?(B)
A:pstree
B: ps -ef
C:tree
D:top
6.如何查看当前 linux 系统的状态,如 CPU 使用内存使用负载情况,下列描述不
正确的是?(D)
A:可以使用 top 命令分析 CPU 使用,内存使用,负载等情况
B:可以使用 free 查看内存整体的使用情况
C:可以使用 cat/proc/meminfo 查看内存更详细的情况
D:可以使用 isof 打开指定的端口
7.Linux 系统中,更改文件 test.txt 属主和属组,如属主为 test,属组为 test1,
下面哪个命令是正确的?(C)
A:chmod test.test1 test.txt
B: chmod test1.test test.txt
C: chown test.test1 test.txt
D: chown test1.test test.txt
8.Linux 用于启动系统所需加载的内核程序位于(C)
A:/
B:/lib/modules/2.4.20_8/kernel
C:/boot
D:/proc
9.下列对协程的理解错误的是?(D)
A:一个线程可以运行多个协程
B:协程的调度由所在程序自身控制
C:Linux 中线程的调度由操作系统控制
D:Linux 中协程的调度由操作系统控制
10.在 bash 中,在一条命令后加入“1>&2”意味着(A)
A: 标准输出重定向到标准错误输出
B: 标准输入重定向到标准错误输出
C: 标准输出重定向到标准输入
D: 标准错误输出重定向到标准输入
11.在给定文件中查找与设定条件相符字符串的命令为(A)
A:grep
B:gzip
C:find
D:sort
12. 阿里云的产品中负责负载均衡的产品是?(A)
A. SLB
B. ECS
C. OSS
D. RDS
13.SLB 结合哪个产品可以实现跨地域(region)的容灾?(B)
A:OSS
B: DNS
14.建立动态路由需要用到的文件有(B)
A. /etc/hosts
B. /etc/gateways
C. /etc/resolv、conf
2
15.假设文件 fileA 的符号链接为 fileB,那么删除 fileA 后,下面的概述正确的
是(B)
A fileB 也随之被删除
B fileB 仍存在,但是属于无效文件
C 因为 fileB 未被删除,所以 fileA 会被系统自动重新建立
D fileB 会随 fileA 的删除而被系统自动删除
16.如果想在 Linux 下实现热启,应当修改/etc/inittab 下的哪一行(B)
A #Trap CTRL-ALT-DELETE
B ca::ctrlaltdel:/sbin/shutdown -t3 -r now
C id:3:initdefault:
D 10:3wait:/etc/rc.d/rc 3
17.Linux 系统中,下面哪个命令可以批量复制 test.txt 文件到多台物理机
/root/路径下,假设多台物理机 ip 列表文件为 all_ip? (C)
A cp -h all_ip test.txt/root/
B scp -h all_ip test.txt/root/
C pscp -h all_ip test.txt/root/
D rsync -h all_ip test.txt/root/
18.启动 DNS 服务的守护进程 C
A:httpd start
B:httpd stop
C: named start
D:named stop
19. 弹性伸缩是否一定要搭配 ECS 使用?(A)
A. 否
B. 是
20. Aliyun Linux 和以下哪个系统兼容?(D)
A. UBUNTU
B. OpenSUSE
C. windows server2008
D. Red Hat
21.使用阿里云弹性伸缩来实现计算资源的弹性配置时,做了如下设置:伸缩组的
属性中设置 MinSize=2,MaxSize=7 伸缩规则为增加 3 台 ECS,伸缩配置也进行了
正常的配置。该伸缩组当前的云服务器 ECS 实例数为 3 台,通过设置定时任务来
执行,执行一次后,会增加几台云服务器 ECS 实例?(C)

A.1 台
B.2 台
C.3 台
22. 小明是一个社交网站的架构师,创业初期用户量较少,每个注册客户上传的
图片文件直接保存在了一台阿里云的云服务器 ECS 实例上。最近用户量爆增,图
片存储的空间达到了 3.5T,WEB 服务器由原来的 1 台 ECS 实例扩展到了 5 台
ECS 实例,性能问题得到了解决,可是保存在 ECS 实例的图片无法在多台 ECS 之
间共享读写。 阿里云的____A____产品非常适合解决这个问题。
A. 对象存储 OSS;
B. 负载均衡 SLB;
C. 归档存储(Archive Storage);
D. 内容分发网络 CDN;
23. 您基于阿里云的云服务器 ECS 实例部署了 Mysql 数据库,随着业务量的不断
上涨,您需要通过读写分离的方式来改善数据库的性能,可以采用阿里云的(C)
产品来快速解决该问题。
A. 对象存储 OSS
B. 本读 SSD 盘
C. 云数据库 RDS
D. 表格存储
24. RED HAT LINUX 9 默认使用的文件系统类型为(B)
A. ext2
B. ext3
C. FAT
D. Swap
25.在 vi 编辑器中的命令模式下,重复上一次对编辑的文本进行的操作,可使用
(C)命令。
A 上箭头
B 下箭头
C .
D *
26.一个文件名字为 rr.Z,可以用来解压缩的命令是(C)
A tar
B gzip
C compress
D uncompress
4
27.删除文件命令为(D)
A:mkdir
B:move
C: mv
D: rm
28. pwd 与 pwdx 命令的区别是 pwd 用于查看进程的运行目录,pwdx 用于查看当前
目录(B)
A. 正确
B. 错误
29.若当前目录为/home,命令 ls -l 将显示 home 目录下的 (D)
A 所有文件
B 所有隐含文件
C 所有非隐含文件
D 文件的具体信息
30. 在/etc/fstab 文件中指定的文件系统加载参数中,(D)参数一般用于 CD-ROM
等移动设备。
A. Defaults
B. sw
C. rw 和 ro
D. noauto
31. 系统平均负载考虑 CPU 和内存因素(A)
A. 正确
B. 错误
32. 如何快速切换到用户 Mary 的主目录下?(D)
A. cd @Mary
B. cd #Mary
C. cd &Mary
D. cd ~Mary
33. /etc/shadow 文件中存放(B)
A. 用户账号基本信息
B. 用户口令的加密信息
C. 用户组信息
D. 文件系统信息
34. linux 系统中,通过哪个命令可以查看磁盘空间使用情况?(A)
A. df -h
B. du -sm
C. fdisk
D. fsck
35. 除非特别指定,cp 嘉定要拷贝的文件中在下面哪个目录下(D)
A. 用户目录
B. Home 目录
C. Root 目录
D. 当前目录
36.若当前目录为/etc,命令 ls –l 将显示 etc 目录下的(D)
A. 所有文件
B. 所有隐含文件
C. 所有非隐含文件
D. 文件的具体信息
37.某文件的组外成员的权限未只读,所有者拥有全部权限,组内权限为读与写,
则改文件的权限为(D)
A. 467
B. 674
C. 476
D. 764
38. 当使用 mount 进行设备或者文件系统挂载的时候,需要用到的设备名称位于
(D)目录
A. /home
B. /bin
C. /etc
D. /dev
39. 卸载某个软件包,应使用(B)
A. rpm -i
B. rpm -e
C. rpm -q
6
D. rpm -v
40. linux 系统中,更改文件权限,例如更改文件名 test.txt 权限为-rw-r-xr--,
下面哪个命令是正确的(C)
A. chown 644 test.txt
B. chmod 655 test.txt
C. chmod 654 test.txt
D. chmod 655 test.txt
41. linux 系统中,如何使用命令 crontab 查看当前用户下有哪些定时任务?(B)
A. crontab -e
B. crontab -l
C. crontab -r
D. crontab –s
42. docker 环境下,如何无需进入 docker 从 docker 中拷贝文件到本地?(A)
A. docker cp 容器 id:/root/.bashrc /tmp/
B. ftp
C. scp :/root/.bashrc /tmp
D. docker scp 容器 id:/root/.bashrc /tmp/
43. 如何查看容器 abc 的详细信息?(D)
A. Docker rmi -f‘docker images -q -a’
B. Docker stats 容器 id
C. Docker top 容器 id
D. Docker inspect abc
44. 如何备份一个 docker 镜像? (B)
A. docker backup
B. docker save
C. docker export
D. docker write
45. 请判断查看容器的进程命令为“Docker top 容器 id”是否正确(A)
A. 正确
B. 错误

46. 如何运行一个 zabbix 的镜像,并打开一个终端?(A)
A. docker r run -it zabbix bash
B. docker pull zabbix
C. docker search zabbix
D. docker inspect zabbix
47. docker 如何停止所有正在运行的容器?(D)
A. sudo docker run IMAGE env
B. sudo docker rmi $(sudo docker images -q -f danging=true)
C. docker kill $(sudo docker ps -q)
D. docker kill $(sudo docker ps -a -q)
48. 在使用 mkdir 命令创建新的目录时,在其父目录不存在时先创建父目录的选
项是(D).
A. -m
B. -d
C. -f
D. -p
49. 在使用 docker create 命令创建容器或使用 docker run 创建并运行容器的
时候。可以使用-m|–memory 参数来调整容器使用内存的大小。(A)
A. 正确
B. 错误
50. 用于将事务处理写到数据库的命令是( C )
A.insert
B.rollback
C.commit
D.savepoint
51 docker 如何批量清理临时镜像文件?(B)
A. sudo docker run IMAGE env
B. sudo docker rmi $(sudo docker images -q -f danging=true)
C. docker kill $(sudo docker ps -q)
D. docker rm $(sudo docker ps -a -q)
52. 容器具有数据持久化特性,无论进入容器进行什么样的更改,退出容器后再
重新启动容器,里面数据不会丢失(A)
A. 对
B. 错
53. 如何查看容器的统计信息?(B)
A. Docker rmi -f‘docker images -q -a’
B. Docker stats 容器 id
C. Docker top 容器 id
D. Docker inspect abc
54. Docker 能在非 Linux 平台(Windows+MacOS)上运行(B)
A. 正确
B. 错误
55. docker 本地的镜像文件都存放在哪里(A)
A. /var/lib/docker/目录下
B. /lib/docker/目录下
C. /var/docker/目录下
D. /var/libs/docker/目录下
56. 容器退出后,使用 docker ps 命令无法查看到,说明容器被自动删除了?(B)
A. 对
B. 错
57. linux 中 vi 打开文件后,若是想要从光标开始处向文件尾搜索 test,该执行
什么命令?(A)
A. /test
B. ?test
C. s/test
D. find/test
58. 通过以下哪个命令可以查看当前网卡和网卡配置 ip 地址的情况?(B)
A. ipconfig -a
B. ifconfig -a
C. ip -a
59. 请给出查看“cat”命令全路径的命令。(C)
A. where cat
B. find cat
9
C. which cat
D. search cat
60. shell 中修改 test.txt 的 23 行 test 为 tset 的命令为(A)
A. sed –i ‘23s/test/tset/g’ test.txt
B. sed –i ‘n23s/test/tset/g’ test.txt
C. sed -l ‘n23s/test/tset/g’ test.txt
D. sed -a ‘23s/test/tset/g’ test.txt
61. 在 linux 中,要查看文件内容,可用(A)命令。
A. more
B. cd
C. login
D. logout
62. usermod 命令无法实现的操作是(B)
A. 账户重命名
B. 删除指定的账户和对应的主目录
C. 加锁与解锁用户账户
D. 对用户密码进行加锁或解锁
63. 关于/etc/fstab 文件的正确描述有(B)
A. 系统启动后,有系统自动生成
B. 用于管理文件系统信息
C. 用于设置命名规则,是否使用可以用 tab 命名一个文件
D. 保存硬件信息
64. shell 查看 test.txt 的 5 到 10 行的命令为(C)
A. sed -i '5,10p' test.txt
B. sed -n '5,10h' test.txt
C. sed -n '5,10p' test.txt
D. sed -i '5,10n' test.txt
65. 当字符串用单引号(’’)括起来时,SHELL 将 (C)。
A. 解释引号内的特殊字符
B. 执行引号中的命令
C. 不解释引号内的特殊字符
D. 结束进程
66. 如何删除一个非空子目录 /tmp( B )。
A. del /tmp/*
B. rm -rf /tmp
C. rm -Ra /tmp/*
D. rm –rf /tmp/*
67.Linux 用户磁盘配额配置文件 aqupta.user 的默认访问权限是(C)
A:644
B: 755
C:600
D:700
68.若 URL 地址为 http://www.nankai.edu/index.html,请问哪个代表主机名(D)
A: nankai.edu.cn
B: index.html
C: www.nankai.edu/index.html
D: www.nankai.edu
二.多项选择题
1. <阿里云>OSS 与自建存储对比有哪些优势? (ABCD)
A. 数据更可靠;
B. 存储能力强;
C. 系统更安全;
D. 服务可用性高;
2. 数据库通常采用的备份方式有(ABE)
A. 完全备份
B. 增量备份
C. 日志备份
D. 冗余备份
E. 差异备份
3. Linux 操作系统中,下列哪些命令可以实现重启:(CDF)
A. shutdown -h
B. poweroff
C. reboot
D. shutdown -r
E. init 0
F. init 1
4. 运维人员想要列出目录下的内容,而且需要 cd 到该目录下,操作者需要哪些
权限?(AC)
A. 读
B. 写
C. 执行
D. 递归
5. 以下说法正确的是(ABC)。
A. zip 命令中的“-m”选项表示压缩完成后删除源文件
B. unzip 命令中的“-n”选项表示不覆盖已有的文件
C. tar 命令中的“-u”选项表示更新文件
D. gzip 命令中的“-l”选项表示显示文件名和压缩比
6. 在服务器上安装 linux 安装系统并进行系统分区时,哪些分区是要进行分出
的?(AC)
A. /
B. /usr
C. /swap
D. /proc
7. Linux 系统中的常见的设备类型有哪些(AB)
A. 块设备
B. 字符设备
C. 流设备
D. 缓冲设备
8. 以下的命令中哪些可以在日常工作中帮助运维人员查看分析网络故障?
(ACD)
A. ping
B. init
C. telnet
D. netstat

9. 以下哪些命令不能直接在 test 中显示以"*"开头的行?(ABC)
A. find * test
B. wc -l * < test
C. grep -n * test
D. grep ‘^\*’ test
10. 在 linux 中,shell 环境都有哪些?(AD)???ABCD
A. bash
B. ksh
C. csh
D. pdksh
sh---Bourne Shell,最初使用的 shell
bash---Bourne Again Shell,LinuxOS 默认的,它是 sh 的扩展
csh---C Shell,比 sh 更适合的变种 Shell,它的语法与 C 语言很相似
Tcsh--- ,C Shell 的一个扩展版本
ksh---Korn Shell,集合了 csh 和 sh 的优点
pdksh--- ,是 Linux 系统提供的 ksh 的扩展
11. linux 系统上配置 web 服务器而且需要支持动态页面,需要安装的软件有哪
些?(ABCD)
A. Apache
B. MySQL
C. httpd
D. PHP
12.Docker 的存储驱动程序有哪些()BCDE
A AUES
B Btrfs
C Device mapper
D OverlayFS
E ZFS
F VFS
13. PaaS 是 Platform as a Service 的首字母缩写,意为平台即服务,即把 IT
环境的平台软件层作为服务出租出去,下面属于该层的服务包含哪些? (ABC)
A. 中间件&运行库;
B. 数据库;
C. 操作系统;
D. 应用软件;
14. docker 命令以下哪些为高危操作(AD)
A. docker rm 容器 id
B. docker inspect 容器 ID
C. docker mv 容器 ID
D. docker rm -f 镜像 ID
15. docker 网络模式包括(ABCD)
A. host 模式
B. container 模式
C. none 模式
D. bridge 模式
16. docker 容器与主机之间的数据拷贝命令是?(BCD)
A. docker pc /www 96f7f14e99ab:/www/
B. docker cp /www 96f7f14e99ab:/www/
C. docker cp 96f7f14e99ab:/www /www/
D. docker cp 96f7f14e99ab:/www /tmp/
17. 如何启动本机 Docker 服务(AC)
A. $ sudo systemctl start docker
B. $ docker version
C. $ sudo service docker start
D. $ docker info
18. Docker 的主要用途有(ABC)
A. 提供一次性的环境
B. 提供弹性的云服务
C. 组建微服务架构
D. 提供存储服务
19. 以下哪些命令能构建一个镜像?(BD)
A. docker create
B. docker commit
C. docker add
D. docker build
20. docker 进入容器的方法有哪些?(CD)
A. 使用 docker attch 命令
B. 使用 exit 命令
C. 使用 docker attach 命令
D. 使用 docker exec 命令
21. 有关 docker 正确的是(ABC)
A. docker info 可以查看到集群内容器的数量
B. docker ps 容器 ID(参数 -a:显示所有容器,包括未运行的;-n:列出最近
创建的 n 个容器)
C. docker pause 暂停容器中所有的进程
D. docker create 创建一个新的容器并且启动它
22.有关 docker 下列说法正确的是(ACD)
A 当我们在本地主机上使用一个不存在的镜像时 Docker 就会自动下载这个镜像。
如果我们想预先下载这个镜像,我们可以使用 docker pull 命令下载它。#docker
pull ubuntu : 13.10 , 同 样 设 置 镜 像 标 签 #docker tag 860c279d2fec
runoob/centos:dev。
B docker stats 动态查看 docker 资源消耗情况,包括:内存,网络 I/O 但是不
包括 CPU。
C docker 通过 exec 可以创建两种任务(后台型任务和交互型任务)交互型任务:
docker exec -it “容器 ID”/bin/bash 后台型任务:docker exec -d “容器
ID”touch 123.
D 批量操作容器,docker ps -q 只列出 docker id
23. net 选项后面可以跟哪些参数?(ABC)
A. None
B. host
C. bridge
D. Btrfs
24. Docker 的核心组件有哪些?(ACD)
A. 镜像
B. 虚拟机
C. 容器
D. 仓库
25.Docker 的主要用途有(ABC)
A 提供一次性的环境
B 提供弹性的云服务
C 组建微服务构架
D 提供存储服务
26.构建 Docker 镜像应该遵循哪些原则?(ABCDE)
A:尽量选取满足需求但较小的基础系统镜像,建议选择 debian:wheezy 镜像,
仅有 43MB 大小
B:理编译生成文件,安装包的缓存等临时文件
C:安装各个软件时候要指定准确的版本号,并避免已入不需要的依赖
D:从安全的角度考虑,应用尽量使用系统的库和依赖
E:使用 Dockerfile 创建镜像时候要添加.dockerignore 文件或使用干净的工作
目录
27.下面有关孤儿进程和僵尸进程的描述说法。错误的是:ABC
A 孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行。那么那些子
进程将成为孤儿进程。
B 僵尸进程:一个进程使用 fork 创建子进程,如果子进程退出,而父进程并没有调
用 wait 或 waitpid 获取子进程的状态信息。那么子进程的进程描述符仍然保存在
系统中,这种进程称为僵尸进程。
C 孤儿进程将被 init 进程(进程号为 1)所收养,并由 init 进程为他们完成状态
收集工作。
D 孤儿进程和僵尸进程都可能使系统不能产生新的进程,都应该避免。
28.在服务器上安装 Linux 安装系统并进行系统分区时哪些分区是要进行分出
的?(AC)
A: /
B: /usr
C: /swap
D: /proc
29..如下的命令中哪些能让服务程序以超级用户的权限运行?(BCD)
A:su
B:sudo
C:设置程序的 SUID 位
D:设置程序的 SGID 位
三.简答题
1. 请给出查看当前默认网关和其它路由表的信息的命令。
netstat -rn
2. 请给出查看/var 目录下每个文件/文件夹的大小的命令。
du -sk /var/*

3. 请给出将“sleep 1500“命令放在后台执行的命令,并给出查询该后台命令
Pid,然后 kill 掉该命令的方法和命令。(8 分)
nohup sleep 1500 &
kill -9 `ps -ef|grep 1500|grep -v 'grep'|awk '{print $2}'`
or 分步操作也可以
4. 请给出”su oracle” 和”su - oracle”的区别。
“-”代表:开启新的 shell 环境,切换到新用户并且读取新用户的环境变量
没有“-” 不开启新的 shell 环境,保持老用户的环境变量,仅仅切换用户
5. 请给出将 test1,test2,test3 三个文件打包成 test.tar 的文件的命令,并
给出查看 test.tar 打包信息的命令,并给出解压 test.tar 文件的命令。
tar -cvf test.tar tes1 test2 test3 打包
tar -tvf test.tar 查看
tar -xvf test.tar 解包
1:你工作上遇到的复杂的问题是什么?怎么处理的?
2:简述你参与过的一个项目,主要部署产品及承担的作用是什么?你在工作中的
责任?
3.每天 8 小时工作中,你的工作任务都是什么?你是如何安排这个时间的

1
2
1. 环境分为几类

物种环境:
开发环境(DEV):程序员用于开发的服务器
测试环境(UAT):一般是克隆一份生产环境的配置,用于开发完成之后对代码稳定性测试
生产环境(PROD):正式对外提供服务的
以上三个环节为系统开发的三个阶段
UAT环境:用户接收度测试,及验收
仿真环境:已经出售给客户的系统所在环境,又称为商用环境。
1
2
3
4


2. 研发多少人,运维多少人,测试多少人

一个运维要对应10个开发,技术好的可以对应20个开发,五个人的测试团队要对应到七八十个研发。
一个公司最少也要有三四十个开发,否则一些项目和需求基本上没法满足一个开发周期

1
2
3

3. 监控怎么做的


采用zabbix进行集中监控,通过配置zabbix-agent的配置文件使用被动模式,进行主动的上传监控值。server端给监控的主机添加一些相应的触发器,使他出发某一个阈值,进行一个钉钉报警和邮件报警。
1
2
3
4
5



4. 法制怎么得来的


设定好监控项,然后建立一个图标,观察一到两周,取图标的最高点和最低点取一个平均值的方法来进行设定阈值的。
1
2
3
4
5



5. 对于cpu、内存和磁盘的监控阈值是多少


磁盘的预警阈值在90%左右。cpu的预警阈值在80%。内存85%左右
1
2
3
4
5



6. 如果一个操作系统被挂载了三个磁盘,怎么用zabbix去监控这三张磁盘的使用率。


使用zabbix的自定义宏。具体的没研究明白
1
2
3
4
5



7. 邮件报警存在的意义


邮件一般都是延迟推送的。邮件一般不作为报警的主要媒介。邮件报警的意义主要限定在记录。那它会记录一些重大事件发生的一些时间点,不用在这个聊天工具或者说协作工具里面去查找历史记录
1
2
3

8. 集群有100台机器,再增加30台作为测试环境,如何做这件事情


利用ansible的playbook 进行统一的安装zabbix-agent。利用absible定义关键的变量,配置模板来修改各个客户端的配置文件,因为agent的配置文件都是比较统一的。在服务端配置zabbix的自动注册,由于agent配置文件提前设置好了主机元数据,动作设置匹配主机元数据中的关键词,然后再在匹配到动作之后进行一个操作,添加到主机、主机群组、添加监控项模板。
1
2
3

9. 自定义监控项都做过什么


服务器硬件上如cpu、内存、磁盘的剩余量等。mysql主从复制的状态、web服务器的状态是否正常、流量的大小等。
1
2
3
4
5



10. web服务中能监控的指标有哪些


机器的性能:cpu、磁盘的i/o、内存、磁盘空间、网络i/o、文件句柄数等信息
服务运行监控:运行的状态,错误的日志监控
1
2
3
4
5



11. 除了用zabbix做监控以外,日志方面有没有产品


采用elk,进行一个日志的收集,相应日志的可视化。
1
2
3
4
5



12. 一般报错之后,是找其他人去处理还是自己去处理


自己能够处理的话,就自己处理了。如果说实在处理不了再交给其他人去处理。
1
2
3
4
5



13. 处理过什么报错


处理过MySQL主从中,从库宕机。解决的方法,重做slave,停止slave从新导入主库的备份数据,配置master.info信息,启动slave然后检查一下从库的状态。

keepalive脑裂(如果使用云主机的话是没有脑裂的情况的,只有物理机有)。解决的方法:将主的服务先关闭,不要让他两抢ip和资源了。

web服务的服务挂掉。解决方法:先尝试是否能将服务拉起来,拉起来之后查看日志发现是由于数据流量的访问过大导致的服务宕了。

1
2
3
4
5



14. 如何监控到脑裂的情况

使用自定义监控项,利用ip a show 网卡的名字 | grep 过滤vip | wc -l 统计行数如果为0则没有发生脑裂。 或者通过ping 主节点 网关的方式来进行判断如果网关ping不通了,证明从收不到主的心跳检测了,我们就判断它发生脑裂
1
2
3
4
5



15. 有测试环境吗?使用什么构建的

有测试环境,使用docker 进行构建的
1
2
3
4
5



16. zabbix如何去监控容器

使用zabbix的自带的模板去监控。首先导入docker官方的模板,安装zabbixangt2 配置docker主机。 模板包含一系列常规监控项,用于Docker实例通用指标监控,例如:可用镜像数量,Docker架构信息,容器的总数等等。除此之外,该模板还使用LLD(低级别发现)
1
2
3
4
5



17. 你有什么想问我的吗

加班严重吗?面试官肯定会回答工作项链如果高的话可以正常下班, 下一个问题应该问工作的饱和度是多少。面试关回答后问 日常工作中涉及到哪些面 脑袋灵光点多想想。
1
2
3
4
5
6






1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118




-------------------------------------------

zabbix如何做的

```
采用zabbix进行集中监控,通过配置zabbix-agent的配置文件使用被动模式,进行主动的上传监控值。server端给监控的主机添加一些相应的触发器,使他出发某一个阈值,进行一个钉钉报警和邮件报警。
```

监控过哪些参数

```
1. 监控web服务
web服务是否正常
业务(网页是否能访问、是否可以完成下订单、注册用户)
服务的响应时间
服务的并发量(活动用户、非活动用户)
2. 监控数据库
监控磁盘使用情况
监控内存内存使用
查看并发连接数量
检查数据库执行增删改查的频率
检查主从状态
检查数据库的备份情况
3. 服务器监控
磁盘:
使用率
inode数
block数
读写速率
CPU:
监控cpu负载
监控使用cpu资源最多的进程
内存:
使用率
缓冲区
缓存区
交换分区大小
网络:
监控每个网卡的上先行速率
监控占用网络带宽见多的进程
监控数据包的丢包
监控网络数据包的阻塞情况
进程:
当前系统中的总进程数
监控特定的程序的进程数
```

ELK做过哪些图表

```
统计各个接口的请求数量
查看接口响应时长的分布情况
查看请求数量分布情况
具体接口的响应时间
系统错误码数量
浏览量的趋势图,柱图
请求响应时间占比-饼图
```

ELK的数据流向

```
在服务器上装一个轻量级的日志采集工具filebeat,filebeat将数据传输到kafka队列,避免数据过大,产生日志洪峰,流到logstash,logstash会到kafka集群中进行读取、过滤数据,es从logstash读取数据,在通过kibana以图表的方式进行展示
```

filebeat如何分开采集两个文件的日志

```
在/etc/filebeat/filebeat.yml内进行一个多日志文件的编写,在inputs内定义一个paths,设置采集文件的一个路径,再用log_topics用来设置文件的一个类型,对其进行一个文件的分类,再使用fields,用来标记这个日志,同理,可以采集多个日志文件
```

cicd的了解

```
PM从wiki,jira进行创建,由前端以及后端进行查看,然后发送工作流给UI人员,UI人员会根据需求将做好的一些图片放到制品库里,FD,FE人员会到制品库内拉取一些资源编写代码,将一些文档,源代码存储在gitlab内,因为gitlab内都是源代码,没有办法进行上线,需要jenkins进行一个构建和打包,因为公司内不可能只有一个项目,所以需要一个小工具job,一个job会对应gitlab中的每一个功能代码仓库,一旦FE,FD向gitlab内传输数据,Jenkins会通过webhook工具进行检测,Jenkins会自动的将该仓库中的代码拉到自己的本地,进行构建与打包,然后采用Jenkins调用ansible的剧本向测试环境与生产环境来进行相应的功能发布,
```

灰度发布和金丝雀发布的区别

```
灰度发布,也叫金丝雀发布。是指在黑与白之间,能够平滑过渡的一种发布方式。AB test就是一种灰度发布方式,让一部分用户继续用A,一部分用户开始用B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面来。灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度,而我们平常所说的金丝雀部署也就是灰度发布的一种方式。
```

怎么区分发布测试环境和生产环境

容器的生命周期有哪些状态

```
启动状态
运行状态
停止状态
重启状态
```

制品库

```
存储一些UIA所需的一次图片资源以及harbor的私有镜像
```

有没有用docker做集群

```
没有用decker做集群的,用k8s做集群,
```

Nginx报413错误怎么解决

```
包体过大;
调整Nginx配置文件中的client_max_body_size的值
```


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
运维面试试题                                        V20220524
*姓名: *答题开始时间: *结束时间:
1.Linux文件权限一共10位长度,分成四段,第四段表示的内容是( )
A文件类型 B文件所有者的权限 C文件所有者所在组的权限 D其他用户的权限
2.有一个nginx日志文件,文件名为 access_log ,以下是日志格式和日志样例:
#日志格式 (其中$body_bytes_sent 为发送给客户端的字节数)
$remote_addr - $remote_user [$time_local] $host "$request" $status $body_bytes_sent "$http_referer"   
#日志结构举例  
20.244.232.88 - - [12/Apr/2022:16:50:06 +0800] help.jjwxc.net "GET /user/article/248 HTTP/1.1" 200 10616 "http://my.jjwxc.net/"  
请用命令或脚本查询出消耗流量最多的10个IP地址。



3.假如有一台服务器的ip是192.168.0.100,现在我想实现只有ip地址是192.168.0.10 - 192.168.0.88的服务器可以ssh连接到这台服务器,请问可以用哪些方法可以实现呢?请详细描述下实现过程。



4.有若干只兔和鸡,兔和鸡加起来一共有100条腿,请写一个简单的脚本,可以用shell或python,列出兔和鸡各有多少只的所有组合(假设所有的兔和鸡的腿都是健全的,且兔和鸡至少为1只)





5.linux内核优化,都优化过哪些参数?至少三个




6.如何批量查找出根目录下所有的软连接,并且查看软连接的路径信息。



7.使用docker搭建一套简单的php+nginx的环境
要求:
1.最终实现能够访问:index.php
2. PHP版本为7.4.26,nginx版本为1.18
3. php需要安装好mysqli扩展,把安装好扩展的镜像推送到私有仓库(假设私有仓库的地址为:192.168.0.2:80,账号密码都为admin)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
第 1 页 共 2 页
题中所涉及的相关文件见附录
题一
有两个目录 source、dist,比较source目录中的文件和dest中的文件是否相同(只
需要比较source中有的文件)请打印出这些文件,要求带上路径信息。
提示:可用 md5 值比较文件是否相同
题二
判断 SystemOut.log 日志文件中, 某一时间之后是否有以下内容, 表示服务
启动成功。
6/11/19 18:00:00:
#### # # #### #### #### #### ####
# # # # # # # # # # # # # #
# # # # # # # # #
#### # # # # ##### #### ####
# # # # # # # #
# # # # # # # # # # # # # #
#### #### #### #### #### #### ####
例如 时间为 "6/11/19 18:00:00"
提示: 可以通过 "####" 来判断成功字符串
降低要求: Application started
题三
设计一个爬虫类Spiders,函数和参数可按照自己实际情况进行设计。
爬取地址,和点击顺序:
1.http://124.222.151.161:7777/ 点击“查看用户”标题下“查看”按钮;
2.在用户表格页中,点击“查看详细信息”链接,获取用户详细信息;
第 2 页 共 2 页
函数设计要求
1. 爬取“用户页面”与“详细信息”页面,将所有用户信息存储位json格式,并
存储到本地,文件名“users.json”,json格式要求
{"users":[{"id": 1, "username": "xxx", "address": "xxx", "job": "xxx", "country":
"xxx", "phone_number": "xxx"},{"id": 2, "username": "xxx", "address": "xxx", "job":
"xxx", "country": "xxx", "phone_number": "xxx"}
....]}
2. 设计一个用户获取函数get_user_info{username},能够对username进行关键字模
糊查询,输入关键字返回用户详细列表,如果有多个符合结果,则返回多个结
果(按id号升序排列)
例如:执行get_user_info("红")、返回结果为
[{"id": 1, "username": "李江红", "address": "xxx", "job": "xxx", "country": "xxx",
"phone_number": "xxx"},
{"id": 14, "username": "李红", "address": "xxx", "job": "xxx", "country": "xxx",
"phone_number": "xxx"}]
规范要求: 请遵守 pep8 编程规范进行代码编写
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
刘泽军面试问题:自我介绍
nginx的问题
1.用户上网不能访问页面,是什么情况?
2.你上家公司nginx的地址重写,会话保持是怎么弄的?
3.你上家公司服务器升级,回话不中断,怎么保持?
3.服务不中断,让新的配置起作用,该怎么做?
4.平滑发布和灰度发布各自特点与应用?
5.关闭nginx的方式有哪几种?如何优雅的关闭?
--------------
1.数据库的恢复和备份是怎么进行的?
2.
物理备份、逻辑备份的各自特点以及区别?
3.MYSQL数据库配置文件有哪些重要参数?
4.zabbix的服务端和客户端的端口是什么?
5.zabbix遇到常见的报警,你是怎么处理的?比如内存、网络,磁盘?
6.查看内存的使用情况,有哪几种命令?里面的内容分别代表什么?
7.Top命令里面都能看到哪些参数,分别代表什么意思?
8.CPU使用率很低,但是负载很高,是什么情况以及怎么解决?
1
2
3
4
5
6
7
8
9
10
11
面试总结:
自我介绍
你是系统运维吗
你在之前工作中遇到哪些有挑战性的事
遇到问题时没有向你的同事、领导求教吗
如果是驻场运维,你觉得该如何把这个工作做好
你的上一份工作为什么离职
是统招本科吗
你对接下来的新工作有什么期望
薪资呢
你对我们的岗位还有什么想问的
1
2
3
4
5
6
7
8
9
10
11
12
系统运维笔试题

1.linux创建lvm流程
2、什么是nginx,优点是什么,什么是反向代理
3、tomcat启动无法访问,如何解决?
4.devops是什么,有没有做过类似项目;
5.pod创建流程是怎样的?
6.k8s存储中emptyDir是什么,特点是什么
7.docker stop和docker kill的区别
8.简述Kubernetes如何实现集群管理?
9.kubelet的功能、作用是什么?
10.分别简述服务器cpu、内存负载过高及磁盘使用率过高等三种现象如何排查解决?
1
2
3
4
5
6
7
8
9
10
自我介绍
发offer必须来单位附近租房
写了一堆linux和mysql和Python和Windows的面试题
能不能接受单休
问上一家主要干嘛
为什么来北京
问了项目的细节
假如来干运维能不能干人事的(说白了让你也干招人的事还有一堆别的破事)
说了下公司的主要业务
然后就到点人家下班了说后期电话联系
1
2
3
4
5
6
7
8
9
10
11
12
13
面试总结
线下面试(北京)
上一家公司不在北京吗
家住在哪
工作时间可以接受吗
工作时间可能还会往后推可以接受吗
介绍了公司业务

线上提问(天津)
1.如何实现在同一交换机下,同一个地址段内,两台运行正常的服务器,无禁 ping 设置,无法相互 ping 通
2.如何实现对网站页面的监控,在无法正常访问时发出报警
3.如何实现安装完成操作系统之后,自动拉取相关服务配置
4.这个代码有什么问题
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
HR:
先填一个调查表
自我介绍
和人沟通怎么样
你和上家公司的同事沟通多吗
你上个公司在河北,怎么想来北京发展
离职原因
学信网可查嘛,学士学位证
校内比过赛是吗,获得过市华为ICT是吗
哪个项目让你成就感最多,你起到什么什么角色
有面试过其他工作嘛

技术:
自我介绍
linux操作系统具体用的什么
说说网络查询的命令
数据库的查询,修改语句
测试接口,怎么调试
之前为啥离职
对哪些系统有过运维的(公司的产品)
本科人工智能为什么转运维
主公司主要是干啥的,你去过现场对接嘛
和客户打交道嘛,会测试一些东西嘛
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1.Tcp三次握手的原理
2.mysql主从复制原理
3.mysql双主双从的具体细节
4.nginx如何处理不同的请求和资源
5.grep用过什么参数? -i -v是什么意思?
6.了解正则吗? * ? + 是什么意思?
7.Redis和mysql的区别?
8.Redis为什么读写速度快?
9.Docker里面你用过哪些参数?
10.容器和虚拟机的区别
11.Zabbix的主动模式和被动模式的区别?
12.Zabbix的自定义监控项怎么做?
13.如果有一批新的机子要加到监控里面你怎么做?
14.Ansible写过剧本吗?
1
2
3
4
5
6
7

1.keepalived的工作原理和注意事项
2.你熟悉哪些数据库
3.mysql如何修改一个字段的值
4.docker如何查看容器的分层
5.docker如何实现端口映射和系统文件挂载
6.会python吗,了解什么库?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<网易面试题>
如何用ansible实现系统初始化
zabbix监控过什么
平均负载和cpu使用率的区别
内存free -m buffer和cash的含义,内存过高会发生什么,内存高为什么会变卡,什么时候会出现使用swap分区的情况,如何关闭swap分区
df -Th 里有什么
inode是什么
nat是什么
公有地址和私有地址,私有地址三个地址段是什么
防火墙了解吗,四表五链是什么,如何用iptables禁止一个ip访问
tcl协议三次握手是什么
netstat -nplut,请介绍n p l t u 分别表示什么的
tcp拥塞窗口
统计nginx日志里访问最多的ip
常见的服务器品牌有什么,服务器cpu和笔记本cpu区别
计算机的基本组成是什么
ssh登陆到云服务器很卡怎么办
如何查询使用内存或者cpu,从高到低排序
简单介绍子网掩码概念
centos如何开启网卡自启,配置文件在哪,修改后如何生效
htd和ssd有了解过吗,这两种硬盘读写速度快慢如何
1
2
3
4
5
6
1.面向对象程序的特点是什么?
2.mysql怎么优化的?
3.mysql语句,是慢查询,你怎么优化?
4.mysql怎么备份的,用的什么命令?
5.php,tomcat,nginx怎么调优的
6.nginx修改端口号是优化吗,你一般都改成什么端口?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
讲一下你做过的项目都是怎么部署的
为什么要用双主双从
什么叫双主双从
双主双从的好处
双主双从,假设业务正在运行,主库挂了,多长时间会切过去
这个时候你会去观察服务器的负载吗?
free能看到什么信息
你腾讯云用的什么配置
你装完mysql以后你的服务器剩余的内存剩余多少
每一个cpu核心的内存负载怎么查看
做项目的时候遇到过服务器很卡的情况吗
nginx是用来做什么的
写一下动静分离的具体配置
nginx更改配置后,你怎么重新启动的
nginx一直存在流量,你在重启时会影响到访问吗?
web服务的监控需要监控哪一些
nginx有没有启动,用脚本怎么监控,写到聊天框
k8s你了解过吗?
tomcat是部署在哪?
tomcat挂了,nginx会有处理吗?
你编码能力怎么样?
python里面怎么去拷贝一个对象呢?
你为什么会投运维这个岗位
你在学的过程里面你觉得最难的一个点是什么
你觉得你会有什么缺点吗?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
一轮:
1、自我介绍
2、上家公司做什么的?多少台服务器?你负责多少台?
为什么不在河北工作了?
3、业务的架构说一下?
4、用的什么监控?自己会搭建吗?
5、普罗米修斯了解吗?
5、shell脚本熟练吗?
6、上一份工资多少?期望薪资多少?
我这有台操作系统,有些需求你来操作一下。
1.这台操作系统什么版本的
2.有几个cpu
3.看一下nginx有几个进程
4.列出它的pid号
5.平常写过哪些脚本?
6.大概写一下数据库备份的脚本
7.java熟悉吗、python

二轮
1、自我介绍
2、上家公司做什么的?你负责哪块?
3、linux的一些操作命令(记不太清了)
创建用户如何分组、文件、目录、自定义时间格式、动态查看日志、前几行、后几行、删除文件 r、f代表什么、查看进程、cpu利用率、磁盘使用率、内存使用率、tar 的参数分别代表什么意思、.gz如何解压到指定目录、软硬链接如何制作、
/proc目录存放什么东西
4.DNS服务的进程名是什么
5.shell编写能力怎么样
6.if、while、for的语句
7.==和-eq的区别
8.shell中有哪些函数,分别怎么用
9.sql的增删改查说一下
10.多表查询用什么,有几种
11.内外链接的区别
12.a表有10个数据、b表有5个数据、b表中符合查询条件的有三条,使用左链接查询出共多少条数据
13.mysql的语句优化说一下
14.慢查询怎么用
15.ansible一般用来干什么,用过哪些模块
16.dockerfile怎么写
17.docker的命令说一下
18.公司用的什么监控?为什么不用普米,普罗米修斯了解过吗
19.zabbix监控哪些东西,如何监控的
20.container的基本命令
21.redis存储类型,如何优化
(大概就是这些,记不清了。。)

自我评价写了多少条,写的什么内容(...)
平时工作遇到问题是一个人处理的吗
对于加班怎么看
加班干不完的活怎么办
领导给你很多任务完不成怎么办
你还有啥想问的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
介绍一下你对linux的理解
常用的命令
cp命令的-p是干什么用的
ls -l是干什么用的
ll和ls -a有什么区别
怎么去区分那个是文件,那个是目录
rw用数字多少代替
top命令能查看什么信息
mysql的主从同步靠什么进行的
主从复制一共有几个线程
同步出现问题怎么去排错
查看主从状态里面都有那些信息
nginx里面的负载机制了解哪些
负载均衡的算法了解那些
sh算法的具体方法
ansible使用过吗?
从头开始讲一下你怎么写这个playbook剧本
你大学的主修课程没有运维,那你为什么会去选择培训运维
容器化和虚拟化的区别
容器底层是怎么实现的
dockerfile怎么去编写
运行容器的时候需要那些参数
端口映射是那个参数,后面端口那个是容器的,那个是物理机的
k8s的架构和服务都有哪些
k8s的网络组件用过哪些
kubeproxy了解是做什么的
k8s集群内部的网络组件用过那些
k8s在云上会多一个什么组件
你自己自学过什么
redis是做什么的,哨兵是什么,哨兵机制是怎么实现的
你自学的话是通过哪些方法去学习的
为什么没有通过更多的官方网站去学习
讲一下什么是栈,栈的机制是什么?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
北京得意音通技术公司面试题MZD

一、Linux操作系统知识

企业中Linux服务器系统分区标准是什么?(硬盘为300G,内存16G)

/boot200M /swap16G /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即可 •剩余的磁盘空间保留,不再进行分区,将来分配给不同的使用部门,由他们自己根据需求在进行分配

3.某一天突然发现Linux系统文件只读,该怎么办呢?完整操作步骤。

答:首先把系统关机,然后以光盘启动进入救援模式(linuxrescue),执行"fsck.ext3-y/dev/sda2"(假如只读的分区类型为ext3,分区为/dev/sda2)

4.一般可以使用什么软件远程linux服务器?通过什么上传文件和下载文件?

远程连接linux的软件:xshell、SecureCRT、putty、vnc(图形化) 上传和下载文件:lrzsz、sftpscp

5./mnt目录主要用于什么?/root目录跟root用户有什么关系?/根目录与/boot目录有什么联系?

答:/mnt主要用来挂载外部设备,/root根目录是root用户的家目录,/boot目录是/根目录的子目录

6.某一天误操作,执行了rm-rf\*,会有哪些情况发生?请举例。

答:文件被彻底删除,很难恢复。严重点系统瘫痪,数据全部丢失

二、Linux命令及文件操作

在/tmp/目录下创建test.txt文件,内容为:Hello,World!,用一个命令写出来。

答:echo"Hello,World">/tmp/test.txt

给test.txt文件除所有者之外增加执行权限,最终以数字写出文件的权限。

答:chmod655test.txt##普通文件默认权限为655

用vim命令编辑test.txt,如何跳转到末行,首行、行首、行末,如何在光标行下行插入,如何复制5行,删除10行,查找dear的字符、把dear替换为dear.com

答:末行:G 首行:gg 行首:^ 行尾:$ 光标下插入一行:o 复制5行:5yy(包括当前行) 删除10行:10dd(包括当前行) 替换::%s/dear/dear.com/g

查找linux系统下以txt结尾,30天没有修改的文件大小大于20K同时具有执行权限的文件并备份到/data/backup/目录下。

答:find/-name"*txt"-mtime+30-typef-size+20k-perm655-execcp{}/data/backup/\;

当前test.txt所属的用户为root,组为abc,请将test.txt使拥有者为abc,组为root,写出命令。

答:chownabc.roottest.txt##或者chownabctest.txt,chgrproottest.txt

每次开机在/tmp目录下创建一个当天的的日期文件夹(提示:当前日期表示的方法为:`date+%Y%m%d`)

答:vi/etc/rc.local

mkdir-p/tmp/`date+%Y%m%d`

chmod777/etc/rc.d/rc.local

如何查看文件内容,命令有哪些?查看文件第1行到3行,查看文件最后一行。

答:cat、more、less,

sed'1,3p'test.txt或者head-3test.txt,

最后一行:tail-1test.txt

查看linux服务器IP的命令,同时只显示包含ip所在的行打印出来。

答:ifconfig, ifconfig|grep"inetaddr:"

将普通用户test加入root组的命令是?

答:usermod-G root test

poc-data目录有10个子目录,子目录名为1000~1010,其中各包含不同数量的文件。请编写一段shell脚本计算出各个子目录下的文件数量并打印出来。

foriin{1000..1010}

do

echo"$i的文件数量:$(ls-1$i|wc-l)"

done

ps aux会列出进程的以下属性,请解释每个属性的含义。

USER PID% CPU% MEM VSZ RSS TTY STAT START TIME COMMAND

ecuac226311.00.03635721900?Ss1Oct10578:27./asrdstart

USER: 运行进程的用户 PID: 进程ID %CPU:CPU占用率 %MEM:内存占用率 VSZ: 占用虚拟内存

RSS: 占用实际内存驻留内存 TTY: 进程运行的终端?是不依赖任何终端 STAT: 进程状态

START: 进程的启动时间 TIME: 进程占用CPU的总时间 COMMAND:进程文件,进程名

解释一下符号链接(Symboliclink)和硬链接(Hardlink)的区别。

硬链接不会创建新的inode,只是给源文件多加了一个文件名 硬链接不能跨分区 硬链接删除源文件后,另一个文件还能用

软链接创建新的inode,相当于重新创建了一个文件 软链接可以跨分区 软链接删除源文件后,链接文件不能再使用

Linux网卡配置文件路径是什么?要使服务器上外网,必须满足的条件有哪些?需要配置什么?

答案: 网卡配置文件路径:/etc/sysconfig/network-scripts/ifcfg-eth*(*代表数字)

要上外网需要:能够链接internet的网线(或无线)、有网卡

​ 需要配置:IP、netmask、gateway、dns(自动或手动都ok,服务器一般自动)

请写出568A与568B的线序

答案(1)568A线序排列:白绿、绿、白橙、蓝、白蓝、橙、白棕、棕。

(2)568B线序排列:白橙、橙、白绿、蓝、白蓝、绿、白棕、棕。

网络拓扑设计:

(1)有一家集团公司,其资金需要在内部建立起一套完成集团内部资金调度的MIS系统。

(2)该系统在结构上有C/S架构的应用模式,又有B/S架构的应用模式。

(3)该系统的管理人员在资金部内部,都在总部大楼一层内,主要使用C/S架构的软件部

分。该系统面对的集团很多下属单位,分布在全国各地,使用浏览器访问总部。

(4)该系统在总部同银行进行连接、实时进行数据交换

如题:请您根据以上事实,对其网络、设备方案进行设计,并绘制出网络拓扑的草图,然后对其进行描述。MIS:主要指的是进行日常事务操作的系统。这种系统主要用于管理需要的记录,并对记录数据进行相关处理,将处理的信息及时反映给管理者的一套网络管理系统。

C/S:指Client/Server(客户端/服务器)架构。

B/C: 指Browser/Server(浏览器/服务器)架构。![img](assets/wpszfvcWE.jpg)

PAT和NAT分别代表什么?

NAT:网络地址翻译在内部网络中使用内部地址,通过NAT把内部地址翻译成合法的IP地址,在Internet上使用。其具体的做法是把IP包内的地址域用合法的IP地址来替换

PAT:属于Nat的一种,是把内部[地址映射](https://baike.baidu.com/item/地址映射)到外部网络的一个[IP地址](https://baike.baidu.com/item/IP地址/150859)的不同端口上。

在路由器中,使用什么命令查看路由器的路由表?

[root@localhost~]# oute print

简述tcp链接三次握手的过程。

第一次握手:建立连接时,[客户端](https://baike.baidu.com/item/客户端)发送[syn](https://baike.baidu.com/item/syn)包(syn=j)到[服务器](https://baike.baidu.com/item/服务器),并进入[SYN_SENT](https://baike.baidu.com/item/SYN_SENT)状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。

[第二次握手](https://baike.baidu.com/item/第二次握手):[服务器](https://baike.baidu.com/item/服务器)收到[syn](https://baike.baidu.com/item/syn)包,必须确认客户的SYN([ack](https://baike.baidu.com/item/ack)=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入[SYN_RECV](https://baike.baidu.com/item/SYN_RECV)状态;

第三次握手:[客户端](https://baike.baidu.com/item/客户端)收到[服务](https://baike.baidu.com/item/服务)器的SYN+ACK包,向[服务器](https://baike.baidu.com/item/服务器)发送确认包ACK([ack](https://baike.baidu.com/item/ack)=k+1),此包发送完毕,客户端和服务器进入[ESTABLISHED](https://baike.baidu.com/item/ESTABLISHED)(TCP连接成功)状态,完成三次握手。

简述二层交换机和三层交换机的区别。

二层交换机和三层交换机的区别有以下5点:

1、工作层级不同二层交换机工作在数据链路层,三层交换机工作在网络层,三层交换机不仅实现了数据包的高速转发,还可以根据不同网络状况达到最优网络性能。

2、原理不同二层交换机的原理是当交换机从某个端口收到一个数据包,它会先读取包中的源MAC地址,再去读取包中的目的MAC地址,并在地址表中查找对应的端口,如表中有和目的MAC地址对应的端口,就把数据包直接复制到这个端口上。三层交换机的原理比较简单,就是一次路由多次交换,通俗来说就是第一次进行源到目的的路由,三层交换机会将此数据转到二层,那么下次无论是目的到源还是源到目的都可以进行快速交换。

3、功能不同二层交换机基于MAC地址访问,只做数据的转发,并且不能配置IP地址,而三层交换机将二层交换技术和三层转发功能结合在一起,也就是说三层交换机在二层交换机的基础上增加了路由功能,可配置不同vlan的IP地址,vlan之间可通过三层路由实现不同vlan之间通讯。

4、应用不同二层交换机主要用于网络接入层和汇聚层,而三层交换机主要用于网络核心层,但是也存在少部分三层交换机用于汇聚层的现象。二层交换机用于小型局域网,三层交换机用于大型局域网。

5、支持的协议不同二层交换机支持物理层和数据链路层协议,如以太网交换机,二层交换机和集线器HUB的功能差不多,而三层交换机支持物理层、数据链路层及网络层协议。

什么可以实现动态IP地址分配?

DHCP可以实现动态IP地址分配。

问:什么协议,是最为普遍的一种内部协议,一般称为动态路由信息协议?

​ RIP协议

请写出ISO/OSI七层模型各层的名字及功能,并举例在不同层所对应的协议数据在OSI传输的过程OSI参考模型的7层分层结构参考模型中,从下至上,每一层完成不同的目标,请依次列举并写出各层包含的协议。详细说明一下,osi模型从第7层到第1层依次是:

第7层 应用层:OSI中的最高层。为特定类型的网络应用提供了访问OSI环境的手段。应用层确定进程之间通信的性质,以满足用户的需要。应用层不仅要提供应用进程所需要的信息交换和远程操作,而且还要作为应用进程的用户代理,来完成一些为进行信息交换所必需的功能。它包括:文件传送访问和管理FTAM、虚拟终端VT、事务处理TP、远程数据库访问RDA、制造业报文规范MMS、目录服务DS等协议;

  第6层 表示层:主要用于处理两个通信系统中交换信息的表示方式。为上层用户解决用户信息的语法问题。它包括数据格式交换、数据加密与解密、数据压缩与恢复等功能;

  第5层 会话层:—在两个节点之间建立端连接。为端系统的应用程序之间提供了对话控制机制。此服务包括建立连接是以全双工还是以半双工的方式进行设置,尽管可以在层4中处理双工方式 ;

  第4层 传输层:—常规数据递送-面向连接或无连接。为会话层用户提供一个端到端的可靠、透明和优化的数据传输服务机制。包括全双工或半双工、流控制和错误恢复服务;

  第3层 网络层:—本层通过寻址来建立两个节点之间的连接,为源端的运输层送来的分组,选择合适的路由和交换节点,正确无误地按照地址传送给目的端的运输层。它包括通过互连网络来路由和中继数据 ;

  第2层 数据链路层:—在此层将数据分帧,并处理流控制。屏蔽物理层,为网络层提供一个数据链路的连接,在一条有可能出差错的物理连接上,进行几乎无差错的数据传输。本层指定拓扑结构并提供硬件寻址;

  第1层 物理层:处于OSI参考模型的最底层。物理层的主要功能是利用物理传输介质为数据链路层提供物理连接,以便透明的传送比特流。

  数据发送时,从第七层传到第一层,接收数据则相反。

  上三层总称应用层,用来控制软件方面。下四层总称数据流层,用来管理硬件。

数据在发至数据流层的时候将被拆分

在传输层的数据叫段 网络层叫包 数据链路层叫帧 物理层叫比特流

中盾面试题1802

常见协议(http、https、ftp、mysql、redis)默认端口号。

80 443 21 3306 63 79

根据服务器硬件配置,安装Linux操作系统时如何分区?

(硬件配置1:硬盘2T,内存32G)、(硬件配置2:硬盘6T,内存128G)

fdisk:   swap分区根分区boot分区   8到16G剩下的给根  10G或20G

gdisk:   超过2T必须使用gdisk     swap分区根分区boot分区  32G到64G

3.Linux6.X如何修改ftp用户目录路径,以及修改时应当注意的事项?

单独修改某一个账户的配置?

user_config_dir=/etc/vsftpd/userconf   #vim/etc/vsftpd/userconf/zhanghu   local_root=/zhanghu

/etc/passwd权限问题属主属组

4.Linux系统统计服务器服务连接数命令?

1
2
3
4
5
# netstat -n | awk '/^tcp/{++S[$NF]}END{for(ainS)printa,S[a]}' 

或是

# netstat -nat | grep ESTABLISHED | wc-l
虚拟化平台中使用模板克隆方式,复制一台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 6.简述raid0raid1raid5三种工作模式的特点。 7.Http的错误代码含义(404410504502)? 404没有访问页面 410请求的资源在服务器上已经不再可用,而且没有任何已知的转发地址 504网关或者代理工作的服务器尝试执行请求时,未能及时从上游服务器或者辅助服务器收到响应 502网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应 请使用awk sed grep三个命令,列举写出命令语句。 grep‘root’/etc/passwd sed-ri‘/SELINUX=/cSELINUX=disabled’/etc/selinux/conf cat/etc/passwd|awk‘NR==1{print$1}’ 10.Mysql创建数据库的命令,创建表的命令,插入语句的命令? createdatabase库名createtable表名(类型)insertinto 11.描述Lvs、nginx负载均衡的五种调度读算法。 7层:rrwrrip_hashfairurl_hash lvs:rrwrr最少链接加权最少链接最少队列调度 12.Linux中的服务自启动添加方法有哪些? 7systemctlenable服务名把启动命令写到fstab或/etc/rc.local 6chkconfig服务名on/etc/rc.d/rc.local 14.简述二层交换机和三层交换机的区别。 二层交换机工作在数据链路层;三层交换机工作在网络层,同时具备二层交换机的功能;二层交换机基于端口转发数据;三层交换机可以基于IP地址转发数据包;二层交换机只有一个管理IP;三层交换机每个端口都可以配IP地址;二层交换机不同Vlan之间通信需要借助第三层的设备;三层交换机不同Vlan之间通信不需要借助设备 15.centos7默认防火墙允许80端口外网访问,写出相应安全策略。 firewall-cmd--zone=public--add-port=80/tcp--permanent 命令含义:--zone#作用域 --add-port=80/tcp#添加端口,格式为:端口/通讯协议 --permanent#永久生效,没有此参数,重启后失效 16.使用tcpdump监听TCP80端口来自192.168.0.1的所有流量,请写出命令。 tcpdump-nntcpport80andsrc192.168.0.1 17.Tomcat调整JVM内存的大小需要修改哪些配置文件。 在tomcat\bin\catalina.sh文件中, JAVA_OPTS=-Xms1024m-Xmx1024m-XX:PermSize=256M-XX:MaxNewSize=512mXX:MaxPermSize=256m 18.apache如何修改配置参数,将默认端口改为非默认端口。 /etc/httpd/conf/httpd.conf主配置文件中的Listen后的就是端口号rpm-qchttpd查看配置文件 19.网络地址:172.16.22.28/27,请写出此地址的子网中有多少台主机及可用主机数数量? 2^5=32可用-2=30 20.Linux运维工程师都需要具备哪些技能和职业品质? 答:技能:(1)足够专业的知识面储备 (2)凭熟悉程度+相关文档结合配置服务,以便提高工作效率又防止漏配 品质:(1)学会去积累,网络、系统、数据库领域知识多如牛毛,以便于跟不同人士进行交流 (2)对排错过程,问题以及解决方法做好笔记,等下个问题来了的时候,能记着最好,记不着就来查看笔记,以最快速度去解决问题,而把时间精力拿来研究下一个问题 (3)谨慎,有可能误操作让公司损失惨重,个人信心受到影响 (4)责任心,主人翁意识,这片区域归我管! 这家公司应该是隶属于公安部的事业单位,据他介绍全国各地有几个自己的数据中心, 进出都要经过武警的排查,还要访客卡,给人的感觉并不好,公司环境一半,像是80年代的风格。先是到一个很小的办公室进行了笔试,答题纸都找不到了,可能先接待我的是实习生。笔试完之后,终于看到了重量级的人物,先是问了上家公司的架构,仔细询问了工作的具体内容,然后问了离职的原因,技术方面问的不多,他们这里主要是数据库,mysql和oracle他觉得我的sql语句是比较基础的,接下来就是围绕着笔试题问,难度不打,跟我说大概下周的周四周五进行下一次的面试,说明了公司的工作性质,可能是7x24小时的工作制度,但是个人信息方面差的比较严,今天要走了身份证号,说要查一下有没有什么不良的记录,发了office之后也需要3周到1个月之后才可以入职,要仔细的审查学历,个人信息之类的东西,这个主管主要强调了他们属于公安部门,查的比较严。在我离开之后还打电话问了我的年龄的事情(简历上和身份证不符)。 讲师老闫公司工作情况-别人问你需求你要问场景-给各种银行做软件的--系统工程师-开始什么都不让干看业务级的文档 接电话处理内部工单(事件单)查数据库写质检单告诉他们原因 其他部门系统会负责去数据库取数据awk格式化输出复制粘贴或弄成excel发给人家 问题:vi ctrl+z了搞不清楚是哪个了把导入的数据弄丢了 日常工作:检查日志--用ftp交互文件 早班4点半到公司跟同事沟通看监控监控自己的还要监控别人的交易的成功率等 公司工作情况:公司名称:新晨科技股份有限公司-地址:北京市海淀区蓝靛厂东路2号金源商务中心B座8层 给各大银行开发交易系统平台,并且维护--主要语言是C也有Java--系统运维工程师 单位:邮政储蓄银行全国数据中心---地址:北京市丰台区丰台路口72号院---原来是邮政的一个职业培训学校 运维人员在一个含有5层的楼内办公,里面最少有几十家公司的外派人员 这公司都属于外包公司,人员归属还是属于本公司,工资发放为本公司,但是这些钱的来源 是甲方(这里就是邮政储蓄银行)提供的,甲方现提供给自己的公司,自己的公司会扣除一部分,把剩余给你,一般你本人会在甲方公司有一个岗位级别评级。 同城异地灾备:亦庄--异地灾备:合肥市 机器大部分都是IBM的小型机,系统大部分是Unix。也有一些红旗的linux系统,但都是跑的不重要的应用,比如作为日志数据的备份 小白的小事故: 场景:我们的部门负责的系统经常会和其他公司负责的系统去交互,当然避免不了要和其他公司的运维人员打交道。 故事就这样开始了,小白收到小组组长的指示,需要根据其他公司运维人员提供的一个文件的内容条件,去我们系统的数据库中取数据。 小白用vi打开这个文件,看完一部分后,执行了ctrl+z。他以为把这个文件关闭了。 之后他再次用vi打开这个文件查看剩余的内容。结果就出现的满屏的英文,他一下就蒙了。 胡乱操作一通,导致源文件被删除 日常工作:用浏览器登陆堡垒机系统--在堡垒系统中选择相应的服务器进行登陆 根据事件单中描述的问题就,检查日志,找出出现问题的原因; 假如入是本身程序的问题,记录情况,并以邮件或者QQ群的沟通途径向相关的开发--人员沟通。 假如是由于其他公司负责运维的系统的原因,向小组组长报告,由小组组长和其他公司的相关运维人员沟通,如果沟通中出现了无法处理的问题,由小组组长找负责本系统的甲方人员反映。 假如是由于银行的柜员操作或者权限问题,就告知提交事件的人员。一般是回复事件单即可。或者打事件单中的电话 用ftp交互文件: 运维人员使用的终端机器都是安装了windows系统的一般PC机。假如要登陆堡垒机,必须有一个设备,这个设备和一般的U盘一样,大小和一般的U盘一样大,里面有负责安全系统的人员给你授权的信息,这个人员是邮储银行的人员负责。有帐号和密码的认证和服务器交换数据可以使用ftp,这个是嵌入到堡垒机中的一个ftp客户的程序 上班时间:分两班倒,白班和晚班--白班时间:上午8:30---11:30,下午14:00---17:30 白班和晚班人员的日常工作: 1. 早会,先和值晚班人员沟通一下,看看昨晚系统运行是否正常,有什么报警。 2.之后看看当天有没有需要处理的事情,比如说开发人员取生产环境的数据,其他系统要的数据,下面银行网点要的数据。 3.之后就是各自回到自己的岗位,做自己的事情。有的看监控,有的处理报警事件,有的处理事件单(每个人都为有自己的事件单帐号),等等,电话是谁有空谁接,电话一般都是网点的柜员打过来的,一般的问题是在做交易的时候失败,原因大部分都是权限问题和柜员业务不熟悉导致的做错交易。 晚班时间:下午17:00之前到,一直到第二天的早上的8:30 晚班人员的日常工作:这些工作都是开发人员写好的脚本,制定了计划任务的。 1.看监控,及时处理报警信息 处理报警信息是要查出具体原因,并解决导致报警的问题,之后把原因和处理结果发的一个专门的QQ工作群里,这个群里有负责本系统的全部运维人员和甲方的领导。 2.检查日终事件的处理结果,看是否都成功了。 日终事件:其他系统提供给我们的数据文件的处理结果一般是柜员和网点权限的更新文件,假如不能正确处理存库,会导致第二天全国网点的柜员不能正常最交易,属于重大事故。对公司在甲方的声誉受到严重影响。处理办法是手动执行相关脚本,或者手动执行存储过程。 用的都是oracle数据库 3.有的时候会接到其他系统运维人员打过来的电话,因为我们自己的系统也需要给其他系统发送文件,假如发送失败,也需要手动执行脚本重新发送。 公司面试题 一、选择题(单选或多选) 1.以下哪些方式/命令不可以查看IP是否可达?(D) A.telnet B.ping C.tracert D.top 2.将文件file1复制为file2可以用下面哪些命令(ABCDE) A.cpfile1file2 B.catfile1>file2 C.cat<file1>file2 D.ddif=file1of=file2 E.catfile1|cat>file2 3.Linux下查看磁盘使用情况的命令是?(B) A.dd B.df C.top D.netstat 4.Linux下查看服务程序占用的端口命令是什么?(BCD) A.ps-aux B.netstat-apn C.watch D.lsof 5.linux查看系统活跃进程的命令是?(AB) A.ps B.netstat C.df D.ifconfig 7.在Linux系统中,用来存放系统所需要的配置文件和子目录是(A) A./etc B./var C./root D./hoom 二、简答题 1、mysql主从复制原理说一下? 从库有两个线程IO线程和SQL线程 a.从库的IO线程向主库的主进程发送请求,主库验证从库,交给主库IO线程负责数据传输; b.主库IO线程对比从库发送过来的master.info里的信息,将binlog文件信息偏移量和binlog文件名等发送给从库 c.从库接收到信息后,将binlog信息保存到relay-bin中,同时更新master.info的偏移量和binlog文件名 d.从库的SQL线程不断的读取relay-bin的信息,同时将读到的偏移量和文件名写道relay-log.info文件,binlog信息写进自己的数据库,一次同步操作完成。 e.完成上次同步后,从库IO线程不断的向主库IO线程要binlog信息 f.从库如果也要做主库,也要打开log_bin和log-slave-update参数 最佳答案: 2.从库的I/O线程去请求主库的binlog,并将得到的binlog,主库会生成一个logdump线程,用来给从库i/O线程传binlog; 3.I/O读取主库发来的binlog日志,把他写道relaylog(中继日志),SQL线程,会读取relaylog文件中的日志,并解析成具体操作,来实现主从的操作一致,而最终数据一致 2、怎么查看两台服务器之间的网络是不是正常的,服务器是禁ping的? 可以使用ssh远程登陆两台服务器。 3、比如我访问百度网站,有什么方法可以跟踪经过了哪些网络节点? traceroute-s本机ipbaidu.com 在linux系统中,一般都会有swap分区,你觉得使用swap分区有什么好处,swap分区才会被使用?你觉得在生产环境中要不要用swap分区? swap的好处是防止内存溢出 当内存不够时会使用 生产环境中是需要使用swap内存的 **253.** 服务器需要监控哪些项目?凭借这些项目如何判断服务器的瓶颈? •CPU(Load)CPU使用率/负载 •Memory内存 •Disk磁盘空间 •DiskI/O磁盘I/O •NetworkI/O网络I/O •ConnectNum连接数 •FileHandleNum文件句柄数 当服务器的监控项目报警时就达到瓶颈 6、简述一下lvs和Nginx的优缺点 一、Nginx优点: 1、工作在网络7层之上,可针对http应用做一些分流的策略,如针对域名、目录结构,它的正规规则比HAProxy更为强大和灵活,所以,目前为止广泛流行。 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就直接断掉了,如果是上传一个很大的文件或者很重要的文件的话,用户可能会因此而不满。 二、LVS优点: 1、抗负载能力强、是工作在网络4层之上仅作分发之用,没有流量的产生,这个特点也决定了它在负载均衡软件里的性能最强的,对内存和cpu资源消耗比较低。 2、配置性比较低,这是一个缺点也是一个优点,因为没有可太多配置的东西,所以并不需要太多接触,大大减少了人为出错的几率。 3、工作稳定,因为其本身抗负载能力很强,自身有完整的双机热备方案,如LVS+Keepalived,不过我们在项目实施中用得最多的还是LVS/DR+Keepalived。 4、无流量,LVS只分发请求,而流量并不从它本身出去,这点保证了均衡器IO的性能不会收到大流量的影响。 5、应用范围比较广,因为LVS工作在4层,所以它几乎可以对所有应用做负载均衡,包括http、数据库、在线聊天室等等。 LVS的缺点: 1、软件本身不支持正则表达式处理,不能做动静分离;而现在许多网站在这方面都有较强的需求,这个是Nginx/HAProxy+Keepalived的优势所在。 2、如果是网站应用比较庞大的话,LVS/DR+Keepalived实施起来就比较复杂了,特别后面有WindowsServer的机器的话,如果实施及配置还有维护过程就比较复杂了,相对而言,Nginx/HAProxy+Keepalived就简单多了。 7、nginx有哪几种调度算法,解释一下ip_hash和轮询有啥不一样 1.rr:轮询算法(依次将用户的访问请求,平均的分配到后端的web集群中每个节点,此种算法不会考虑每个节点的性能,所以比较适用于所有节点的性能一致的情况) wrr:权重算法(根据设定的权重值,权重值越大,被配到的请求次数也就越多,有效的解决了rr算法的缺点) 2.ip_hash算法(根据用户访问的真实ip生成一个hash表,此后,同一个ip地址的访问请求都将会分配到这个节点上,可以解决session会话共享的问题) 3.url_hash(根据用户访问的url的hash结果,使每个url定向到同一个后端服务器上) 4.fair(更加智能的负载均衡算法,可以根据页面大小的和加载时间长短智能的进行负载均衡) 解释一下ip_hash和轮询有啥不一样 ip_hash: 根据每个请求IP进行调度,可以解决session的问题,不能使用weight 轮询(默认): 可以通过weight指定轮询的权重,权重越大,被调度的次数越多 centos6.X版本系统和centos7.X版本有啥区别? (1)桌面系统 [CentOS6]GNOME2.x [CentOS7]GNOME3.x(GNOMEShell) (3)内核版本 [CentOS6]2.6.x-x [CentOS7]3.10.x-x (4)启动加载器 [CentOS6]GRUBLegacy(+efibootmgr) [CentOS7]GRUB2 (5)防火墙 [CentOS6]iptables [CentOS7]firewalld (6)默认数据库 [CentOS6]MySQL [CentOS7]MariaDB (7)文件结构 [CentOS6]/bin,/sbin,/lib,and/lib64在/下 [CentOS7]/bin,/sbin,/lib,and/lib64移到/usr下 (8)主机名 [CentOS6]/etc/sysconfig/network [CentOS7]/etc/hostname (9)时间同步 [CentOS6](1)桌面系统 [CentOS6]GNOME2.x [CentOS7]GNOME3.x(GNOMEShell) (2)文件系统 [CentOS6]ext4 [CentOS7]xfs (3)内核版本 [CentOS6]2.6.x-x [CentOS7]3.10.x-x (4)启动加载器 [CentOS6]GRUBLegacy(+efibootmgr) [CentOS7]GRUB2 (5)防火墙 [CentOS6]iptables [CentOS7]firewalld (6)默认数据库 [CentOS6]MySQL [CentOS7]MariaDB (7)文件结构 [CentOS6]/bin,/sbin,/lib,and/lib64在/下 [CentOS7]/bin,/sbin,/lib,and/lib64移到/usr下 (8)主机名 [CentOS6]/etc/sysconfig/network [CentOS7]/etc/hostna $ntp $ntpq-p [CentOS7] $chrony $chronycsources (10)修改时间 [CentOS6] $vim/etc/sysconfig/clock ZONE="Asia/Tokyo" UTC=fales $sudoln-s/usr/share/zoneinfo/Asia/Tokyo/etc/localtime [CentOS7] $timedatectlset-timezoneAsia/Tokyo $timedatectlstatus (11)修改地区 [CentOS6] $vim/etc/sysconfig/i18n LANG="ja_JP.utf8" $/etc/sysconfig/i18n $locale [CentOS7] $localectlset-localeLANG=ja_JP.utf8 $localectlstatus (12)服务相关 1)启动停止 [CentOS6] $service service_name start ​ $service service_name stop ​ $service sshd restart/status/reload [CentOS7] $systemctl start service_name ​ $systemctl stop service_name ​ $systemctl restart/status/reload sshd 自启动 [CentOS6] $chkconfigservice_nameon/off [CentOS7] $systemctlenableservice_name $systemctldisableservice_name 服务一览 [CentOS6] $chkconfig--list [CentOS7] $systemctllist-unit-files $systemctl--typeservice 强制停止 [CentOS6] $kill-9<PID> [CentOS7] $systemctlkill--signal=9sshd (13)网络 1)网络信息 [CentOS6] $netstat $netstat-I $netstat-n [CentOS7] $ipn $ip-sl $ss 2)IP地址MAC地址 [CentOS6] [CentOS7] $ifconfig-a $ipaddressshow 3)路由 [CentOS6] $route-n $route-Ainet6-n [CentOS7] $iprouteshow $ip-6routeshow (14)重启关闭 1)关闭 [CentOS6] $shutdown-hnow [CentOS7] $poweroff $systemctlpoweroff 2)重启 [CentOS6] $reboot $shutdown-rnow [CentOS7] $reboot $systemctlreboot 3)单用户模式 [CentOS6] $initS [CentOS7] $systemctlrescue 4)启动模式 [CentOS6] [GUICUI] $vim/etc/inittab id:3:initdefault: [CUIGUI] $startx [CentOS7] [GUICUI] $systemctlisolatemulti-user.target [CUIGUI] $systemctlisolategraphical.target 默认 $systemctlset-defaultgraphical.target $systemctlset-defaultmulti-user.target 当前 $systemctlget-default 三、代码题 写一个脚本将某目录下大于100K的文件移动至/tmp下 for i in `find /test -type f -size +100k` do cd /test && mv $i /tmp; done 写一个脚本查找最后创建时间是3天前,后缀是\*.log的文件并删除 find/-name"*.log"-ctime+3-execrm-f{}\; 写一个防火墙配置脚本,只允许远程主机访问本机的80端口 #vimiptables.sh iptables-tfilter-IINPUT-ptcp!--dport80-jDROP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
面试总结

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写
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
关于一些面试的技术要点,强调一下大家一定要有准备:

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、redis: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
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
1802孙枭彬:百途面试题

如何查看8080端口被哪个进程占用

ss-anptu|grep8080

netstat-anptu|grep8080

lsof-i:8080

ftp mysql http rsynct ftp tomcat的端口号

21 3306 80 873 69 8080

如何将本地80端口的请求转发到8080端口,当前主机ip为192.168.1.1

Iptables -t nat -A PREROUTING -d 192.168.1.1 -p tcp --d port 80 -j DNAT --to 192.168.1.1:8080

用一条命令创建/tmp/bt.txt并把helloworld写入bt.txt里

echo''helloworld">/tmp/bt.txt

简述一下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的使用。

用一条命令检测nginx语法平滑启动命令

nginx-t-c/etc/nginx/nginx.conf&&kill-HUPnginx主进程号

简述mysql主从复制原理

mysql主从复制原理:从库有两个线程IO线程和SQL线程

1.从库的IO线程向主库的主进程发送请求,主库验证从库,交给主库IO线程负责数据传输;

2.主库IO线程对比从库发送过来的master.info里的信息,将binlog文件信息,偏移量和binlog文件名等发送给从库

3.从库接收到信息后,将binlog信息保存到relay-bin中,同时更新master.info的偏移量和binlog文件名

4.从库的SQL线程不断的读取relay-bin的信息,同时将读到的偏移量和文件名写道relay-log.info文件,binlog信息写进自己的数据库,一次同步操作完成。

5.完成上次同步后,从库IO线程不断的向主库IO线程要binlog信息

6.从库如果也要做主库,也要打开log_bin和log-slave-update参数

11.用脚本写出172.10.13.0/24网段里能ping通的ip

foriin{1..254}; do; ip=10.18.45.$i; ping-c1-W1$ip&>/dev/null; if[$?-eq0]; then; echo$ip; fi; done

12.你熟悉的服务器压测工具有哪些?

四款Web服务器压力测试工具http_load、webbench、ab、siege

ab是apache自带的一款功能强大的测试工具 数据库测试工具mysqlslapbenchmark
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
1802穆鹏飞:天驰传媒

什么是磁盘碎片

其实磁盘碎片应该称为文件碎片.磁盘碎片指的是硬盘读写过程中产生的不连续文件.

硬盘上非连续写入的档案会产生磁盘碎片,磁盘碎片会加长硬盘的寻道时间,影响系统效能.比如虚拟内存使用了硬盘,硬盘上便会产生磁盘碎片.

什么是内存碎片

 内存碎片分为:内部碎片和外部碎片。

 内部碎片就是已经被分配出去(能明确指出属于哪个进程)却不能被利用的内存空间;

外部碎片指的是还没有被分配出去(不属于任何进程),但由于太小了无法分配给申请内存空间的新进程的内存空闲区域。

目录下有ab两个文件,ls-a显示的是什么写出来

...ab

介绍一下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受网络影响较大,不太稳定。

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]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
1802毕京钊:

zabbix界面出现字符乱码如何处理?

linux直接更改字体 windows

解决方案:Win+R打开运行,输入fonts,回车进入Windows字体目录,找到微软雅黑-常规字体,复制出来将文件名修改为msyh.ttf,注意后缀ttf,将msyh.ttf上传到服务器zabbix字体目录中:/usr/share/zabbix/fonts/

,查看字体配置#grepFONT_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-n

45:define('ZBX_GRAPH_FONT_NAME','msyh');//fontfilename 93:define('ZBX_FONT_NAME','msyh');

字体配置修改成功后,刷新图形界面即可看到图形字体显示正常了。

grep同时过滤两个条件?

cat文件名|grep'条件一'|grep'条件二'

ansible原理 模块 平时怎么用的

ansible的工作原理:ansible在管理节点将ansible模块通过ssh协议推送到被管理端执行,执行完后自动删除,可以使用svn等来管理自定义模块及编排

常用模块

shell远程执行命令 user创建或删除用户 yum软件安装模块

service服务启动或管理模块 写剧本或者直接执行 剧本

-hosts:all tasks: -name:createuserabc user:name=abcstate=present

直接执行:ansibleall-muser-a'name=qianfengstate=present' 脚本 写过什么脚本

nginx可以做什么用

web服务器、代理服务器、负载均衡器、邮件服务器

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:触发器

nginx负载均衡指定域名访问后端服务器怎么实现?

将ip换成域名

在负载均衡器上做好域名解析

DNS域名服务器

本地host文件 或:

[root@localhost~]#vim/etc/nginx/nginx.conf

​ location/{

​ root/usr/share/nginx/html;

​ indexindex.htmlindex.htm;

​ if($request_uri~*\.html$){

​ proxy_passhttp://htmlserver;

​ }



​ if($request_uri~*\.php$){

​ proxy_passhttp://phpserver;

​ }

​ }



[root@localhost~]#vim/etc/nginx/conf.d/test.conf

upstreamhtmlserver{

​ server192.168.122.10;

​ server192.168.122.20;

​ }

upstreamphpserver{

​ server192.168.122.30;

​ server192.168.122.40;

​ }

mysql主从延迟的各种原因

1、从库太多导致复制延迟 优化:建议从库数量3-5个为宜

2、从库的硬件比主库差 优化:提升硬件性能

3、慢SQL语句过多 优化:SQL语句执行时间太长,需要优化SQL,包括建立索引或者采用分库分表等。

4、主从复制的设计问题

优化:主从复制单线程,可以通过多线程IO方案解决;另外mysql5.6.3支持多线程的IO复制。

5、主从之间的网络延迟 优化:尽量采用短的链路,提升端口的带宽

6、主库读写压力大 优化:前端加buffer和缓存。主从延迟不同步

判断主从延迟的方法?

通过showslavestatus进行查看,比如可以看看Seconds_Behind_Master参数的值来判断,是否有发生主从延时。

NULL-表示io_thread或是sql_thread有任何一个发生故障,也就是该线程的Running状态是No,而非Yes.

0-该值为零,是我们极为渴望看到的情况,表示主从复制状态正常

zabbix自定义的key值做过哪些?

服务器服务状态 磁盘I/O情况 服务器网络接口进出流量

服务器cpu状态等 自定义KEY的方法 zaxbix客户端

[root@hh22~]#mysqladmin-uroot-p'WZ123'status|grep'Opens'|awk-F:'{print$5}'

mysqladmin:[Warning]Usingapasswordonthecommandlineinterfacecanbeinsecure.

0Opens

vim/etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf

UserParameter=mysql.questions,mysqladmin-uuser-p'密码'status|grep'Opens'|awk-F:'{print$5}'

zabbix服务器

zabbix_agentd-tmysql.questions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
面试总结

1802卢康正:

\>>有什么才艺吗,会唱歌吗,跳舞之类的。 视个人情况而定

\>>说一下jenkins的工作流程

开发(git)-->git主库-->jenkins(git+jdk(环境)+tomcat+maven打包+测试)-->发布到tomcat服务器

上家公司有多少台服务器,几个运维。

了解docker和别的虚拟化技术的区别吗?

1)标准化应用发布,docker容器包含了运行环境和可执行程序,可以跨平台和主机使用;

2)节约时间,快速部署和启动,VM启动一般是分钟级,docker容器启动是秒级;

3)方便构建基于SOA架构或微服务架构的系统,通过服务编排,更好的松耦合;

4)节约成本,以前一个虚拟机至少需要几个G的磁盘空间,docker容器可以减少到MB级;

5)方便持续集成,通过与代码进行关联使持续集成非常方便;

6)可以作为集群系统的轻量主机或节点,在IaaS平台上,已经出现了CaaS,通过容器替代原来的主机。

7)应用隔离

个人兴趣爱好是什么?

说一下数据库的几个缓存服务器

Redis memcached 你对未来有什么规划,三到五年 nginx的工作原理:

nginx作为web服务器:

nginx是基于http协议实现的web服务器,通过epoll技术实现I/O口多路复用,采用异步非阻塞实现高并发请求,高度的模块化设计。 异步非阻塞:1个master进程,2个work进程

​ 每进来一个request,会有一个worker进程去处理。但不是全程的处理,处理到什么程度呢?处理到可能发生阻塞的地方,比如向上游(后端)服务器转发request,并等待请求返回。那么,这个处理的worker不会这么一直等着,他会在发送完请求后,注册一个事件:“如果upstream返回了,告诉我一声,我再接着干”。于是他就休息去了。这就是异步。此时,如果再有request进来,他就可以很快再按这种方式处理。

nginx作为代理服务器:

代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。

作为内容服务器的负载均衡器:

当客户机向站点提出请求时,请求将转到负载均衡服务器。然后,负载均衡服务器通过防火墙中的特定通路,将客户机的请求按照一定的规则发送到后端内容服务器。后端内容服务器再通过该通道将结果回传给负载均衡器。负载均衡器服务器将检索到的信息发送给客户机,好像负载均衡服务器就是实际的内容服务器
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
某公司面试总结
keepalived的协议?
vrrp

Haproxy可以做web中间件吗?
不可以Haproxy可以作web负载均衡。
ha-proxy作为目前流行的负载均衡软件,必须有其出色的一面。下面介绍一下ha-proxy相对LVS,Nginx等负载均衡软件的优点。
支持tcp/http两种协议层的负载均衡,使得其负载均衡功能非常丰富。
支持8种左右的负载均衡算法,尤其是在http模式时,有许多非常实在的负载均衡算法,适用各种需求。
性能非常优秀,基于事件驱动的链接处理模式及单进程处理模式(和Nginx类似)让其性能卓越。
拥有一个功能出色的监控页面,实时了解系统的当前状况。 功能强大的ACL支持,给用户极大的方便。

Nginx的rewrite地址重写的四中模式与区别?
last相当于Apache里的[L]标记,表示完成rewrite//如果不写标记默认为这个
break本条规则匹配完成后,终止匹配,不再匹配后面的规则
redirect返回302临时重定向,浏览器地址会显示跳转后的URL地址
permanent返回301永久重定向,浏览器地址会显示跳转后URL地址
Last表示匹配完成后会重新发起请求。last和break用来实现URL重写,浏览器地址栏URL地址不变

301和302的区别?
301会直接跳转到指定的url,302会选择那个好看跳转那个,会发生url地址劫持现象。
301永久移动请求的网页已被永久移动到新位置。服务器返回此响应(作为对GET或HEAD请求的响应)时,会自动将请求者转到新位置。您应使用此代码通知Googlebot某个网页或网站已被永久移动到新位置。

302临时移动服务器目前正从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。此代码与响应GET和HEAD请求的301代码类似,会自动将请求者转到不同的位置。但由于Googlebot会继续抓取原有位置并将其编入索引,因此您不应使用此代码来通知Googlebot某个页面或网站已被移动。

Ansible的优缺点?
优点:模块工作基于ssh连接,不需要服务器端,使用时直接运行命令即可。轻量级不用安装客户端分布式的
缺点:二次开发难,ssh如果拷贝公钥不成功,无法实现批量管理。如果控制的机器少不适合用ansible

Lvs和keepalived的区别?
lvs用于负载均衡,分担服务器压力, keepalived实现高可用,通常会对负载均衡集群实现高可用

Python的类模块?
模块分为三类:内置模块;第三方;自定义;

Docker的网络?
1.openvswitch
果要在生产和测试环境大规模采用docker技术,首先就需要解决不同物理机建的docker容器互联问题。可以采用openvswitch实现不同物理服务器上的docker容器互联
2.路由模式:Docker默认的内部ip为172.17.42.0网段,所以必须要修改其中一台的默认网段以免ip冲突。宿主机开路由:echo1>/proc/sys/net/ipv4/ipf_forward
现在两台宿主机里的容器就可以通信了。

1.host模式:
dockerrun使用--net=host指定,docker使用的网络实际上和宿主机一样

2.container模式:
使用--net=container:container_id/container_name,多个容器使用共同的网络,看到的ip是一样的。

3.none模式
使用--net=none指定,这种模式下,不会配置任何网络。

4.bridge模式
使用--net=bridge指定,默认模式,不会指定,此模式会为每个容器分配一个独立的networknamespace


如何查看nginx的连接满了?
netstat-n|awk'/^tcp/{++S[$NF]}END{for(ainS)printa,S[a]}'
SYN_RECV//一个连接请求已经到达,等待确认,ESTABLISHED//正常数据传输状态/当前并发连接数
FIN_WAIT2//另一边已同意释放,ITMED_WAIT//等待所有分组死掉
CLOSING//两边同时尝试关闭,TIME_WAIT//另一边已初始化一个释放,LAST_ACK//等待所有分组死掉
或:
通过界面查看通过web界面查看时Nginx需要开启status模块,
也就是安装Nginx时加上--with-http_stub_status_module,然后配置Nginx.conf,在server里面加入如下内容:
location/Nginxstatus{
stub_statuson;
access_log/usr/local/nginx/logs/status.log;
auth_basic"NginxStatus";
}
配置完后重新加载Nginx后我们可以通过浏览器访问http://10.0.0.1/Nginxstatus查看:Nginx加载命令
1
2
3
4
5
6
1、首先问了我上一家公司主要是做什么业务,用什么服务器
2、公司的架构
3、访问量uv,pv分别是多少
4、nginx,Tomcat
5、zabbix监控什么
6、了解docker么
1
2
3
4
5
6
7
1、mysql主从原理,怎么配置
2、mysql宕机了怎么办,mysql断电了怎么办
3、数据备份,但是丢失了部分数据怎么办
4、用shell做过什么
5、redis主从,哨兵
6、问了一下上家公司的业务,服务器数量
redis的主从,哨兵,每天的数据量
1
2
3
4
5
3、你们公司用redis来干嘛
4、mysql的每天的数据量,主从,mysql主库数据量大造成从库同步延迟怎么办
5、搭过zabbix什么,zabbix怎么用,怎么实现报警
6、keepalived原理,keepalived切换时随机的吗,三台nginx可以做keepalived
7、写过shell吗,shell用来干嘛
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
mysql主从,mysql备份
公司的业务
你主要的工作
也问了MySQL
服务器一键装机pxe,raid,虚拟化技术kvm,
zabbix高可用,zabbix报警媒介,zabbix监控项,jenkins怎么实现上线,elk怎么收集日志,收集什么日志,为什么收集日志。
负载均衡的项目
3.服务器如何优化
nginx怎么做负载均衡的,高可用
nginx400,404等状态码报错怎么解决
MySQL怎么进行备份的,以及主从复制原理
数据库如何优化?
elk你们怎么备份的?
写过哪些shell脚本
ha和lvs的区别
Jenkins+CICD搭建过程
KVM一下简单命令
传2个参数,一个是文件名,一个文件大小,要求传入这两个参数后,删除对应的文件
OpenStack
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1.nginx 什么版本?服务器,配置,进行了什么调优,达到了什么样子的并发,是物理机吗用了虚拟化吗?
2.epoll模型了解吗?
3.nginx高可用怎么做的?
4.LVS负载均衡做过吗?怎么做的
5.web服务器有什么?
6.Tomcat优化?
7.Tomcat的AIO/BIO/NIO???
8.Tomcat的资源池?
9.sql-server了解吗?
10.Ansible的模块有哪些?
11.MySql的版本?
12.数据库授权问题???
13.mysql的高可用?怎么搞?mysql的高可用都有哪些??PXC,
14.mysql主从同步的时候出过什么错误吗? 1236错误?12一些错误??
15.mysql主从原理?
16.双主互为复制?
17.Redis版本?集群?哨兵?碰见过什么问题?持久化?
18.ELK搭建过吗?遇到过什么问题?版本?Logstash的模版?正则?
19.JAVA了解过吗?
20.给你一台服务器从安全来说进行的操作?安全加固
21.在工作中犯过什么错误?lsof
22.Python的框架?登陆认证?
23.职业规划?
24.了解过翻墙?
25.网络懂吗?iptables?iprote?iprule?
26.Python开发什么软件?
27.需求:一个网站,需要模拟人为访问,获取一些数值?能否完成?
28.如何看待繁琐的事情?能否开发脚本?软件?去替代繁琐的事情?遇到一个难解决的问题是否会死磕?ERP
29.DDOS?了解吗?怎么解决?
30.ES集群?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
//重点上家公司是干什么的

简单介绍下我上家你所管理的服务器是如何分配的,每台服务器上面运行些什么。(应该是我表达不清楚,这个问了好久)

你的简历项目中主要拿nginx做什么

Tomcat有出现过什么错误么

TCP/IP了解么?

你在上家公司主要是干些什么?

然后就没了。下面又进来一个小哥问

你从上海回到广州这边工作的原因?

是否打算长期发展?

你对容器K8S有什么认识,它做什么的,有没有用过?

你对你职业生涯有什么规划吗

你觉得你有哪些劣势
哪种协议传输 公式的架构,用过哪些中间件
假如有3个location,他们之间处理顺序怎
样,假如我现在有一个location里面有个/test 目录,它只能公司内部访问,但是不能公网访问,你知道用
哪个模块 ELk收集的量有多大它是怎么传数据的 tcp三次握手,DNS解析过程
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
4.请说一下数据库主从复制的原理

5.请说一下redis的哨兵机制

6.假如后端有个一主一从的数据库,主数据宕掉了,你如何解决

7.请说一下单机多实例部署5台tomcat,你该怎么弄

8.我公司用的是ERP管理系统,请问你有做过这方面的相关运维嘛,具体的业务是怎么样的

9.如果服务器出现卡机,如有5台tomcat,有些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
6
7
8
9
10
11
12
13
14
15

1. 上两家公司部门人员组成?有什么部门,多少人?
2. 到他们公司多久?有没有打算搬到这边?
3. 平时主要负责做什么?会不会服务器的维修?
4. 打算哪方面走?比如说规划?英语的读写说怎么样
5. 能不能接受晚上处理问题?为什么做运维?
问完了就介绍他们家公司是干嘛的?简单说了一下福利待遇等等,大多都是她说
技术(人看起来挺和善的)没错,他说了一下他叫什么,就开始问问题了
6. keepalived原理 局域网了解吗?vpn
7. nginx、Apache用过吗
8. 如果数据库除了本身原因(CPU飙升之类的)是主库一下停止服务,从库抢过怎么处理

搭建mysql时候的具体部署过程搭建ELK前有什么考量

.做zabbix 的时候有没有遇到什么问题?我说就自定义key值的时候有点难切,其他都还好,那个女的说,你有没有遇到这样一种情况,就是很多的zabbix_agent 会启不来。我说没有,当然也问了她为什么?她说,在他们公司,权限管理很严,有很多的zabbix_agent 权限没给足(大概就是这样子 回头百度一下).....zabbixserver跟agent采用什么协议(snmp).....大学专业课(把我大学学的说了,漏了计算机网络,但我学过,仅仅学过...jenkins 的安全/权限...nginx 只是用来做反向代理吗?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
mysql集群搭建?

mysql的主从复制原理?

keepalived怎么模拟单点故障,进行测试?

nginx+tomcat集群?

写过哪些shell脚本?

怎么用的jenkins?

说完之后他说他们开发都是通过shell脚本

熟悉K8S吗?

有搭建过哪些集群?
1
2
3
4
5
6
7
8
9
1.shell脚本都用来干什么
2.你们公司的架构
3.公司的代码上线流程(jenkins他好像也不太了解)
4.ELK用来干什么(感觉他不知道这个用来干什么的)
5.常用的反向代理有什么,会不会LVS
6.zabbix都用来监控什么
7.KVM是什么(感觉他不懂)
8.ansible用来干什么(他好像也不懂)
9.Docker都用来干什么,我说测试环境用过,没有在生产环境用过,因为这个也得开发会Docker,他说为什么的得开发得会Docker,难道不能开发直接把代码给我们,然后我们创建好容器之后,进行测试不就行么(???我无话可说)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
nginx的映射(反向代理),Mycat的部署安装,JDK的安装和Tomcat的安装,Jenkins的安装和Git的安装

4.问了我公司有做存储保护吗。raid1坏了一块要怎么恢复
答案:在热插拔上插入一块磁盘,分好区,raid会自动同步

5.zabbox页面出现问题,需要删除数据库里的数据,删除的是那个库里的数据

6.问了我公司PE有多少,就是日活,我说了几万,不知道PE是什么。

7.redis持久化在内存里的数据要怎么马上把数据写入磁盘里面
save 会影响redis,在写入磁盘中时会进行数据锁定,不能进行数据操作, bgsave:开启一个字进程,不影响redis

8.灰度发布过程中出现问题,数据库中有脏数据怎么解决
灰度发布大部分用户都是公司中的人,少部分是外面的用户,如果出现错误,叫DBA进行数据库回滚就可以的,在灰度发布的数据中都有标记
,外面的用户只能叫DBA进行修改
1
2
3
4
5
6
7
8
9
10
11
12
13
nginx的高可用是怎样的?
我:。。。
:那MySQL的高可用呢?
:ELK的图形化界面用什么?
:数据库故障如何排错?
:数据迁移有做过嘛?
:zabbix最常见的报警都有哪些?
:线序。。。。
:有多少台物理服务器
:一台主机服务器有多少监控项?
:zabbix数据库监控几个监控项?
:keepalived是什么?与haproxy有什么区别?
:lnmp架构怎么搭建的?
1
2
3
4
5
6
7
8
日志收集量比较多的时候,是怎么分析处理的
如果内存泄漏和内存溢出,怎么定位处理,有没有用过一些第三方的工具
你们用的elk是收集什么日志
redis做了集群吗?搭建过程是怎么样的
主从延迟,怎么处理
高可用中出现脑裂是怎么处理
mysql常用吗
Jenkins+gitlab这个你们有用到生产环境上面去吗
1
2
3
4
5
6
1.LVS拿来做什么,怎么映射的
2.nginx是什么,怎么用
3.反向代理怎么实现的
4.如果你输入url是怎么访问到后端的,而我说的后端具体指的是什么?
5.在不使用zabbix这一块的时候,你怎么监控
6.监控的时候都监控什么,问的很细
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71

1.按顺序写出OSI七层结构。
7 应用层 6 表示层 5 会话层 4 传输层 3 网络层 2 数据链路层 1 物理层
2.在Linux系统中,设备都是通过特殊的 文件方式 来访问的。
3.若一台计算机的内存为2G,则swap通常为 4G。
4.将CDROM挂载到/mnt/cdrom 下的指令 mount /dev/CDROM /mnt/cdrom。

5. crontab文件由六个域组成,每个域之间用空格分割,其排列如下: MIN分钟 HOUR小时 DAY天 MONTH月 DAYOFWEEK一周 COMMAND要运行的程序,程序被送入sh执行
6.在bash shell 里$0 $? $* $@ 各表示什么意思
$0就是该bash文件名
$?是上一指令的返回值
$*所有位置参数的内容:就是调用调用本bash shell的参数。
$@基本上与上面相同。只不过是
“$*”返回的是一个字符串,字符串中存在多外空格。
“$@”返回多个字符串。
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
8.请写出iptables语句。
本地80端口的请求转发到8080端口,当前主机IP为192.168.2.1
iptables -t nat -A PREROUTING -d 192.168.2.1 -p tcp -dport 80 -j DNAT -to 192.168.2.1:8080
2)允许本机对外连接80端口(本机能连外界服务器为80)
iptables -A OUTPUT -p tcp –dport 80 -j ACCEPT
3)禁止外界ping本服务器
iptables -A INPUT -p icmp -j DROP
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

10.根据下面的信息提取每个人的总分 输出到/home/total.txt
oldboy 15 98
kqzj 23 87
wodi 16 89
awk '{print $1,$2+$3}'’ >/home/toital.txt

11.查找包含字符串“center”进程,获取他的PID。
ps aux | grep center
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2、从上家公司离职原因

3、会编写Dockerfile吗,dockerfile里的复制方式有哪几种

4、k8s会多少,k8s的组件

5、可以在工作中用上Python吗

6、给你50台服务器,每台都有公网和私网的ip,给他们做一个安全策略

7、你工作这几年的角色演变

8、会做raid磁盘阵列吗

9、ELK的搭建维护,如何收集系统数据(Metricbeat)

10、未来会使用的监控系统是普罗米修斯

11、公司未来会往docker集群方面发展

12、公司已研究为主,研究方向为开源项目,有很多的学习时间,进去后你会是公司的第一个运维

13、分布式
1
2
3
4
5
6
7
1.对以后的职业你有什么规划吗?
2.负载均衡高可用集群部署的过程?
3.Redis是拿来干什么的?
4.数据库的架构
5.负载均衡高可用集群排错思路
6.说一下docker的三个和核心组件之间的联系
7.虚拟化技术用的是什么
1
2
3
4
5
6
7
8
9
10
11
12
13
14
用的什么系统版本,
文件系统是那个,
应用服务有哪些,
用的是那个jdk的版本,
怎么配置jdk,
tomcat日志在哪里,
如果想要更改tomcat的默认日志路径要在哪里改,
elk的部署情况,
如果没有kibana,ES要怎么查询日志,
mysql的部署情况,
左连接和右连接的区别,
备份策略,
写过什么shell脚本,
会python吗,写过什么脚本。
1
2
3
4
1.mysql怎么做异地灾备
2.mysql怎么暴露端口
3.mysql怎么去做数据迁移
4.外网ip和内网ip怎么隔离的
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
上海华腾软件系统有限公司面试总结
1.shell数组怎么去定义,写一个数组遍历的shell脚本。
用grep怎么去过滤空行和开头为#的行
2.Ansible怎么去实现推送脚本和批量管理主机的
3.Ansible通过什么管理不同服务器
4.keepavlied是基于什么协议
5.写过什么shell脚本
6.系统初始化脚本里面具体写的什么
7.写过最长的脚本多少行,是什么脚本
8.kvm怎么去创建虚拟机
9.kvm怎么去添加一块100G的硬盘
10.你的公司zabbix一般监控什么
11.docker是怎么去启动一个容器的,怎么在启动的同时修改容器的名称
13.docker是怎么去暴露端口的
14.docker是怎么保存自己在容器里的操作的
15.iptables的4表5链分别是什么
16.iptables如果仅对数据转发而不流入应该经过哪几个链
答:prerouting forward postrouting
数据包流入的话应该经过prerouting input outout postrouting
17.nginx负载均衡需要配置什么模块
18.交换机怎么建一个vlan,路由器怎么查看静态路由

tcp和http区别,我说了tcp的三次握手四次断开
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
你在公司是干什么的?公司有多少人?运维多少?开发多少?
你搭建过哪些服务?公司的的整个架构?
你用过哪些中间件?
你们公司用了php为啥还要用tomcat?
如何实现公司服务的上线?
你们公司有多少服务器?
部署过哪些项目?自己部署过所有的整个项目么?
你们公司用的什么数据库?数据库是怎么备份的?用的什么工具实现的呢?

数据库从库不读数据是由哪些原因,数据库宕机有什么策略,怎么解决。
又问shell平时都写过哪些脚本(我晚已经做好功课,进阶面试题都写了),然后问zabbix监控是怎么监控的,ELK怎么收集数据,怎么清理数据。

redis的持久化有哪些模式
如果cpu使用率达到了100%服务宕机了,怎么办


jenkins的版本

写的安装软件的脚本

redis的版本 做的什么

zabbix的版本 监控了啥 具体是啥 自定义的监控项有哪些 监控mysql的话,是怎么对数据库认证的(登录)(使用变量)

ansible palybook写过没 干啥了

公司日志量多少

服务器多少台

用过啥数据库中间件(蒙了不知道是啥)说了个mycat 他说那是连接件 然后中间件就是keepalived haproxy 等等

用的什么公有云

生产中遇到了什么问题

ansible部署zabbix的agent端的时候怎么定义主机组的

docker了解多少 k8s了解多少 (我问他们公司用容器了吗,他把我台词抢了 说啥他们公司在测试环境用的docker 离谱)

之前公司用虚拟化技术了吗 (我看得出来他也不会啥虚拟化技术)

jenkins 怎么实现的

然后还带我直接去他们的物理机房溜达了一圈 ,就很离谱,大概有几十台物理机

其他的想不起来了,大概就这些 ,我也不知道是不是技术面
1
2
3
4
5
6
7
8
9
10
11
爱瑞思软件
物理机怎么装cent OS
磁盘阵列怎么做
新系统安装完成后会做什么(优化)
Tomcat怎么部署war包
磁盘扩容怎么做
数据库怎么备份
zabbix监控项怎么做
生产中遇到的问题
物理机问得多,其他的我记不起来了
还问了Maven插件的使用
1
2
3
4
5
6
智策科技
k8s master,node组件
文件误删除该怎么做?
系统初始化参数用过哪些
有黑客入侵你的机器,你该怎么做?
Jenkins之类的有点记不清了。这家公司做区块链,部署之类的东西很多,要求k8s,ansible很会,我进去就俺一个做这块的,怕怕
1
2
3
4
北鼎 
就问了一个jenkins上线,
服务器多少,配置多高,
哈也没问,全是人事问我,公司问的特别特别细,第一家第二家都问,还问开发,大学学了什么,具体课程,平时课上的项目有没有,有没有参加过什么培训
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
网心科技
自我介绍
如何将.log结尾的且大小小于1M的文件删除?你知道几种方式?管道知道吗?xargs?
ansible模块知道哪些?具体是怎么用的?playbook怎么写的?格式?如何传参?
docker如何查看磁盘信息?docker网络模式?
docker进入容器的方式有哪些?有什么区别?
如何通过Dockerfile创建镜像文件?有几种方式?
内核调参?
nginx怎么做负载均衡?
redis了解吗?redis有哪些数据结构?关系型数据库和非关系型数据库的区别?
看一个端口属于哪个服务?有哪几种方法?netstat的参数?
统计进程个数?
shell里如何调用函数?
会python吗?会go吗?
zabbix监控什么?有没有做过二次开发?自动发现做过吗?写过哪些自定的脚本?
对jenkins的理解?构建的项目是选择什么风格的?流水线用过吗?
nginx如何实现上传上传下载功能?
1
2
3
4
5
6
7
8
9
10
11
12
望尘科技:
做面试题
具体面试:
1、公司的架构
2、zabbix监控了啥服务
3、ansible的playbook怎么配置,变量怎么定义,怎么调用,怎么使用playbook批量nginx,具体到流程,且会用到什么模块
4、给你服务器需要做些什么,进行什么优化
5、你给公司提供过什么建设性建议,有什么项目自己主导,规划能力
6、ci_cd的过程,是用一台服务器批量给后端服务器上传war包吗?
7、redis的一些情况,忘记了
8、mysql的备份策略,使用什么工具备份,以及逻辑备份与物理备份的区别
问的都是根据简历问的,还会衍生到自己公司架构上
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
及末科技:
1:自我介绍
2:磁盘闪黄灯是怎么了,怎么解决
3:用过zabbix吗,都自定义检测过什么
4:ci的上线流程
5:k8s了解吗
6:MySQL数据库的一些命令,怎么查看主从状态,怎么知道主从延迟的时间,join是什么,order是什么
7:物理服务器用过吗,用过虚拟化软件吗?
8:nginx代理
9:说说elk的组件和用了多少台服务器
10:你还有什么技术问题要问的吗
11:你最看重公司什么
12:怎么看java错误日志
13:搭建过交换机吗
14:awk用过吗
1
2
3
4
5
6
7
8
9
小i机器人:
1:tomcat的一些问题,sssl证书的配置,其他中间件了解吗?
2:docker怎么创建网络,网络是什么类型
3:jdk了解吗
4:数据库除了mysql还了解哪些
5:elk的架构,es集群怎么安装
6:mysql主从,主和从有哪些区别
7:ansbile做过什么
8:你们平台是怎么搭建的
1
2
3
4
5
6
7
8
9
10
11
12
13
云构科技
上家公司服务器数量,架构
linux系统关机了怎么排查,
linux基础命令一定要熟悉
怎么查看一个数据的前一百行和后一百行
zabbix部署过程
经常写脚本吗,写过哪些脚本
ansible用来干嘛,哪些模块
给你100台服务器怎么规划
管理过一百台左右的服务器吗他们公司有几百台 物理偏多,还有阿里,华为,亚马逊的,
zabbix写过什么脚本,
sync用过吗
我有一台服务器专门放备份数据的怎么把数据传到这台服务器上
1
2
3
4
5
6
易帆互动  一家游戏公司
三轮面试 运维 老板 ceo
运维:基本上没问什么技术 自我介绍 然后问问项目 用过普罗米修斯吗 公司用的都是docker k8s这些 但是没有问我 基本上没问什么东西 就是说看简历技能挺符合的 没啥好问的 然后问我有啥想问的没 我说公司多少个运维 多少台服务器 这家主要是腾讯云 最近上的游戏是跟腾讯合作的真三国无双 服务器的话目前五百台左右 即将上线的海外版也是三位数的量 然后我问了测试环境 这边也是用的kvm 然后还有预发布环境 然后说找他们老板来聊聊
老板:这边还是自我介绍 问的也是问过的 和一些数据库的东西 怎么做的主动高可用 别的问的都很浅 也是问有啥想问他的吗 这边也是问了研发多少人 他说五十多个 然后一些随便问问 然后让我等会儿他去找ceo
ceo:这边自我介绍一下 我都三遍自我介绍人麻了
这边介绍zabbix给他 他不知道是诈我还是不懂 问我服务器经常出问题吗 我说这肯定不能出问题我工作就是保证他不出问题的 他好像不是很懂这些 然后问了下情况啥的住哪里 对了 三个人都问了平时兴趣爱好 玩的游戏都有哪些 什么段位 游戏公司都问的 然后你有啥想问的 我说跟前面两个都聊过了 然后没啥了 技术上问的浅 看了简历就说挺符合 没啥好问的 还涉及到一个kvm虚拟化 他们用来做测试环境 整个一个小时 说的我口干舌燥
1
2
3
弓叶科技  我跟康丹同一家  我九点她十点
基本上没咋问技术 问问项目
jenkins 其他就是聊天 看他公司产品做什么的 领我去了机房 看了几台机器 玩了下公司的产品 了解一下你 其他的也没啥 就是深圳是分公司 十个人 他是算法加开发还兼职一下运维就负责上线啥的 说可能运维来了压力比较大 问了数据库备份什么的
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
第二家  智策科技  两个面试官  一个经理一个组长一男一女
lvs的工作模式 作用工作模式的 区别 缺点
iptables的四表五链 详细的说出来干嘛用的 如果我两个不同网段的ip用这个怎么连接
redis的集群模式有几种 用来做什么 你用过哪种 为啥用
系统的优化做过哪些
nginx的优化 mysql的优化 redis的优化
keepalived的工作原理 我怎么去检测他们 发生脑裂怎么办
你懂网络吗
zabbix怎么监控的 说一下具体流程用的模板还是什么 elk你做了报警吗 logstash的过滤规则说下
三剑客用过是吧 比如我要在一个很大的日志文件里去截图某一时间段的日志怎么做 你用这些工具说一下
经理问题
你了解docker k8s说下你的了解
你在测试环境用他们做了什么
会写shell吗
上家公司多少台 你管了多少台
几个运维 你在工作中遇到的最大挑战是什么 你怎么解决的 然后还有啥来着忘了 然后让我等下去找人事来 结果十二点多了人事吃饭去了 然后说下午让她打电话跟我沟通
1
2
3
4
5
6
7
8
9
10
11
12
云构:

1. 上家公司服务器数量,架构
2. linux系统关机了怎么排查,
3. linux基础命令一定要熟悉
4. 怎么查看100行日志
5.zabbix部署过程
6.经常写脚本吗,写过哪些脚本
7.ansible使用过吗,哪些模块
8.给你100台服务器怎么规划


1
2
3
4
5
6
7
8
9
10
11
12
北京博睿
简单的自我介绍
上家公司工作具体描述?
离职原因?未来规划?
面对客户处理问题能不能接受?
ansible用过吗?用它做过什么?
zabbix监控什么?有没有做过二次开发吗?
自动化运维脚本写过哪些?有没有用python写过对监控服务器的监控脚本?
tomcat处理过哪些故障?
sed、awk、grep的使用?
docker有没有应用在生产上?
初面问的很浅,大部分说一些概念就过了
1
2
3
4
5
6
7
8
9
10
11
弓叶科技
1.centos用的什么版本 说出几个常用命令
2.公司多少台服务器
3.用两台Nginx怎么做负载均衡
4.开发把代码给你怎么从测试环境放到生产环境
5.用过docker吗
6.用ansable做过什么
7.Redis集群用的什么模式
8.用的什么虚拟机
9.MySQL用SQL语句多吗
应该是不太想要女生问的比较简单
1
2
3
4
5
6
7
8
9
佰行
1.上家公司架构,你在公司日常是做啥的。
2.对上家公司的架构有那里觉得不好,让你改的话应该怎样去改
3.vim的一些基本命令
4.http状态码 说出数字就行了 什么意思,也没问
5.lvsdr模式 加一块网卡用来做什么。
6.为什么选外包!
7.监控报警了怎么处理 处理过程说一下
8.我上家公司薪资 为什么去杭州又为什么来深圳
1
2
3
4
5
6
7
8
科荣软件:
1、公司的架构
2、rdis哨兵模式怎么部署,配置
3、nginx做双节点怎么部署,从前端到后端
4、做了keepalived怎么确认服务是活的
5、做了keepalived,如果master是活的,服务死了,怎么处理
6、jenkins上线流程,有发布过.nat项目吗?发布在windows上吗?maven插件是使用的网络还是?不记得了
7、k8s和虚拟化是否熟悉
1
2
3
4
5
6
7
8
科荣软件
1、zabbix监控过一些什么
2、mysql加keepalived怎么做高可用,
3、linux内核调优具体哪些
4、nginx,tomcat,调优
5、ansible做了一些什么
6、开发把代码给你你要怎么部署,域名,数据库这些
7、使用k8s是编排还是什么记不清了
1
2
3
4
5
6
7
8
9
10
11
12
13
14
深圳证券通信有限公司
两个开发面试基本上就是问jenkins构建cicd这些
jenkins怎么构建cicd的
用到的插件有哪些
你们有几套环境
生产环境有给到开发权限吗
怎么查看一个目录文件的大小
怎么查看谁登录了系统
怎么查看谁改了什么东西
你自己管多少台服务器
java全家桶用过吗 熟悉中间间有哪些
kibana是干什么用的
jenkins用到的脚本怎么写的
基本上问的都是jenkins gitlab这些问题 两个都是研发 公司运维团队人好多 但是这边没有 主要是找一个运维来管理测试环境 权限管理什么的 需要用到的中间件较多 还有这个cicd 有一两百来台服务器吧 后续还会加 其他的没咋问 用的都是私有云 对中间件熟悉和cicd的可以去试下 博彦科技外包岗
1
2
3
4
5
6
7
8
9
10
11
12
周六福
自我介绍
按照简历技能一条一条问
公司是做什么的,具体架构
怎么给磁盘扩容,怎么查看进程,杀死进程,我回答的是kill -9 他问 后面带其他参数有什么意义
jenkins上线怎么上线的,git怎么拉取代码,容器怎么关闭开启
mysql主从原理,主库主库写入数据从库立马就能查吗
nginx的方向代理怎么配
redis集群原理,数据持久化的方式
写过哪些脚本,怎么写的
(技术面完人事面,人事面完总监综合面)
对了最后还有一个问题,就是来了我们公司就你一个系统运维相当于是空白的,你是打算怎么规划安排一下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
骞云科技
简单做一下自我介绍
上家公司你负责做什么?多大规模?
nginx你上家公司正使用哪些模块?
tomcat出问题怎么处理?OOM可能是哪些原因?平时tomcat出过什么问题怎么解决?
mysql版本?架构?为什么不用RDS?增删改查?更复杂的操作会不会?左连接右连接?
数据库备份策略?
监控用的什么?普罗米修斯了解吗?云上有监控为什么不用?
zabbix监控了什么?对nginx做了哪些监控?怎么做的?
elk架构?作用?
docker基本命令?如何把服务迁移到docker上?
k8s如何对一个应用进行升级?
grep、awk、sed会用吗?
写过哪些脚本?
ansible用过哪些模块?
1
2
3
4
5
6
7
8
9
10
11
12
13
蛇口项目组

描述一下上家公司是做什么的,做过的项目
root密码忘了怎么处理
怎么查看磁盘设备
磁盘怎么扩容的详细流程,做没做过raid
用的什么文件系统
elk各个节点的作用
zabbix前端页面用的什么组件
数据库备份策略,用的什么命令备份,备份的数据存储在哪里,存储在其他服务器上怎么传输。
mysql单节点怎么做的主从,做主从时主库服务要不要停掉
ansible怎么查看集群内其他服务器的内存
还有些记不清了。
1
2
3
4
5
6
7
8
9
10
11
12
招联金融

自我介绍
离职原因 两家的
会问你是不是裸辞(两次的)(这个地方没回答好,千万不要说裸辞)
为什么来深圳
上上家的公司的情况
ctime、atime、mtime
打包压缩 解压
nginx的反向代理怎么配置,具体参数怎么写
nginx负载均衡配置,在什么位置写,不在主配置文件写,怎么去配置
tamcat怎么查看启动状态 日志在哪看 访问日志怎么看 几个端口 这几个端口干啥的
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
招联金融
离职的原因,面试情况
find命令,详细参数,为什么使用这些参数
ctime、atime、mtime
rsync命令参数
nginx怎么启动,重载
nginx的反向代理怎么配置,具体参数怎么写
nginx负载均衡配置,在什么位置写,不在主配置文件写,怎么去配置
tomcat报错显示的内容是什么,写出来
tomcat配置文件,主要修改的是什么
zookeeper是什么,怎么去配置
ELK数据流,各部分都是什么,作用
ansible的操作流程,剧本怎么写
ansible变量怎么用,具体怎么写
遇到故障怎么去排查解决
同一个机器上不同用户怎么去使用不同版本的jdk,具体的配置参数跟启动方式,
怎么知道启动的是该用户想用版本的jdk
redis集群的原理
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
汇合发展
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
2
3
4
5
6
7
8
9
10
万科采筑
1.jenkins的上线流程,elk怎么做的,es有几台,有哪些节点,遇到了哪些问题

2.公司架构,云服务器大概一个月开销多大,前后端语音是什么,查看负载的命令,1分钟的负载值怎么算的,查看内存使用,显示出来都有什么,buffer和cache的区别,怎么清理,3代表什么

3.现场写判断tomact服务是否存活脚本,/app目录使用磁盘大于80报警,nginx的反向代理怎么写(给/v1/wangke做反向代理 端口 8081)

4.dockerfile中ADD 和COPY有什么区别,docker的命令

5.k8s的服务有哪些
1
2
3
4
5
6
7
8
9
奥术游戏
1、写过的shell脚本,多少行,会不会python
2、怎么把数据库状态回退到半个小时前
3、用shell脚本写1到100相加
4、mysql怎么指定ip可以访问(不使用其他工具)
5、ansible执行过程
6、如何在家里操纵内网机器(让美术设计那些不懂技术的也可以简单上手)
7、filebeat收集的日志怎么交给两套分析系统进行处理
8、一个6L杯子一个5L杯子怎么量出3L的水
1
2
3
4
5
6
7
8
9
法本:
1.用过那些系统,用过widows吗?
2.了解网络吗,idc,ssl,做过vlan吗?
3.ci/cd实现过程
4.ansible部署zabbix-agent
5.传递公钥的时候如何避免交互,具体说出参数

6.公司架构,部署过什么?
7.主要是网络类型吧,那时候不知道是面试网络工程师。需要学习python,使用过网络模块吗
1
2
3
4
5
6
7
8
9
10
11

1. 生产上遇到的故障
2.MySQL同步方式,之间的区别
3.如何避免数据库主从复制数据不一致
4.系统初始化都初始化过什么
5.做zabbix监控,为什么不使用云上的自定义监控项
6.kvm的网络,为什么做kvm
7.docker镜像分层
后面的记不大清了


1
2
3
4
5
6
7
8
9
10
11
12
13
14
松茂科技
1.jenkins上线流程,负责哪些
2.gitlab是否使用过,是自己搭建的吗
3.生产中遇到哪些问题,怎么解决,至少三个
4.k8s的组件,service作用,有哪几种方式暴露端口
5.服务器初始化一般会做哪些设置
6.服务访问慢了怎么办,会如何排查,如何解决
7.zabbix使用过哪些自定义监控
8.git是否使用过,awk,sed,会给个题目,让你使用
9.docker是否生产中常用,有没有上线过什么项目
10.数据库备份策略
11.之前公司ELK一般用来干嘛,RabbitMQ是做什么用的
12.redis集群原理
13.iptables和firewalld用的多不多,怎么进行端口的转发
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
汇合发展:
1.工作经历详细
2.是否会加班,加班会干什么
3.脚本写过什么脚本怎么写的
4.判断tomcat服务启动方法
5.nginx启动,为什么可以这么启动
6.你们公司如果域名变了你会怎么做
7.你的优点是啥,你怎么证明
8.数据库架构
9.离职原因,是否还有其他因素
10.tomcat修改端口
11.项目上线你怎么做的
12.Jenkins的构建脚本你自己写的吗
13.假如给你文件,每一行都是一个单词,统计单词个数和重复的,如果有的一行不止一个单词用空格分开你怎么处理。你可以写出来吗
14.笔试:Java程序OOM,你熟悉的Linux命令,安装不同版本jdk,浏览器输入域名返回网页过程。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
汇合发展
1.自我介绍(通过自我介绍的内容问)
2.你是如何做系统优化的,优化的参数
3.你还优化过什么
4.你做过什么项目,怎么做的(流程)
5.你写过什么脚步,写了多少
6.你们公司的架构是什么,服务器有多少,部门多少人
7.生产中怎么测试keepalived漂移,怎么启动keepalived
8.你处理过什么报警信息,报警的等级有哪些
9.你碰见过什么问题,如何解决
10.你们的项目是怎么上线的,直接放到生产中还是?
11.你们nginx怎么安装的,安装目录在哪
12.你在搭建zabbix的时候碰见什么问题,怎么报警
13.有没有发生什么紧急情况要进行处理
14.数据库用的什么架构,怎么实现的
15.你们公司上班时间是怎样的,有加班吗
16.你们加班一般是因为什么
18.你们新项目上线要多久时间处理
19.一些一阶段的命令 还有人事题
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
优维科技:
主要根据你的项目问,所以自己的项目要熟悉,会问的比较细
elk数据流
elk各部份分别是什么,作用
tomcat如何查看内存是否不够,具体看什么参数
ngin 5xx 错误
location 匹配
如何将一个服务部署到k8s集群中
yaml文件中写什么
谈一下你对docker的理解
公司的架构、服务器情况
中间件软件了解哪些
zabbix监控什么
dns解析
服务故障怎么去解决
还问一些基本的系统命令
怎么判断系统负载过高,top(里面的内容都是什么)

人事问题:
上家公司在哪,
主要什么产品,
有几个运维,
多少开发人员,
你主要做什么,
为什么要这么多运维,
日志量大吗,
负责的服务器有多少
为什么来深圳
1
2
3
4
5
6
7
8
9
卜鸣网络
1.部署tomcat,需要大致步骤。
2.nginx部署tomcat集群
3.nginx的配置文件,
4.nginx的配置文件,部署后端服务器需要修改配置,
5.sql语句@和#的区别,
6.mysql得存储引擎,具体到什么版本什么引擎,
7.了解别的java中间件吗
8.tomcat的参数,可能是开发问的,很细具体到参数的意思,问了很多个
1
2
3
4
5
6
7
8
9
10
沃尔玛外包:
1、lv扩容
2、公司架构
3、压缩命令tar
4、ansible批量部署playbook的编写
5、物理服务器的配置
6、根分区满了怎么排查
7、部门
8、没人值班出了问题怎么处理
9、有没有给系统打过补丁
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
追一科技

nginx如何限流,加密认证(让某一个地区不访问),地址库

怎么做cdn做边缘缓存

redis如何设置最大连接数

redis 的持久化策略,区别,

aof的实时性的策略

如何做数据库双元区备份

k8s访问域名的请求怎么到容器里面

三个pod,怎么从service到pod 的容器里面去的呢,怎么区分每一个pod

的不一样

什么是endpoint,在service转发中起到了什么重要功能

无头服务和有状态

docker 的网络模式有哪些,区别

docker怎么做资源限制,基于什么机制

宿主机访问不通docker容器,但是服务是正常的,网络层面的问题,还有其他的方面



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
腾讯的ieg部门面试总结:
1、做面试题:(会收手机,在公共场合茶水间,且后面直接面对面在你面前工作)
301、302的区别,怎么选择
if里面-e和-f的区别
写出linux里的命令,至少10个
查看文件前5行内容
写出50x的不同含义
给一张数据库表,怎么查看表a里aa.com的id以及其他的问题(其他的不记得了)
写出python的五种库
简单说一下Djingo架构
2、面试:
是否是独生子女
为什么来深圳,
zabbix里的参数是怎么配的
server端和agent端怎么配的要很具体说出模块,端口是多少
出现代码问题,怎么排错,定位,怎么和开发一起定位解决,并且由于我说打印那个java里的日志,和开发一起看,看不是很懂,就说之后要学java,要具体怎么解决,给出解决方案
整个公司的架构是什么的(linux还是windows)
怎么定义报警级别,举了例子cpu超过80%,是什么报警级别,给谁报警,然后所有服务器都是这样设置的吗?不是请说出哪些不是,依据是啥,设置成啥
你觉得上一份工作的老大看中了你啥?
脚本能力
公司多少台服务器
自己未来的工作的定义是啥,偏使用还是排查,还是脚本
写过什么ansible部署的脚本,此处一定要谨慎,因为说写了啥,她会一直问下去
zabbix里问的特别细,以及一直都在问生产上怎么监控,监控啥,怎么和开发解决如果是代码问题,给出解决方案,总之都是生产上怎么解决问题
要了解一些腾讯蓝鲸之类的
1
2
3
4
5
6
浩远智能科技
这个公司的工作有点跟咱们运维偏
部署他们公司的机器人
去公司后,要去上海培训
面我的对于运维不懂,还要我介绍zabbix
跟我说如果真想进,就给我安排接下来的面试,跟经理拉呱
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
景鸿科技
1、shell的$0和$1分别是什么意思?
2、有一个war包,端口是8080,写一个监控这个war包的脚本,服务挂了怎么让他起来,说思路即可。
3、了解python吗?常用的模块知道哪些。
4、实现负载均衡的软件了解哪些,说一下nginx和lvs以及haproxy的区别,lvs的几种模式。
5、keepalived使用的协议,中文名字,nginx的调优,nginx的负载均衡策略(其实就是算法),还要说出大概解释一下。
6、ELK部署在什么环境,kafka的一些概念,比如topic、生产者、消费者、kafka的分区。
7、ansible用来做什么,简单说一下playbook常用模块以及作用。
8、用过oracle吗?mysql主从复制原理。
9、redis的数据类型,持久化存储方式以及区别,RDB和AOF哪个更安全,哪个性能更好,两种持久化方式一起用的话优先加载哪一个。
10、哨兵模式的原理,作用,redis的缓存雪崩以及怎么预防。
11、docker的核心是什么,基于什么实现的,cgroup是做什么用的,dockerfile会写吗?说一下常用的模块,ADD和copy的区别,CMD和RUN的区别
12、用过k8s吗?是在生产中还是测试环境,给master和node安装过哪些组件说一下,以及他们的作用,存储用的是什么(说的是etcd数据库)?说一下pod的创建主要流程。
13、有一台物理服务器,怎么给一块网卡配置两个ip。
14、top命令了解吧,那么知道了系统负载的1分钟、5分钟、15分钟,cpu核心为2核,怎么计算它的平均负载。
15、buffer和cache是什么,他们的区别是什么,缓存区的作用。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
网心二面
监控里每天同一时间服务器总是报会负载过高,计划任务里有一个程序在每天这个时间内跑,研发说是个正常的程序,不会影响服务器正常运行,你该怎么解决?
ansible有哪些模块?用ansible做过什么?
查看磁盘性能有哪些方式?
MySQL掌握的怎么样?会不会多表查询?
服务器负载过高,你会如何排查?
zabbix监控解决过哪些问题?
你有什么优点?缺点?
如果领导总是把任务交给你做你该怎么解决?
如果同事总是把任务推给你你会怎么解决?和他协商过他依旧如此,你会怎么解决?
你有了解过我们公司吗?
你上家公司多少人?主要是做什么的?经历过融资?能实现盈利吗?
你平时一般和哪些人员接触?关系如何?之间如何处理矛盾?
大学里学了哪些课程?为什么会走运维?
校招过去工资多少?离职前工资多少?离职原因?
你的家庭情况?
面对客户你会怎么去解决客户的问题?
上家公司有没有年终奖?
说一下你在上家公司工作了三年有什么收获?
你写的这些项目里哪一个对你来说是最有挑战性的?有没有失败过?后面为什么又成功了?
你对未来有什么样的规划?
大概就这些,有些记不起来了,技术面不是很难,人事问的特别细
1
2
3
4
5
6
7
8
9
10
11
12
13
叶子科技
写过什么shell脚本
ansible常用什么模块,
MySQL主从复制原理
数据库备份怎么备份的
tomcat的优化,怎么改端口
nginx的优化
系统优化怎么做,改什么参数
elk用的什么版本,数据流
zabbix监控过什么,自定义监控项怎么做
docker的网络模式
jenkins用来做什么,cicd流程
k8s的组件,deployment用来做什么
1
2
3
4
5
6
慧讯科技
1.如何尽可能写最小的docker镜像?
2.elk中kibana收集不到数据从那几个方面进行排查
3.NGINX优化
4.监控NGINX除了端口服务状态还监控过其他复杂的选项吗?
5.k8s部分问题,忘了,不过这个运维老大把我当家人问的题,我不会的还教我,泪目了家人们
1
2
3
4
5
6
wesoft
1.k8s资源限制,docker资源限制
2.docker优化
3.elk集群kibana没有数据怎么排查
4.nginx优化
不用自我介绍,照着简历随便问了一点
1
2
3
4
5
6
7
召合网络:
1:自我介绍
2:生产上遇到过的最大问题
3:tomcat的日志量很大,怎么解决
4:docker,k8s用过吗
5:写过什么脚本,python用过吗
6:你在公司除了做运维,还做过其他工作吗
1
2
3
4
5
卜鸣网络
1.部署lvs+nginx要多长时间
2.nginx调优
3.Jenkins怎么安装
4.生产中遇到的问题
1
2
3
4
5
6
7
8
威富通
自我介绍,公司架构,离职原因,elk收集哪些日志,有什么作用,写过什么
脚本还有一些乱七八糟的东西都不难,面试完后掏了一份面试题出来,
他就坐我对面看着我做,三页题目,有选择题和填空题,选择题记不清了 不是
很难,填空题有道是怎么查看逻辑卷,后面几道大题第一道是抓包的,要写
完整命令,还有几个题目是和awk,srot,uniq相关的,那几道我都没做,
我和他说我记不清那些命令的详细参数,但我可口述下大致的流程,然后他
也没让我说,他说这面试题不重要,有些做不出来很正常。
1
2
3
4
5
鼎驰科技外包的一个证券公司
自我介绍,没问什么技术面的东西,只是在一个劲的介绍他们自己的业务,他们
主要是监控数据库这块,工作很简单只要盯着监控,有问题5分钟之内反馈问题就
好了,都不用自己解决,还问了我上一家公司薪资多,我说11k,然后他脸就黑了
外包公司给的工资是8-9k)
1
2
3
4
5
中软国际
自我介绍都不用,问一些简单的命令,find什么的,怎么过滤出一个文件里的
内容这类,然后就是照着简历上的技能一条一条问,不会问太深。


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
杭州----沃趣
1.故障处理过程中常用的运维命令
2.进程的状态(RSTZ)
3.什么会导致僵尸进程
4.遇到过cpu使用率过高的情况吗
5.mysql运行在哪个cpu上,对应的cpu还跑了哪些进程
6.日常巡检会关注哪些巡检指标
7.使用zabbix监控,被监控端过多你会做什么优化
8.keepalived工作原理
9.网络链路中断,keepalived会怎么样
10.遇到脑裂,怎么处理
11.出现脑裂,如何快速回复业务
12.keepalived应用在无状态的服务上还是有状态的服务上
13.keepalived给业务做高可用,假如有A、B两台业务服务器,那如何判断某一台服务器不可用了,做一个高可用切换,这个脚本逻辑是什么
14.用zabbix对数据库主备监控是如何去做的
15.ansible都会用于什么场景
16.编写过playbook吗
1
2
3
4
5
6
7
8
9
10
11
12

1.对运维工作时间怎么看待的
2.能接受打电话随时回来嘛
3.tcp/ip四层模型
5.http协议原理
6.shell写过那些脚本
7.cicd自动上线部署流程
8.nginx优化
9.nginx七层负载支持最大并发量多少
10.mysql主从具体怎么做的
11.redis的日常使用命令
12.zabbix监控过那些内容
1
2
3
4
5
6
7
8
9
10
11
1.对运维工作时间怎么看待的
2.能接受打电话随时回来嘛
3.tcp/ip四层模型
5.http协议原理
6.shell写过那些脚本
7.cicd自动上线部署流程
8.nginx优化
9.nginx七层负载支持最大并发量多少
10.mysql主从具体怎么做的
11.redis的日常使用命令
12.zabbix监控过那些内容
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
上海松鼠AI
写过什么shell脚本
用过什么linux系统
判断系统是什么类型
查看linux系统各个服务的状态
命令top中查看cpu按什么键
top中还有什么指标你会关注
什么会导致cpu平均负载升高
网络当中查看各种连接状态统计流量数量
写一个shell脚本,假设一文本内容第一行为1第二行为2第三行为4,这个文本也可以有300行或者3000行,请问如何使用awk获取它们的和
linux内核参数调优
mysql主从复制怎么做的
如何判断主从复制是否成功
如何判断主从复制是否有延迟
cicd流程
dockerfile怎么写举个例子
你了解容器和k8s吗
# 自我介绍模板 自我介绍 您好!我叫XX,来自美丽的城市--安徽蚌埠,毕业于安徽理工大学,下班时间喜欢学习和运维相关的知识。 之前在深圳做过四年的运维,在公司主要负责维护数据库,ELK日志的收集, Zabbix监控报警的处理,保证服务24小时不间断工作, 以及配合开发测试环境的搭建、应用的发布,以及对业务系统问题的跟踪与反馈。 阿里云 ECS,SLB 等产品创建与维护。 稍后您想了解的话咱们可以细聊 这次来应聘咱们公司的运维工程师一职,我看了咱们公司的业务领域和候选人的要求,在业务和技术栈两块,我认为匹配度还是比较高的,我看了工作职责,也是本人希望长期深耕的一个领域,这一次跳槽是因为受限于业务发展的场景的原因,技术的挑战和优化的空间已经十分有限了,希望换到一个更大的技术平台,希望能够加入到咱们公司。 一、熟练掌握 Shell 脚本编写,例如 grep、awk、正则表达式等使用方法 二、熟悉 Zabbix 自动化监控工具 三、熟练掌握CI/CD部署及使用,熟练掌握jenkins+gitlab+ansible持续集成 四、熟练掌握Web架构,熟悉Nginx、Apache、Tomcat等常用服务的安装配置; 五、熟练掌握docker,熟练编写dockerfile,熟练使用docker相关指令; 六、熟练掌握k8s容器集群管理系统 工作原理,熟悉kubectl命令行管理工具,掌握k8s容器平台的kubeadm、二进制部署,掌握service、ingress负载均衡,容器持久化,及k8s容器平台的管理和维护。 我的性格稳重、做事认真,有强烈的工作责任心,具备良好的团队合作意识,面对工作中遇到的困难,能冷静思考,在工作中积极配合业务的落地,注重效率。 您有什么要问的吗 尊敬的面试官,您好,我叫XXX,来自浙江邮电职业技术学院的移动通信技术专业。我今天来是想应聘贵公司的运维工程师岗位 ,在过去三年时间里,我一直从事运维相关工作,主要负责Linux服务器运维,包括使用脚本对服务器作日常巡检、使用zabbix、elk和ansible技术,对服务器的实时监控、自动化配置部署以及对产生的日志进行集中化存储和分析、各项服务的调优、数据库备份,做mysql主从高可用、故障处理等工作。 我比较注重团队合作和成果导向,在工作中经常与同事紧密合作,解决问题和协调工作进度,平时也在不断看书、看视频课程学习主流技术,扩展知识体系 我刚好看到咱们公司的岗位招聘,跟我之前的工作经历很相似,然后就投递了咱们公司。我的自我介绍完毕,谢谢 面试官,您好! 我叫XXX,来自XXX,毕业于XXX大学XXX专业,今天我来面试运维工程师这一职位。上家公司我在XXX公司担任运维工程师一职,我平时的工作主要是负责服务器的监控、巡检还有处理出现的各种问题,比如常见的问题:咱们的机器负载达到100%了,我会查一下文件大小,删除可以删的文件来降低负载(举个例子,自由发挥)。还有主要负责配置机器的haproxy,关注日志,grafana,nagios等是否异常。空闲时间, 我也会进行一些学习,比如脚本的编写,docker的运用,docker-compose如何起服务等(自由发挥)。 以上是我的自我介绍,谢谢! # 图片待转文字 ![面试题](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/面试题.png) ![2024-11-06 141203(D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/2024-11-06 141203(14).png)](assets/2024-11-06%20141203(14).png) ![2024-11-06 141203(D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/2024-11-06 141203(15).png)](assets/2024-11-06%20141203(15).png) ![2024-11-06 141203(D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/2024-11-06 141203(16).png)](assets/2024-11-06%20141203(16).png) ![2024-11-06 141203(D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/2024-11-06 141203(16)_20241106_141256.png)_20241106_141256](assets/2024-11-06%20141203(16)_20241106_141256.png) ![2024-11-06 141203(D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/2024-11-06 141203(16)_20241106_141256_20241106_141256.png)_20241106_141256_20241106_141256](assets/2024-11-06%20141203(16)_20241106_141256_20241106_141256.png) ![2024-11-06 141203(D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/2024-11-06 141203(16)_20241106_141256_20241106_141256_20241106_141256.png)_20241106_141256_20241106_141256_20241106_141256](assets/2024-11-06%20141203(16)_20241106_141256_20241106_141256_20241106_141256.png) ![2024-11-06 141203(D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/2024-11-06 141203(17).png)](assets/2024-11-06%20141203(17).png) ![2024-11-06 141203(D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/2024-11-06 141203(18).png)](assets/2024-11-06%20141203(18).png) ![2024-11-06 141203(D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/2024-11-06 141203(19).png)](assets/2024-11-06%20141203(19).png) ![2024-11-06 141203(D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/2024-11-06 141203(20).png)](assets/2024-11-06%20141203(20).png) ![2024-11-06 141203(D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/2024-11-06 141203(21).png)](assets/2024-11-06%20141203(21).png) ![2024-11-06 141203(D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/2024-11-06 141203(22).png)](assets/2024-11-06%20141203(22).png) ![2024-11-06 141203(D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/2024-11-06 141203(23).png)](assets/2024-11-06%20141203(23).png) ![2024-11-06 141203(D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/2024-11-06 141203(24).png)](assets/2024-11-06%20141203(24).png) ![2024-11-06 141203(D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/2024-11-06 141203(25).png)](assets/2024-11-06%20141203(25).png) ![2024-11-06 141203(D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/2024-11-06 141203(26).png)](assets/2024-11-06%20141203(26).png) ![2024-11-06 141203(D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/2024-11-06 141203(27).png)](assets/2024-11-06%20141203(27).png) ![2024-11-06 141203(D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/2024-11-06 141203(28).png)](assets/2024-11-06%20141203(28).png) ![2024-11-06 141203(D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/2024-11-06 141203(29).png)](assets/2024-11-06%20141203(29).png) ![2024-11-06 141203](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/2024-11-06 141203.png) ![2024-11-06 141203(D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/2024-11-06 141203(1)-17338838516881.png)](assets/2024-11-06%20141203(1)-17338838516881.png) ![2024-11-06 141203(D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/2024-11-06 141203(2).png)](assets/2024-11-06%20141203(2).png) ![2024-11-06 141203(D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/2024-11-06 141203(3).png)](assets/2024-11-06%20141203(3).png) ![2024-11-06 141203(D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/2024-11-06 141203(4).png)](assets/2024-11-06%20141203(4).png) ![2024-11-06 141203(D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/2024-11-06 141203(5).png)](assets/2024-11-06%20141203(5).png) ![2024-11-06 141203(D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/2024-11-06 141203(6).png)](assets/2024-11-06%20141203(6).png) ![2024-11-06 141203(D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/2024-11-06 141203(7).png)](assets/2024-11-06%20141203(7).png) ![2024-11-06 141203(D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/2024-11-06 141203(8).png)](assets/2024-11-06%20141203(8).png) ![2024-11-06 141203(D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/2024-11-06 141203(9).png)](assets/2024-11-06%20141203(9).png) ![2024-11-06 141203(D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/2024-11-06 141203(10).png)](assets/2024-11-06%20141203(10).png) ![2024-11-06 141203(D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/2024-11-06 141203(11).png)](assets/2024-11-06%20141203(11).png) ![2024-11-06 141203(D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/2024-11-06 141203(12).png)](assets/2024-11-06%20141203(12).png) ![2024-11-06 141203(D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/2024-11-06 141203(13).png)](assets/2024-11-06%20141203(13).png) ![微信图片_20240624161708](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240624161708.jpg) ![微信图片_20240624161712](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240624161712.jpg) ![微信图片_20240624161716](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240624161716.jpg) ![微信图片_20240624161720](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240624161720.jpg) ![微信图片_20240624161727](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240624161727.png) ![微信图片_20240624161731](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240624161731.png) ![微信图片_20240624161736](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240624161736.jpg) ![微信图片_20240624161739](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240624161739.jpg) ![微信图片_20240624161743](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240624161743.jpg) ![微信图片_20240624161747](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240624161747.jpg) ![微信图片_20240624161750](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240624161750.jpg) ![微信图片_20240624161753](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240624161753.png) ![微信图片_20240625100422](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240625100422.png) ![微信图片_20240625100540](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240625100540.png) ![微信图片_20240625100622](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240625100622.png) ![微信图片_20240625100628](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240625100628.png) ![微信图片_20240626103512](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240626103512.png) ![微信图片_20240626103553](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240626103553.jpg) ![微信图片_20240626103608](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240626103608.jpg) ![微信图片_20240627155335](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240627155335.png) ![微信图片_20240627155401](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240627155401.png) ![微信图片_20240627155542](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240627155542.png) ![微信图片_20240627155607](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240627155607.png) ![微信图片_20240627155638](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240627155638.png) ![微信图片_20240627155904](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240627155904.jpg) ![微信图片_20240627155907](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240627155907.jpg) ![微信图片_20240627155910](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240627155910.jpg) ![微信图片_20240627155913](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240627155913.jpg) ![微信图片_20240627155917](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240627155917.jpg) ![微信图片_20240627155920](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240627155920.jpg) ![微信图片_20240627155924](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240627155924.jpg) ![微信图片_20240627155927](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240627155927.jpg) ![微信图片_20240627155930](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240627155930.jpg) ![微信图片_20240627155934](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240627155934.jpg) ![微信图片_20240627155937](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240627155937.jpg) ![微信图片_20240627155941](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240627155941.jpg) ![微信图片_20240627155944](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240627155944.jpg) ![微信图片_20240627155948](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240627155948.jpg) ![微信图片_20240627155951](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240627155951.jpg) ![微信图片_20240627155953](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240627155953.jpg) ![微信图片_20240627155956](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240627155956.jpg) ![微信图片_20240627160000](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240627160000.jpg) ![微信图片_20240627160002](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240627160002.jpg) ![微信图片_20240627160005](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240627160005.jpg) ![微信图片_20240627160008](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240627160008.jpg) ![微信图片_20240627160012](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240627160012.jpg) ![微信图片_20240627160016](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240627160016.jpg) ![微信截图_20240626103625](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信截图_20240626103625.png) ![微信截图_20240626103709](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信截图_20240626103709.png) ![微信截图_20240626105740](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信截图_20240626105740.png) ![微信截图_20240627155535](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信截图_20240627155535.png) ![微信截图_20240627155846](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信截图_20240627155846.png) ![微信图片_20240624161616](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240624161616.jpg) ![微信图片_20240624161622](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240624161622.jpg) ![微信图片_20240624161628](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240624161628.jpg) ![微信图片_20240624161632](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240624161632.jpg) ![微信图片_20240624161636](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240624161636.jpg) ![微信图片_20240624161640](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240624161640.jpg) ![微信图片_20240624161648](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240624161648.jpg) ![微信图片_20240624161657](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240624161657.jpg) ![微信图片_20240624161701](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240624161701.jpg) ![微信图片_20240624161705](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240624161705.jpg) ![微信图片_20220818142649](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20220818142649.jpg) ![微信图片_20220818142659](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20220818142659.jpg) ![微信图片_20220818150535](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20220818150535.jpg) ![微信图片_20220818142611](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20220818142611.jpg) ![微信图片_20220818142645](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20220818142645.jpg) ![image-20241211145635865](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/image-20241211145635865.png) ![image-20241211145712094](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/image-20241211145712094.png) ![微信图片_20230314160229](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20230314160229.jpg) ![微信图片_20230321094417](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20230321094417.jpg) ![微信图片_20230321094443](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20230321094443.jpg) ![微信图片_20230321094451](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20230321094451.jpg) ![微信图片_20230321094513](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20230321094513.jpg) ![微信图片_20230321114009](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20230321114009.jpg) ![微信图片_20230314160215](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20230314160215.jpg) ![微信图片_20230314160225](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20230314160225.jpg) ![4f3bdc98-5d67-4f44-b633-5f5bb28b66eb](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/4f3bdc98-5d67-4f44-b633-5f5bb28b66eb.jpg) ![06c7b08f-1203-435a-89dc-f76a57c678cf](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/06c7b08f-1203-435a-89dc-f76a57c678cf.jpg) ![8d49b1cd-81de-4040-abbd-6591a413a0a1](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/8d49b1cd-81de-4040-abbd-6591a413a0a1.jpg) ![9a640c65-6b90-4919-9881-2449fb0dd287 - 副本](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/9a640c65-6b90-4919-9881-2449fb0dd287 - 副本.jpg) ![9a640c65-6b90-4919-9881-2449fb0dd287](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/9a640c65-6b90-4919-9881-2449fb0dd287.jpg) ![9d9bbf34-ebbf-4c8f-aa39-95b733cd64f0](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/9d9bbf34-ebbf-4c8f-aa39-95b733cd64f0.jpg) ![63f947fc-63df-4dc9-8778-5db725920674](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/63f947fc-63df-4dc9-8778-5db725920674.jpg) ![89a040dd-06cc-4a3d-84c1-a3ecd1d0575a](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/89a040dd-06cc-4a3d-84c1-a3ecd1d0575a.jpg) ![43917622-b07d-4d12-8484-7ec8d56ee85e](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/43917622-b07d-4d12-8484-7ec8d56ee85e.jpg) ![a1abda1d-10a9-4d40-8b22-ed451820f523](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/a1abda1d-10a9-4d40-8b22-ed451820f523.jpg) ![ae85e993-dfdb-48ae-9ca9-bd66ef735fc3](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/ae85e993-dfdb-48ae-9ca9-bd66ef735fc3.jpg) ![bc59141f-2cdc-454a-9e65-c1d18585f801](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/bc59141f-2cdc-454a-9e65-c1d18585f801.jpg) ![de694769-53ed-4a38-bb9e-a349ede64b75](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/de694769-53ed-4a38-bb9e-a349ede64b75.jpg) ![ec2a43d0-fdd2-4624-a7b2-05b8bff6aac1](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/ec2a43d0-fdd2-4624-a7b2-05b8bff6aac1.jpg) ![f9eac4e4-5524-48ea-a4c6-40bc87d05017](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/f9eac4e4-5524-48ea-a4c6-40bc87d05017.jpg) ![微信图片_20240624161616](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240624161616-17339008221422.jpg) ![微信图片_20240624161622](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240624161622-17339008221423.jpg) ![微信图片_20240624161628](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240624161628-17339008221424.jpg) ![微信图片_20240624161632](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240624161632-17339008221425.jpg) ![微信图片_20240624161636](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240624161636-17339008221437.jpg) ![微信图片_20240624161640](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240624161640-17339008221426.jpg) ![微信图片_20240624161648](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240624161648-17339008221438.jpg) ![微信图片_20240624161657](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240624161657-17339008221439.jpg) ![微信图片_20240624161701](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240624161701-173390082214310.jpg) ![微信图片_20240624161705](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240624161705-173390082214311.jpg) ![微信图片_20240624161708](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240624161708-173390082214312.jpg) ![微信图片_20240624161712](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240624161712-173390082214313.jpg) ![微信图片_20240624161716](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240624161716-173390082214314.jpg) ![微信图片_20240624161720](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240624161720-173390082214315.jpg) ![微信图片_20240624161736](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240624161736-173390082214416.jpg) ![微信图片_20240624161739](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240624161739-173390082214417.jpg) ![微信图片_20240624161743](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240624161743-173390082214418.jpg) ![微信图片_20240624161747](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240624161747-173390082214419.jpg) ![微信图片_20240624161750](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240624161750-173390082214420.jpg) ![微信图片_20240626103553](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240626103553-173390082214421.jpg) ![微信图片_20240626103608](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240626103608-173390082214422.jpg) ![微信图片_20240627155904](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240627155904-173390082214423.jpg) ![微信图片_20240627155907](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240627155907-173390082214525.jpg) ![微信图片_20240627155910](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240627155910-173390082214424.jpg) ![微信图片_20240627155913](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240627155913-173390082214526.jpg) ![微信图片_20240627155917](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240627155917-173390082214527.jpg) ![微信图片_20240627155920](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240627155920-173390082214528.jpg) ![微信图片_20240627155924](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240627155924-173390082214529.jpg) ![微信图片_20240627155927](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240627155927-173390082214530.jpg) ![微信图片_20240627155930](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240627155930-173390082214531.jpg) ![微信图片_20240627155934](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240627155934-173390082214532.jpg) ![微信图片_20240627155937](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240627155937-173390082214533.jpg) ![微信图片_20240627155941](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240627155941-173390082214634.jpg) ![微信图片_20240627155944](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240627155944-173390082214636.jpg) ![微信图片_20240627155948](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240627155948-173390082214635.jpg) ![微信图片_20240627155951](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240627155951-173390082214637.jpg) ![微信图片_20240627155953](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240627155953-173390082214638.jpg) ![微信图片_20240627155956](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240627155956-173390082214639.jpg) ![微信图片_20240627160000](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240627160000-173390082214640.jpg) ![微信图片_20240627160002](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240627160002-173390082214641.jpg) ![微信图片_20240627160005](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240627160005-173390082214642.jpg) ![微信图片_20240627160008](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240627160008-173390082214643.jpg) ![0fad7f73-809a-430f-9257-1dc36bae8061](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/0fad7f73-809a-430f-9257-1dc36bae8061.jpg) ![1](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/1.jpg) ![1e821c78-7b5a-476d-a95e-9cee05818394](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/1e821c78-7b5a-476d-a95e-9cee05818394.jpg) ![2f48cb71-fd27-41b3-8ee6-f2e1a18d6ed4](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/2f48cb71-fd27-41b3-8ee6-f2e1a18d6ed4.jpg) ![4d0c3eff-6f3f-4b5d-b8ef-da11a276b43f - 副本](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/4d0c3eff-6f3f-4b5d-b8ef-da11a276b43f - 副本.jpg) ![4d0c3eff-6f3f-4b5d-b8ef-da11a276b43f](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/4d0c3eff-6f3f-4b5d-b8ef-da11a276b43f.jpg) ![微信截图_20240626103709](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信截图_20240626103709-173390086627444.png) ![微信截图_20240626105740](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信截图_20240626105740-173390086627445.png) ![微信截图_20240627155535](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信截图_20240627155535-173390086627546.png) ![微信截图_20240627155846](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信截图_20240627155846-173390086627547.png) ![微信截图_20240703100120](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信截图_20240703100120.png) ![微信截图_20240703100139](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信截图_20240703100139.png) ![微信截图_20240703100151](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信截图_20240703100151.png) ![微信截图_20240705114539](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信截图_20240705114539.png) ![微信图片_20240624161727](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240624161727-173390086627648.png) ![微信图片_20240624161731](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240624161731-173390086627649.png) ![微信图片_20240624161753](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240624161753-173390086627650.png) ![微信图片_20240625100422](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240625100422-173390086627651.png) ![微信图片_20240625100540](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240625100540-173390086627653.png) ![微信图片_20240625100622](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240625100622-173390086627652.png) ![微信图片_20240625100628](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240625100628-173390086627654.png) ![微信图片_20240626103512](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240626103512-173390086627755.png) ![微信图片_20240627155335](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240627155335-173390086627756.png) ![微信图片_20240627155401](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240627155401-173390086627758.png) ![微信图片_20240627155542](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240627155542-173390086627757.png) ![微信图片_20240627155607](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240627155607-173390086627759.png) ![微信图片_20240627155638](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240627155638-173390086627760.png) ![微信图片_20240703100210](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240703100210.png) ![微信图片_20240703100252](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240703100252.png) ![微信图片_20240703100310](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240703100310.png) ![微信图片_20240703100417](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20240703100417.png) ![fff](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/fff.png) ![企业微信截图_20231101173839](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/企业微信截图_20231101173839.png) ![微信截图_20240626103625](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信截图_20240626103625-173390086627861.png) ![2](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/2.jpg) ![3](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/3.jpg) ![4](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/4.jpg) ![5](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/5.jpg) ![6](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/6.jpg) ![7](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/7.jpg) ![8](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/8.jpg) ![9](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/9.jpg) ![10](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/10.jpg) ![1](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/1-173390173347862.jpg) ![微信图片_20230310162312](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20230310162312.jpg) ![微信图片_20230310162316](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20230310162316.jpg) ![微信图片_20230310162320](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20230310162320.jpg) ![微信图片_20230310162324](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20230310162324.jpg) ![微信图片_20230310162252](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20230310162252.jpg) ![微信截图_20241128170925](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信截图_20241128170925.png) ![微信图片_20241128170406](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20241128170406.png) ![微信图片_20241128170834](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20241128170834.jpg) ![微信图片_20241128171239](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信图片_20241128171239.jpg) ![问题01-PG数据库](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/问题01-PG数据库.png) ![微信截图_20241128170911](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/微信截图_20241128170911.png) # 2406 ![image-20250401144214652](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/image-20250401144214652.png)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
数据库备份怎么备份
多久一次全量多久一次增量 不能说的太官方要结合实际
备份是自动的还是手动的
备份需要关掉服务吗
用的云服务器是几核几G的磁盘多大
ELK的存储空间有多少
LVS都做过什么
K8S的部署过程 口述要求细节
Playbook怎么用的
Zabbix连接过企业微信吗 怎么连接的 把配置zabbix脚本写出来 把连接企业微信的步骤说一下
路由表怎么看
Service和systemctl的区别
用ansible远程配置用什么模块分别是什么作用,手写几个你用过的脚本例子
讲一下交换机和路由器和抓包怎么抓
读写分离怎么配置 配置文件怎么写
Nginx反向代理和负载均衡的过程加配置文件怎么写 口述
有多少个数据库
一台zabbix server 三个zabbix agent 口述一个完成下载安装启动把他们三个连接到一起的脚本
你们公司有多少人
1
2
3
4
5
6
7
8
9
10
11
12
13
面了一个dba的岗位,易点云,会要学信网,以实际业务展开询问:
1.数据库主从复制原理
2.你们数据库用的是那种架构
3.设计一个简单数据库高可用
4.主从有问题的时候怎么排查
5.char与varchar有哪些区别
6.死锁问题遇到过吗,应该怎么处理
7.数据恢复做过吗,以实际业务展开说一下
8.主从复制用的那种架构,是基于哪些类型
9.数据库的四大特性说一下
10.数据库的连接数报警怎么办
11.说一下用过哪些数据库函数
12.用zabbix做过哪些监控,写过哪些脚本
![image-20250325103006364](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/image-20250325103006364.png) ![image-20250325103021426](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/image-20250325103021426.png) ![image-20250325103038023](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/image-20250325103038023.png) ![image-20250325103100566](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/image-20250325103100566.png) ![image-20250325103120864](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/image-20250325103120864.png) ![image-20250325103134596](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/image-20250325103134596.png)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
公司:盛威时代科技
地址:海淀区华控大厦
薪资:9k-15k(13薪)
1、SSL证书是哪家的,买的什么类型的证书,支持通配符吗?公司有多少个域名,怎么配置https的
2、数据库中设置了多少个库号,默认库号是多少
3、有没有做过数据库的备份,怎么做的,备份的数据保存在哪
4、有多少用户,在线人数是多少,对外带宽是多少,怎么监控的
5、公司测试环境多少台服务器
6、每天产生的日志文件怎么处理的,保存多久
7、有没有es集群,几个节点
8、有没有配置过静态路由
9、gitlab的内的代码信息怎么保存的
10、有没有接触过虚拟化服务,都接触过哪些
11、对国产化的数据库和操作系统了解过多少
12、部署过kafka吗
13、对Oracle和MongoDB了解多少
14、awk和sed熟练吗(问了几个常用的参数)
15、会收集用户手机号,身份证等信息吗?怎么确保数据库的信息安全
1
2
3
4
5
6
7
8
9
10
11
12
1.Dockercompose是否会用,查看容器详细信息命令
2.如何配置ssl证书
3.MySQL版本升级怎么做的
4.shell脚本写过哪些
5.MySQL主从原理
6.多表联查sql语句
7.zabbix部署
8.zabbix写过的监控项
9.Jenkins流程
10.webhook
11.杀死java进程后,还让它继续运行??
12.说出比较熟悉项目主要负责什么工作
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
技术问题:查看系统版本命令
磁盘 内存查询命令
mysql默认端口号
查进程命令
用过哪些数据库
更新一个表里字段的命令
网络osi七层模型
路由器处于第几层
docker问了查询镜像容器命令
用没用过云产品 说几个
网络安全相关的设备和应用
虚拟化技术了解多少
你日常排错的流程思路是什么
如果用nginx搭了一个给客户,但是客户那边外网无法访问怎么排错
人事问题:你从上家离职的原因
你更倾向技术方向还是管理方向
1
2
3
4
5
6
7
8
9
10
11
在上家公司负责什么?
zabbix-agent是干什么的
Mysql的常用命令
电脑无法连接公司网络,如何排查这个问题?
解释tcp http arp
docker制作容器的方式
tcp三次握手
用nginx做什么
口述编译安装过程
docker常用命令
主要人事问题的人比较多
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
数据库备份怎么备份
多久一次全量多久一次增量 不能说的太官方要结合实际
备份是自动的还是手动的
备份需要关掉服务吗
用的云服务器是几核几G的磁盘多大
ELK的存储空间有多少
LVS都做过什么
K8S的部署过程 口述要求细节
Playbook怎么用的
Zabbix连接过企业微信吗 怎么连接的 把配置zabbix脚本写出来 把连接企业微信的步骤说一下
路由表怎么看
Service和systemctl的区别
用ansible远程配置用什么模块分别是什么作用,手写几个你用过的脚本例子
讲一下交换机和路由器和抓包怎么抓
读写分离怎么配置 配置文件怎么写
Nginx反向代理和负载均衡的过程加配置文件怎么写 口述
有多少个数据库
一台zabbix server 三个zabbix agent 口述一个完成下载安装启动把他们三个连接到一起的脚本
你们公司有多少人

1
2
3
4
5
6
7
8
9
10
11
12
13
赵振面试
1 自我介绍
2 mysql主从复制 主从配置文件有什么不一样 重要的参数
3 redis持久化 aof和rdb区别
4 阿里云产品接触过吗 之前k8s在阿里云上部署过吗
5 流水线做过吗讲下过程。
6 自主编译过dockerfile文件吗 add和cp的区别
7 监控zabbix 用过吗 其他的产品有吗
8 讲下项目经历
9 在什么情况下用的docker-compose
10 elk用过吗 Logstashi和Filebeat区别
11 管多少台服务器,云上多少,成本怎么控制
12 为什么去广州工作,为什么来北京
1
2
3
4
5
6
7
技术问题:
1、会使用SQL语句吗
2、使用过Python吗?会写Python脚本和爬虫脚本吗?怎么用Python安装数据库
3、索引失效的原因
4、导入数据时出现乱码是什么原因
人事问题:
1、工作地点在公安和政府机构,觉得自己有什么优势,平时与乙方发生冲突怎么办
1
2
3
4
5
6
上机实操
路由器可以ping通对侧路由的vpn地址
配置交换机ip并能ping通路由器下链地址
配置bgp并完成状态为Established
配置接口ip与名称备注,路由器下链地址绑定vpn实例
配置OSPF完成OSPF协商状态为FULL
1
2
3
4
5
6
7
8
9
从日志中提取出error的命令
K8s的网络插件有哪些?
Fallen 和caclio 有什么区别?
Flannel的原理
Docker有哪些网络模式?
CPU利用率超高,请定位一下问题
SSH连服务器连不通,但是拼能ping 通,是什么问题
POD一直创建不成功怎么处理
Service 解析不到pod的ip 地址怎么处理
1
2
3
4
5
6
7
8
9
10
试用期并安排以下短期工作任务作为试用期工作任务和考核目标,其中1-4项以及第7项要求必选,第7项要求学习并使用python作为编写脚本处理文本/日志及sql数据库内容实现。5-6项选择性完成其中一项。
1、重新搭建ZABBIX HA,并配置数据库Mysql Group Replication高可用性和容错解决方案;
2、选择‌Ubuntu最简安装基础配置安装容积平台,安装配置K8s容器环境监控管理,容器结构安装ZABBIX Proxy,实现ZABBIX的分布结构,解决Server压力和网络结构差异;
3、配置监控项分组和依赖关系,并通过编写脚本/模板提高告警定位效率、降低告警处理和推送数量;
4、配置ZABBIX Server的对外告警和处理操作推送,包括对接钉钉和企业微信机器人以及中国移动公司企信通或其他第三方短信网关,要求针对同一告警不同推送对象定义不同的内容预定义;
5、搭建Prometheus + Grafana平台,实现对容器及其内部服务检测,通过编写配置SNMP Export持续采集网络设备及NetFlow流量数据,并通过Grafana定义可视化仪表盘和线性指标图呈现。并将检测到的告警推送给ZABBIX。
6、搭建ELK平台,提供告警类数据实时推送给ZABBIX。要求在Elasticsearch前增加一级Logstash单独负责并将过滤好的数据传输到ES。需要优先考虑Pentaho (Kettle)或可替代开源产品,提供图形化ETL界面,支持数据抽取、转换和加载,传统数据仓库搭建、批量数据处理任务。

7-1、针对现有linux系统环境下的实时递增的录音文件(WAV),定时(暂定1小时)做数据格式转换(MP3)并转储到指定存储系统;根据文件存储路径和文件名以及文件尺寸提取对应日期时间、主被叫号码、文件尺寸换算成录音的时长,保存到数据库并将处理过程结果推送给日志服务器,如发生处理故障需要报警推送到ZABBIX。
7-2、针对现有计费sqlserver数据库实时跟踪原始数据库的更新,并提取sqlserver数据提取需要处理的部分库表和表项转换、转储到mysql数据库表,并根据计算要求将统计计算处理结果输出,对比上述7-1的数据比对确认和修正7-1的数据,处理完成生成日志推送给日志服务器,如发生处理故障需要报警推送到ZABBIX。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
自我介绍
上家公司做什么业务的?
讲一下你上家公司的业务主要做什么?
上家公司运维有多少人?
你在上家公司主要负责什么?
cicd用到容器了吗,对容器了解吗?
k8s用过吗?
你们开发用什么语言?
简单介绍一下 用容器 cicd构建流程 ?
用做流水线的方式 或者单独的方式怎么做cicd流水线?
已经运行的容器 如何往镜像里面拷贝文件?
容器需要挂载host文件 如何挂载?
jenkins上代码是怎么配到服务器上的?
简单介绍一下你公司的环境 架构是怎么部署的
单点的不会有什么故障吗?
![image-20250328114425246](D:/userdata/qiankong/OneDrive/Desktop/_posts/assets/image-20250328114425246.png) # 2407
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
Java的中间件接触过吗?
了解过es(Elasticsearch)吗?
部署kafka的时候遇到过什么问题吗?
工作的时候遇到过什么问题,怎么解决的?
网络调配做过吗?不同子网怎么通信?
搭建过VPN吗?
ex33了解过吗(说是VMware的系统版本)
防火墙iptables和firewalld的区别是什么?
slb用过吗?
rsync和scp的区别是什么?
docker常用命令有哪些?
把现有的程序容器化做过吗?
现在有一个nginx服务,要部署到docker上的话你的思路是什么?
用docker的时候遇没遇到过docker规则和防火墙规则冲突的情况?
备份和恢复Linux系统这方面做过吗?
你最擅长的技能是哪一块?
Linux系统的最大并发数是多少了解过吗?
tcp的最大连接数,会话,端到端的连接数了解过吗?
nginx的优化都怎么做的?
jvm的调优怎么调的(他最后说是这个jvm调优应该不是运维该做的事吧,我说这个是为了简历好看点写上去的)
oom日志怎么看?
做过开发吗?了解到什么程度?
拓展一下你了解nginx的细节(就是自己讲一下nginx)
nginx怎么启用https?
源码安装过nginx吗?离线安装的话包你都去哪找的,缺少依赖怎么办
问我学历我说专升本然后就问我都什么专业
安全方面了解过什么?
怎么隐藏ssh的版本号等信息?
接触过物理服务器吗,从零开始搭建服务器了解过吗?
信创了解过吗,国产系统都会那些?
(回答欧拉和麒麟)
问都是什么版本的,使用的时候有什么区别?
Linux配置静态IP会吗?
dmz了解过吗?
服务迁移上云的时候不停机上云是怎么做的?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
linux系统中io比较高 说一下你的排查思路
磁盘的利用率怎么看
shell脚本中$ $! $$分别代表什么意思
说一下查看服务是否在运行 如果没有运行就启动的shell脚本思路
一个网站你访问比较缓慢 多方面原因说一下你的排查思路
nginx负载均衡如何配置
调度算法有哪些
轮询和iphash的使用场景
nginx的健康检查模块
keepalived主备切换 不生效什么原因导致的
mysql主从延迟
备份策略
怎么实现数据的热备份(不锁表
redis持久化方案
cicd 流程
docker网络模式
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
宝塔面试问题
1.三年的职业规划是什么
2.获取知识的方式有哪些
3.如何在已有的磁盘下增加新的磁盘
4.软连接和硬连接的区别
5.linux常见的文件系统,他们的区别是什么
6.如何创建一个用户只读
7.linux日志存放在那个目录下
8.如何把日志推送到某个云端的服务器
9.如何通过命令行形式监控nginx访问日志并提起慢请求
10.假设一个mysql数据库去做一个增量备份,有那些方案是比较可靠的
11.redis持久化方式
12.mysql中误删了表如何恢复
13.nginx负载均衡策略
14.url负载均衡策略
15.mysql主从复制延迟过大常见原因有哪些
16.redis的集群模式,分别的应用场景有哪些
17.在k8s中如何确保pod持续运行
18.在(laiwenci)和redis和hanzheng在k8s的区别(听不清)
19.mysql中如何通过索引,存储引擎,配置这三个方面优化复制表性
20.nginx中如何通过nginx的缓存来提升静态资源的访问速度,需要配置那些sv头
21.在高并发环境下需要调整那些内核参数
22.服务器以及网站的监控工具站有哪些
23.在监控应用中所谓的主机层应用层日志层通常指的什么
24.cpu内存磁盘网络需要那些监控指标来监控
25.做一个web监控如何监控一个api的接口响应时间和成功率
26.有用过elk吗
27.一个用户用户反馈网站链接错误502排查错误步骤
28.mysql的qps突然下降百分之 50如何定位原因
29.如果服务器的内存突然达到百分之90的使用率,如何快速定位
30.你排查过是否被攻击呢
31.你对这份工作的薪资预期
32.假设面试通过多长时间可以到岗
33.你有什么问题想问我
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
主流的linux系统有哪些
主流的数据库有哪些
主流的web服务器有哪些
介绍tcp osi七层模型
linux iptables防火墙涉及到那些
644权限是什么
什么命令设置文件权限和文件所有者
从左到右解析一下url地址 分别包含那些信息
三剑客与三剑客的作用
http认证 Basic 认证 怎么设置
nginx location作用
ngixn配置文件重if语句的作用
mysql中影响性能的因素有那些
mysql中怎么做增量备份
不用工具做增量备份
redis持久化
介绍ssl证书
什么是证书链
http常见响应状态码
301与302有什么区别
206是什么
返回502错误 排查步骤是什么
mysql qps下降百分之五十 可能的原因是什么
网站无法打开 排查思路
500错误排查思路
如何判断网站是否被cc攻击
cc攻击是什么
网站访问慢 排查及优化思路
介绍一下负载均衡器是什么
nginx服务器做安全加固做那些方面
在日志中发现大量499状态
linux内存机制

![image-20250526141403340](/media/wing/学习/25年继续/8.面试/题库/题库md综合/assets/image-20250526141403340.png) ![image-20250526141351644](/media/wing/学习/25年继续/8.面试/题库/题库md综合/assets/image-20250526141351644.png) # 北京各大IDC机房介绍
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
联通IDC:北方地区基础运营商机房,有得天独厚的线路资源和运营经验。2008年10月15日中国联通和中国网通合并为“中国联合网络通信有限公司”,简称仍是中国联通。

电信IDC:中国电信集团的全子公司,拥有全国最大的互联网CHINANET。除了电信集团和网通集团的互联互通外,还与北京网通城域网互联互通。

铁通IDC:2008年5月铁通并入移动,铁通铁路通信网络调度的指挥权和管理权移交铁道部,固话及宽带等业务归中国移动所有。代表机房有:中土大厦IDC、南四环科丰桥总部基地附近IDC

互纪互联IDC:ISP/IDC服务商之一,是目前中国规模最大的电信中立互联网基础设施服务提供商。

电信通IDC:全称北京电信通电信工程有限公司,电信中立互联网提供商。主营业务为:互联网接入;IDC&CDN;通信专网建设;安防服务;网吧专网;酒店专网;语音业务。

互联通IDC:ISP/IDC业务的服务商之一,主营业务:IDC、***、SOC secerity operation center)租用、托管及游戏加速服务

网宿IDC:上市公司。经营IDC、ISP、内容分发网络加速等。有经营增值电信业务(IDC、ISP)经营许可证

帝联IDC:总部位于上海市天地软件园,主营IDC\CDN.

亦庄IDC:亚洲最大的[数据中心](https://so.csdn.net/so/search?q=数据中心&spm=1001.2101.3001.7020),网通骨干节点。

国研IDC:×××信息中心、中国网通、山东鲁能控股公司共同创立的高科技企业。机房位于朝阳门内大街发展研究中心大院内

中电华通IDC:是一家拥有×××增值电信业务经营许可证,获准经营因特网数据中心业务(IDC)和因特网接入服务业务(ISP)的互联网数据中心运营商

通信管理局IDC:又名马连道IDC机房.通管网联数据中心(IDC)地处市区三环,建立在北京通信管理局院内

上地263电信IDC:又叫上地北机房,与银创动力大厦合并。

**静安中心IDC**:北京电信最早的IDC机房

**歌华大厦IDC**:位于雍和宫歌华大厦

**硅谷IDC**:ISP运营商

**中发电子大厦IDC**:又名黄庄IDC机房

**中塔IDC**:中央电视台,为移动传媒提供网络带宽

**铜牛IDC**:ISP运营商,地处朝阳东三环。

联通(老联通)北分IDC

北京市海淀区羊坊店路9-1号中国联通北京分公司京门大厦综合通信楼内。Uninet与国内外运营商及网络保持高速连接,国际出口3.6G。

同时Uninet国内网间(与电信/网通/教育网)互联带宽20G。

165网与中国网通在北京的直连电路为2.5G在上海直连电路1G;

与电信在北京直连电路5.0G;与上海电信在上海的直连带宽为2G;

在广州直连电路为1G;

与教育网(CERNET)在北京、上海、广州各以1G电路直连(nap);

165网在北京、上海、广州三地各以1G带宽接入国家互联网交换中心(NAP点);

与其它国内运营商互联带宽1255M;

与铁通2G直连电路直连电路;

北京联通IDC在全网中位于骨干节点,是中国联通全网内容分发的核心。

联通--原网通东四IDC机房

东四IDC机房由中国联通北京分公司投资。2008年底建成,2009年起提供服务。东四IDC机房位于东四南大街与金宝街十字路口东北。由日升天信和中科鸿基共同铸造四星级无忧IDC机房

联通--原网通土城IDC机房

土城IDC机房坐落在朝阳区裕民路乙3号土城电话局内,它近邻奥运核心区,又叫奥运机房。(交通:中轴路熊猫环岛西南侧)。

土城 IDC机房面积约4500平米,分6,7,10层其中每层机房面积约1500平米左右。为客户提供开放式机架和客户定制两种服务,电信级高端路由器双归上联,单链路负荷不超过50%,网络接入设备双机热备连接网络核心节点。双路市电接入2+1备份双总线UPS系统,柴油发电机后备保障。机房地板承重大于600kg/㎡,抗震烈度大于8级,梁下高度大于4.5m。机房环境温度22±2℃,湿度30~70%。7x24网络技术支持及安消防服务。

联通--原亦庄网通IDC机房

北京亦庄网通国际数据中心是亚洲最大的数据中心。

亦庄机房硬件、基础设施建设,全亚洲一流;

铁通IDC机房

铁通曾在2006年末出现过严重的网络质量下降事件。代表事件是铁通的忠实用户“猫扑”率先撤出。铁通一度曾试着隐瞒真像。当时新闻网摘:“12月1日,北京铁通新闻发言人对搜狐IT表示北京铁通IDC机房并没有出现大规模瘫痪的现象。2006年互联网产业的高速迅猛发展,IDC用户不断增加,不可避免的带来了一些访问速度下降的现象,并非“网络的大规模瘫痪”。实情则是铁通IDC后发制人而发展迅猛,2006年盘点时市场占有率的8.1%(电信71.3,网通21.6%)被引起了电信和网通的关注所致。 2008年中旬电信重组铁通机房并入移动后,经过与移动资源的整合,IDC机房带宽质量得到大幅提高,铁通IDC机房带宽质量得到大幅提高。

铁通目前的两个IDC机房主要以:中土大厦IDC、南四环科丰桥总部基地附近IDC为主

世纪互联 www.21vianet.com

世纪互联创立于1996年,是中国最早的ISP/IDC服务商之一,是目前中国规模最大的电信中立互联网基础设施服务提供商。世纪互联总部设在北京,在上海、广州、成都、东京、美国硅谷等地设有分支机构。世纪互联的主营业务包括互联网数据中心服务(IDC)、互联网内容分发/加速服务(CDN)、以及全方位的增值服务和完整的行业解决方案。

代表机房:

1、M5 酒仙桥机房

酒仙桥兆维电子科技园区兆维电信机房

2、亦庄机房

3、天津滨海机房(天津网通)

电信通www.idcdxt.cn

北京电信通电信工程有限公司(简称北京电信通)于2001年5月成立,公司主营业务为:互联网接入;IDC&CDN;通信专网建设;安防服务;网吧专网;酒店专网;语音业务。

电信通是A股上市公司成都鹏博士电信传媒集团股份有限公司(A股代码:600804)专营互联网数据中心业务的全资子公司,是目前国内规模最大的中立于各电信运营商的互联网基础服务提供商。旗下集合了原电信通的机房资源和上海帝联的CDN网络,主营数据中心、CDN、带宽批租业务。

代表机房

1、朝阳HP大厦

2、中关村科技发展大厦

3、苏州桥机房

4、三元桥

互联通

SP/IDC业务的服务商之一,主营业务:IDC、***、SOC(security operation center)租用、托管及游戏加速服务。主做机房:

1、北京长话机房

2、安贞机房

3、北宛机房

4、良乡机房

5、天津蓝泰机房

上海网宿科技股份有限公司

上海网宿科技股份有限公司2009年10月在创业板块挂牌上市。前身是上海网宿科技发展有限公司,国内领先的互联网业务平台服务提供商,主要向客户提供内容分发与加速、服务器托管、服务器租用解决方案。

网宿科技持有经营增值电信业务(IDC、ISP)经营许可证,是亚太互联网络信息中心APNIC会员单位(拥有AS自治域号)、中国互联网络信息中心CNNIC会员单位(拥有AS自治域号)。

北京电信IDC机房介绍

北京电信IDC是中国电信四大(北京、西安、上海、广东)骨干IDC节点之一,以高自动化的管理和高可扩充的机房设施,为不同用户提供安全、可靠、快速、全面的数据存放业务及其他增值服务。从而使中国电信的IDC业务在全国形成网络,用户可以就近享受高等级、高品质保证的电信级IDC服务。同时,北京电信IDC为用户提供全国联动的“一站式”服务。

北京电信依托中国宽带互联网优势,采用当今最先进的设备与技术,依据国际标准,已建设三个IDC机房,分别是静安中心IDC、上地北IDC、兆维IDC,这三个IDC目前的大致情况为:

静安中心IDC,位于三元桥静安中心大厦,面积约4200平米,在近两年的发展中业务容量已趋于饱和;

上地北IDC,位于上地东路盈创大厦,面积约2500平米,主要面向双网带宽独享用户;

兆维IDC,位于酒仙桥,面积约14000平米,主要面向带宽独享用户。

北京电信--静安庄IDC

静安机房,地址:北京静安中心地下一层,北京电信最早的国干网机房,建立时间2003年,机房面积1200平米,主要满足北京电信国干网需求用户,国家骨干网100G以上出口保证带宽。主要客户有万网、新浪、SOHU等,延时非常稳定;该机房由于电力问题已经无法为新用户提供服务

北京电信IDC

兆维机房,地址:兆维电子科技园区,北京电信国干网机房,建立时间2005年,机房面积14000平米,主要满足北京电信国干网需求用户及大客户灾备中心,国家国干网100G以上出口保证带宽。主要客户有盛大、开心网、网易163、酷六、百度、雅虎、银行等;

上地盈创动力大厦三层,北京电信骨干网机房,建立时间2005年,机房面积2500平米,由于电信集团收购263,263原有机房也在上地,该机房使用IP地址为原有263的IP地址,主要满足上地区域附近需求用户,北京电信骨干网20G出口保证带宽,路由模式连接到电信兆维机房,主要客户有:光纤传媒、当当网、NEC、×××、银河证券等,该机房使用263IP地址具体路由链接不清楚,延时不稳定有跳ping现象。目前客户量是60%左右,可以为新用户提供服务。

2005年北京电信在酒仙桥兆维电子科技园区建立了兆维电信机房;同年北京电信在上地高科技园区盈创动力大厦三层建立了北京电信上地北机房(263机房);

北京电信--大郊亭/洋桥IDC

大郊亭机房,地址:大郊亭桥东中国电信大厦3层,北京电信国干网机房,建立时间2008年,机房面积600平米,大郊亭机房交换模式直连北京电信静安机房和兆维机房,可以理解为兆维机房和静安机房的延伸,直连光纤20G出口保证带宽,主要用户是SOHU,SOHU需求基本占用了机柜的95%以上的资源,目前也无法满足新用户需求。

洋桥机房,地址:马家堡东路中国电信大厦4层,北京电信国干网机房,建立时间2009年,机房面积600平米,洋桥机房交换模式直连北京电信静安机房和兆维机房,可以理解为兆维机房和静安机房的延伸,直连光纤20G出口保证带宽,主要用户是昆仑在线,由于今年5月份刚开通的机房,目前机柜闲置率达到80%,笔者认为该机房是北京电信机房中性价比最好的机房。

2008年在北京大郊亭桥东建立了大郊亭机房;于2009年在北京马家堡东路建立了洋桥机房。

硅谷机房

北四环西路海淀桥北海淀新技术大厦。机房总面积:1000m2,接入单位:北京三信数据通讯股份有限公司。
# 结尾