1、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与防火墙或代理服务器不同,但它确实有利于安全。

2、NAT使用的几种情况:

1.连接到INTERNE,但却没有足够的合法地址分配给内部主机;

2.更改到一个需要重新分配地址的ISP;

3.有相同的IP地址的两个INTRANET合并;

4.想支持负载均衡(主机);

3、NAT有4种用法:

1.TRANSLATION INSIDE LOCALADDRESS-----------将内部地址一对一的翻译成外部地址;

2.OVER LOADING INSIDE GLOBAL ADDRESS---------将内部地址多对一的翻译成外部地址,通过地址加端口号的方式区别不同的本地地址。这种方式就是所谓的PAT\/color:43aa144927\;

3.TCP LOAD DISTRIBUTING----提供在多个、利用率高的主机之间进行负载分担的方法;

4.HANDLING OVER LAPPING NETWORK----这种方法主要用于两个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―多对多.

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

Cp access.gz/access.log/access1.gz cd/access.log gzip-daccess1.gz

5、若一台计算机的内存为128M,则交换分区的大小通常是_1.5到2倍;256M_。

6、简述raid0、raid1、raid5三种工作模式的工作原理及特点

raid0:条带卷,利用率100%,相对读写速率最快,相对安全性差。数据随机存入到阵列中的一个磁盘上。同时从2块磁盘读数据;读速度与raid1相差不多;

raid1:镜像卷,使用率50%,相对读写速率一般,相对安全性高。最少2块磁盘组成,数据同时存入到两块磁盘上。同时从2块磁盘读数据;写速度会比raid0慢;

raid5:带奇偶校验的镜像卷,相对读写速率较快,相对安全性高可以添加热被磁盘作为冗余。

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

Find /usr/local/test -size +100k -a -size -500k -exec mv {}/tmp\;

8、软链接和硬链接的区别:

硬链接不会创建新的inode,只是给源文件多加了一个文件名 软链接创建新的inode,相当于重新创建了一个文件

硬链接不能跨分区 软链接可以跨分区

硬链接删除源文件后,另一个文件还能用 软链接删除源文件后,链接文件不能再使用

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

VSZ:虚拟内存集,进程占用的虚拟内存空间

RSS:物理内存集,进程战用实际物理内存空间.

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

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

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

由于RAID5磁盘阵列兼顾了安全性和速度,所以有一块磁盘是要被用作安全备份区的,所以6块300G的磁盘实际使用到的只有5块5*300=1500G

12、显示网络接口常见命令是:ifconfig或者ipa;查看服务端口的命令是:ss-anptul

Linux操作系统查看当前网络设备命令为:ipa,将当前计算机的IP地址设为192.168.1.10,子网掩码为255.255.255.0命令为:ifconfigeth0192.168.1.10netmask255.255.255.0

Linux查看当前主机TCP协议连接情况的命令为:ss-antpl

Linux操作系统查看/etc/passwd文件前10行的命令为:head-10/etc/passwd;将前10行追加到/etc/passwd_new文件结尾的命令是:head-10/etc/passwd\>\>/etc/passwd_new。

Linux操作系统启动服务名为kstoredb_NODEDBd的命令为:systemctl start kstoredb_NODEDBd;Windows系统启动服务名为kstoredb_NODEDBd的命\>令为:netstart kstoredb_NODEDBd

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

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

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

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

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

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

1.部署基础环境:关闭防火墙;关闭selinux;安装编译器

2.下载、解压软件包

3、配置安装路径

4、编译

5、安装

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

netstat-anputl -t TCP -l监听 -a所有 -u UDP -n显示端口号和IPppid

16、实时抓取并显示当前系统中tcp80端口的网络数据信息,请写出完整操作命令 tcpdump -n tcpport80(tcpdump -i ens33 'tcp port 80')

17、问:linux中你常用的系统命令说5个 ls、cat、mkdir、useradd、touch、pwd

18、问:关闭swap分区

Swapoff -a关闭所有的交换分区 swapoff /dev/sde关闭sde交换分区

19、问:kernel调参

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参数:

echo256960\>/proc/sys/net/core/rmem_default

echo256960\>/proc/sys/net/core/rmem_max echo256960\>/proc/sys/net/core/wmem_default

echo256960\>/proc/sys/net/core/wmem_max echo0\>/proc/sys/net/ipv4/tcp_timestamps

echo1\>/proc/sys/net/ipv4/tcp_sack

echo1\>/proc/sys/net/ipv4/tcp_window_scaling

TCP/IP参数都是自解释的,TCP窗口大小设置为256960,禁止TCP的时间戳(取消在每个数据包的头中增加12字节),支持更大的TCP窗口和TCP有选择的应答。

20、问:系统安全加固

1.密码策略 修改系统的密码策略

(1)经常修改密码

(2)使用一些特殊的字符和密码的长度增加密码的难度

(3)不要随便告诉他人密码

2.权限ugo锁定系统中不必要的系统用户和组 锁定下列用户,锁定之前备份/etc/passwd和/etc/shadow文件 禁用无关的组 禁止root用户远程登录

​ 锁定用户:usermod -L tom

​ 禁用无关的组:vi /etc/group 在组前面加#进行注释

​ 禁止root用户远程登录:vi /etc/ssh/sshd_config PermitRootLogin no 然后重启ssh服务

3.预防flood***linux中预防SYNflood.在/etc/sysctl.conf文件中添加net.ipv4.tcp_syncookies=1

4.加固TCP/IP协议设置/etc/sysctl.conf文件相应权限

5.默认权限与umask不要修改正确的umask值022

6.做任何修改文件的动作先备份再做操作

21、问:硬件性能测试用过什么

对IO进行简单测试dd if=/dev/zero of=testbs=1M count=4096

用top和iostat查看wa%及写硬盘速度top-n1每秒钟的cpu

通过df-h命令查看磁盘情况通过hdparm测试读取速率hdparm-t/dev/sda

linux中几块盘求平均值就是磁盘的平均读取速率

22、问:硬件报错能不能看懂 看BIOS

23、问:临时调整和永久生效系统内核参数在哪里调

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

24、问:如何查看当前linux系统的状态,如CPU使用,内存使用,负载情况

sar综合命令 mpstat11cpu监测 free-m内存使用 top负载

25、问:显示CPU利用率的命令,查看系统版本的命令

CPU利用率的命令:top或sar

查看系统版本的命令:cat/etc/redhat-release或uname-a

26、问:查看网卡历史流量实时查看网卡流量

网卡历史流量:sar-nDEV-f/var/log/sa/saxx#查看xx日的网卡流量历史

实时查看网卡流量:sar-nDEV15(每间隔1秒刷新一次,共5次)

27、问:如何查看当前系统每个ip的连接数

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

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

Find /home -name \"*.ok\" -mtime +7

29、问:快速生成一个10G的文件

Dd if=/dev/zero of=test bs=10M count=1024

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

压缩打包命令:tar -czf filename. Tar dirname Zip filename. Zip dirname Gzip filename bzip2 -z filename

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

31、标准端口的范围是?

1-65535

32、常见协议(http、https、ftp、mysql、redis)默认端口。

http:80https:433ftp:21mysql:3306redis:6379

33、请写出下列端口所运行的服务21、22、23、3306、6379

21:ftp 22:ssh 23:telnet 3306:mysql 6379:redis

34、写出下面服务的常用端口:ftp、http、dns、smtp、pop3、dhcp、tftp、mysql、ssh、https

ftp:21控制端口 20数据端口 http:80 dns:53 smtp:25"简单邮件传输协议" pop3:110"邮局协议版本3" 3389:window远程桌面

dhcp:客户端是以UDP68 服务器是以UDP67 tftp:69文件传输协议 mysql:3306 ssh:22 https:443

35、Linux中的服务自启动添加方法有哪些。

centos6:有两种1.chkconfig服务名on

​ 2.vim/etc/rc.d/rc.local/usr/sbin/服务名start

centos7:有三种1.systemctl enable服务名

​ 2.vim/etc/rc.local systemctlstart服务名

​ 3.vim/etc/fstab systemctlstart服务名

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

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

​ 2.rsync-avr源文件路径目标文件 ip:目标文件路径

37、请解释下Telnet和SSH的区别

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

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

38、如何检查Selinux是否开启?getenforce

39、 检查服务器是否正常工作的最好办法是?

1.ping 服务器ip

2.ss -antul|grep 服务端口

3.ps aux|grep 服务名

4.systemctl status 服务名

40、Linux记录log的服务叫什么名字?rsyslog

41、ping命令通过什么协议(internet控制信息协议)来实现?icmp

42、网络装机工具cobbler了解吗,有哪些组件?批量装机:pxe

43、查看某一端口的连接客户端IP,比如3306端口ss-antpul|grep3306

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

#runlevel//查看当前的运行级别

#chkconfig--level5teston

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

00 6-12/2 * 11 * bash/usr/bin/httpd.sh

46、请写下Linux系统中cron定时任务,每天07至23点,每隔半小时执行apache重启,并禁用系统邮件通知

crontab -e */30 7-23 * * * systemctl restart httpd\>/dev/null2\>&1

47、以下字段可能和哪个服务有关?表示什么意思? */5 * * * * ping -c 100 www.wanmel.com\>/root/network.log2\>&1

答:(计划任务)每五分钟ping www.wanmel.com (http://www.wanmel.com) 100次将错误和正确的输出覆盖到/root/network.log

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

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

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

0 8 * * 7 reboot

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

0 12 * * * bash tcpdump.sh

Vim tcpdump.sh tcpdump -c 1000 tcp dstport80 -w./`date+%Y%m%d`

51、Http的错误代码含义(404、410、504、502)?

404(未找到)服务器找不到请求的网页。

410(已删除)如果请求的资源已永久删除,服务器就会返回此响应。

504(网关超时)服务器作为网关或代理,但是没有及时从上游服务器收到请求。

502(错误网关)服务器作为网关或代理,从上游服务器收到无效响应。

52、apache如何修改配置参数,将默认端口改为非默认端口。

1、如何改变Apache端口:

找到Apache安装目录下conf目录下的httpd.conf文件。打开它,找到"Listen",紧接着Listen的数字就是端口号,默认状态下为"Listen80"。在之前的PHP专题中提到过关于在安装配置Apache时会遇到端口与IISHTTP端口冲突的问题,因为IISHTTP端口默认也为80。那么我们就可以在这里改变Apache的端口,从而避免冲突,比如可以改成:Listen8011。改好之后别忘重起Apache服务使得配置生效。

Vim /etc/httpd/conf/httpd.conf

2、apache有几种工作模式,分别介绍下其特点,并说明什么情况下采用不同的工作模式?

apache有三种工作模式:分别是prefork,worker和event

1.prefork:是一种进程、与派生的工作模式,用的是进程去处理请求,所以比较容易消耗内存,但是稳定性好,某个进程出现问题不会影响到其他请求。要求稳定的时候使用

2.worker:是使用多个子进程、每个子进程有多个线程、由于使用的是线程去处理请求,消耗内存小,适合高流量的请求,但是如果某个进程出现问题,那么这个进程下的线程都会出现问题,即稳定性不是很好。这种模式不能php要测试一下在访问量多的时候使用

3.event模式:是为解决keep-alive保持长连接出现的一种工作模式,使用keep-alive长连接的时候,某个线程会一直被占用,即使中间没有请求,需要等到超时才会被释放,所以这个时候就出现了event的工作模式就出现了。在event工作模式中,会有一些专门的线程用来管理这些keep-alive类型的线程,当有真实请求过来的时候,将请求传递给服务器的线程,执行完毕后,又允许它释放。这增强了在高并发场景下的请求处理。另外,event模式是不支持用在https上的。

3、apache的工作模式,如何执行php代码

进程模式prefork

线程模式work

事件模式event

安装apache的php模块libphp5.so

apache做代理----后端服务器安装php-fpm

53、进程和线程的区别?

线程:线程来源与进程,线程模式需要事先开启

线程模式并发量高 相对与进程模式来说没有进程模式稳定 共享内存 不支持php

进程:进程稳定性高;线程稳定性低

进程独占内存;线程共享进程的内存一个进程可以有多个线程;

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

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

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

55、DHCP(动态主机配置协议)

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

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

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

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

user_config_dir=/etc/vsftpd/userconf

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

57、我们都知道FTP协议有两种工作模式,说书他们的大概的一个工作流程?

模式:主动模式(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服务器的情况,因为在这种情况下,防火墙通常配置为不允许外界访问防火墙之后主机,而只允许由防

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

dns有两个情况,一种是区域传输,一种是域名解析

1.区域传输时,一个区中主DNS服务器从自己本机的数据文件中读取该区的DNS数据信息,而辅助DNS服务器则从区的主DNS服务器中读取该区的DNS数据信息,传输协议是tcp。

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

使用udp传输,不用经过TCP三次握手,这样DNS服务器负载更低,响应更快

但是当域名解析的反馈报文的长度超过512字节时,将不能使用udp协议进行解析,此时必须使用tcp

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

www.baidu.com.

1.用户输入网址到浏览器;

2.浏览器发出DNS请求信息;

3.计算机首先查询本机HOST文件,不存在,继续下一步;

4.计算机按照本地DNS的顺序,向区域dns服务器查询IP结果;区域dns服务器查询不到时会从根域开始,按照DNS层次结构向下搜索,直至对于信息具有权威性;

5.将返回dns结果给本地dns和本机,本机和本地dns并缓存本结果,直到TTL过期,才再次查询此结果;

6.返回IP结果给浏览器;并给本地的DNS一份结果;

7.浏览器根据IP信息,获取页面;

60、在nslookup使用中请问如何查询test.com域中的MX记录

Nslookup -query type=MX test.com Host dig nslookup settype=mx test.com

61、修改ssh客户端端口:

#vim/etc/ssh/ssh_config /Port查找端口行,删除#,将22修改为目标端口

62、修改ssh服务端端口:

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

#systemctl restart sshd

63、NFS共享文件怎么做的,用的什么技术,碰到了什么问题、

用nfs做nas存储,当访问的过多时;会比较卡: 提升交换机的配置原来是百兆的话要提升到千兆或者万兆

64、SHELL脚本ll中单引号,双引号及不加引号的简单区别

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

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

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

mysqldump

#vimmysqldump.sh

Mysqldump -uroot -p\'QianFeng@123'

-A--single-transaction

--routines--triggers--master-data=2

--flush-logs >/backup/date+%F-%H -mysql-all.sql

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

#crontab-e

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

mysql -h120.20.20.20 -uaaa -p\'bbb\' -e\ 'create test.host(cipanvarchar(20),memvarchar(20),loadaver1varchar(20),loadaver2varchar(20),loadaver3varchar(20),ioaveragevarchar(20))\'

#vim/serverstatus.sh

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

2、mem_total=`free-m | awk \'NR==2{print \$2}\'`

3、a=`df-Th|awk\'NR==2{print\$6}\'|awk-F%\'{print\$1}\'`

4、mem_average=\$((mem_used*100/mem_total))

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

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

7、load_average1=`uptime|awk-F\':|+|,\'\'{print\$(NF)}\'`

8、io_average=`iostat-x|awk\'NR==4{print\$4}\'`

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

67、写一个脚本,实现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\$1

编写脚本:

#vim/tomcat_monitor.sh

if \$1-eq 8080;then lsof-i:8080 return\$? elif\$1-eq8005\;then lsof-i:8005

return\$? else return8 fi

68、写一个脚本实现nginx服务的管理

文件锁:

编译安装时需要写此脚本;

笔记上有答案5nginx安装7小步设置开机启动

#vi/etc/init.d/nginx #!/bin/bash #chkconfig:-9920

#description:Oooothisismynginxstartupscript

PROG=\"/usr/local/nginx/sbin/nginx\" PIDF=\"/usr/local/nginx/logs/nginx.pid\"

case\"\$1\"in start) \$PROG ;; stop)

kill-sQUIT\$(cat\$PIDF) ;; restart) \$0stop \$0start ;; reload)

kill-sHUP\$(cat\$PIDF) ;; *)

echo\"Usage:\$0{start|stop|restart|reload}\" exit1 esac exit0

#chmod+x/etc/init.d/nginx #chkconfig--addnginx

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

#vimiptables.sh

Iptables -t filte r-I INPUT -p tcp! --dport80 -j DROP

70、编写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{}\;

71、备份并压缩/data目录的所有内容,存放在/backup目录里,且文件名形式为如:yymmdd_data,yy为年,mm为月,dd为日

1、读取/app/app.log文件中每行第一个域的全部数据加入到/backup/yymmdd_app_am.log,yy为年,mm为月,dd为日ls

2、删除/app/app.log文件

3、shell程序appbak存放在/usr/bin目录下。(最少写一个循环)

#crontab-e 59231**/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

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

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

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

grep 'root' /etc/passwd

sed -ri '/SELINUX=/cSELINUX=disabled' /etc/selinux/conf

cat/etc/passwd | awk'NR==1{print\$1}'

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

For I in{1..5}

do

useradd user\$i

suijishu=`opensslrand-hex2|sed-r\"s/(...)(.)/\1:\2/g\"|awk-F:\'{print\$1}\'`

echo user\$i\$suijishu | passwd --stdin user\$i

done

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

77、请说出以下符号在bashshell中的意义:

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

\$0当前读取内容

$n位置变量

$#参数个数上一语句的返回值

$\$ pid

$*所有参数

78、请用自己熟悉的脚本语言,快速替换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

79、echo \"ABCDEFGabtdefg\" | sed-i s/c/t/g这条命令是否正确?如若正确会显示什么结果?

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

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

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

83、用shell写一段启动脚本服务

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

85、计算1加到100的值

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

find /var/log -typef | wc-l

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

cat/var/log/httpd/access_log|awk'{ips\$1++}END{for(iinips){print\$iips\i}}'|sort-rn-k2|head-5ssss

88、请用至少两种语言实现提取下面日志中的电话号码和内容,并将提取结果(mobile=xxxx&content=xxx)发post请求到http://api.leju.com/sms/send接口。

格式:IP---时间电话内容**

157.55.35.42---\23/Apr/2014:12:02:51+0800\18666668888"Missingargument2forgetstr()"

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

例如:./exec_sql.sh./sql1000.sql8

第二、要求所有语句执行完脚本才可以退出

第三、记录开始时间、结束时间、每条语句的执行结果重定向到一个文件

第四、使用sqlplus命令行工具执行所需查询语句

90、Shell写过什么脚本

91、你认为写的最厉害的脚本

92、统计apache的access.log中访问量最多的5个IP

93、编写shell脚本获取本机的网络地址,比如:本机的IP地址是:192.168.100.2/255.255.255.0,那么它的网络地址是192.168.100.1/255.255.255.0

94、请用一条命令,处理一下文件内容file.txt,将域名取出并进行计数排序从大到小,如处理:

http://www.sina.com.cn/index.html (http://www.sina.com.cn/index.html) http://www.sina.com.cn/1.html (http://www.sina.com.cn/1.html) http://house.sina.com.cn/index.html

http://bj.house.sina.com.cn/index.html (http://bj.house.sina.com.cn/index.html) http://house.sina.com.cn/3.html (http://house.sina.com.cn/3.html) http://www.sina.com.cn/2.html

http://gz.house.sina.com.cn/2.html (http://gz.house.sina.com.cn/2.html) http://house.sina.com.cn/2.html

95、很重要:编写shell脚本将当前目录下大于10K的文件转移到/tmp目录下

96、编写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

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

foriinrange(3): u=input(\"user\>:\") p=input(\"pwd\>:\") ifu==\"yg\"oru==\"sk\"andp==\"123\": print(\"登陆成功\")

Break else: print(\"登陆失败\")

MYSQL

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

mysqldump -u用户名- p\'123\' -B test \> /mysql_backup/`date+%F-%H`-mysql-test.sql

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

恢复:mysql-uroot-p\'123\'-D test \< /mysql_backup/2018-09-26-20-mysql-test.sql

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

主从复制集群:

1、mysql主

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

[mysqld]

log_bin

server-id=1

gtid_mode=ON

enforce_gtid_consistency=1

②重启服务:#systemctl restart mysqld

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

#mysql-uroot-p\'123\'

mysql\>grant replication slave , replication client on *.* 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\>change master to master_host=\'mysql主IP\' , master_user=\'rep\' , master_password=\'123\' , master_auto_position=1;(自动获取)

3、主主、多从

高可用:

①mysql主主同步

②在两台mysql上安装keepalived:#yum-y install keepalived

③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

⑤测试及诊断

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

1、A(Atomicity)原子性是说事务里的所有操作要么全部做完,要么都不做,事务成功的条件是事务里的所有操作都成功,只要有一个操作失败,整个事务就失败,需要回滚。
2、C(Consistency)一致性是说数据库要一直处于一致的状态,事务的运行不会改变数据库原本的一致性约束。如完整性约束a存款+b存款=2000。
3、I(Isolation)隔离性是指并发的事务之间不会互相影响,如果一个事务要访问的数据正在被另外一个事务修改,只要另外一个事务未提交,它所访问的数据就不受未提交事务的影响。
4、D(Durability)持久性是指一旦事务提交后,它所做的修改将会永久的保存在数据库上,即使出现宕机也不会丢失。

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

1、水平拆分:按照规则划分,一般水平分库是在垂直分库之后的。比如每天处理的订单数量是海量的,可以按照一定的规则水平划分
2、读写分离:对于时效性不高的数据,可以通过读写分离缓解数据库压力

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

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

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

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

select * from customer where uid \> 100 order by uid asclimit10;

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

创建:mysql\>create database db_test;

查询:mysql\>usedb_test;

mysql\>show tables;

mysql\>select * from表名;查内容

删除:mysql\>drop database db_test;

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

#!/bin/bash user=root pass=test

database=`mysql -u\$user -p\"\$pass\" -e\"show databases;\" | sed 1d | grep -v \'schema\'`

mkdir /mysql_backup

mysql -u\$user -p\"\$pass\" -e \"show databases;\" &\> /dev/null

if \$? -ne 0;then

read -p \"Mysql do not running,start it?(yes/no):\" choice

if "\$choice\" -eq \"yes\" ; then

systemctl start mysqld &\>/dev/null

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

exit2

else

echo-e\"\033\33m==================backupstart=====================\033\0m\"

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\"

107、如何监控MySQL主从同步是否异常?

#!/bin/bash

#Date:2018-9-27

#Author:zz(1608843551\@qq.com)

#version1.0

while true

do

array=(\$(mysql -uroot -p\'123\' -e\"show slave status\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 \"MySQL is slave is ok\"

else

if \" \${array\3}\" -ne 0 ; then

mysql -uroot -p\'123\' -e\"stop slave && set global sql_slave_skip_counter=1;start slave;\"

echo \"错误代码\${array\3}\"

fi

char=\"MySQL slave is not ok,错误代码\${array\3}\"

echo\"\$char\"

echo\"\$char\"|mail-s\"\$char\"1608843551\@qq.com

fi

sleep60

done

108、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;

109、数据库用于事务回滚和提交的SQL语句分别是___ROLLBACK________,___COMMIT________________。

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

create table spaceneu space data file 'd:\data\neudata.dbf'size200mautoextendonnext5mmaxsize500m

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

111、简述数据库中索引的用法及原理

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

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

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

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

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

主键:PRIMARY KEY

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

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

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

唯一:UNIQUE

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

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

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

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

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

不同点:

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

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

优点:

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

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

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

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

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

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

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

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

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

show process list;

116、mysql主从,主库宕机,主从切换步骤?

主机故障或者宕机:

在salve执行:

stop slave;

reset master;

查看是否只读模式:show variables like \'read_only\';

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

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

查看 show slave status\G;

查看 show master status\G;

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

正常切换

1、检查slave同步状态

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

flush tables with readlock

flush data

切换完成后可以释放锁

2、在master执行:show process list;

3、在slave执行:show process list;

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

4、停止slave io线程

在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;

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

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

118、MySQLbinlog的几种日志录入格式以及区别

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

(2)适用场景

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

119、三种日志格式:Statement MiXED ROW

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

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

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

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

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

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

121、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

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

检查状态:

mysql\>show slave status

Slave_IO_RunningI/O线程是否被启动并成功地连接到主服务器上。(状态信息为YesNo)

Slave_SQL_RunningSQL线程是否被启动(状态信息为YesNo)

Seconds_Behind_Master测量SQL线程和I/O线程的时间差(即延迟,单位为秒)

mysql通过mysql dump命令如何做全量和增量备份

全量备份:

mysqldump -u用户名 -p密码数据库名\>备份文件.sql

增量备份:

每日定时使用MySQLadminflush-logs来创建新日志,恢复增量备份时恢复全量备份之后的binlog

例如: mysqlMySql-bin.000002|MySQL-uroot-p密码

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

备份:

mysql dump -uroot -p密码 test \> 备份文件.sql

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

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

创建库的命令: create database库名;

创建表的命令: create table表名;

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

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

select * from a,b where a.tid=b.tid and a.tid BETWEEN 50000 AND 50200;

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

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

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

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

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

有如下表的结构:

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语句:

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.列出所有部门的详细信息(包括部门表的所有字段)和部门人数

select*fromdeptaleftjoin(selectdeptno,count(*)fromempgroupbydeptno)bona.deptno=b.deptno;

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

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

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

事务的四种隔离级别

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来观察之间的差距

为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要快。一般是选择一周一个全备,其余每天进行增量备份,备份时间为业务低峰期。

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

备份恢复失败如何处理:

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

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

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.在主库与从库都安装mysql数据库

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

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

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

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

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

Server-id存在作用:

mysql同步的数据中是包含server-id的,而server-id用于标识该语句最初是从哪个server写入的。因此server-id一定要有的

Server-id不能相同的原因:每一个同步中的slave在master上都对应一个master线程,该线程就是通过slave的server-id来标识的;每个slave在master端最多有一个master线程,如果两个slave的server-id相同,则后一个连接成功时,slave主动连接master之后,如果slave上面执行了slavestop;则连接断开,但是master上对应的线程并没有退出;当slavestart之后,master不能再创建一个线程而保留原来的线程,那样同步就可能有问题;

MySQL中 myisam与 innodb 的区别

(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)varchar与char的区别

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

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

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

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

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

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

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

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

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有几种高可用方案,每个方案的优缺点

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集群

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

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

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

有2种:AOF和RDB

RDB方式原理:当redis需要做持久化时(执行SAVA或者BGSAVA命令,或者是达到配置条件时执行),redis会fork一个子进程,子进程将数据写到磁盘上一个临时RDB文件中,当子进程完成写临时文件后,将原来的RDB替换掉(默认文件名为dump.rdb)

AOF方式原理:AOF可以做到全程持久化,Redis每执行一个修改数据的命令,都会把这个命令添加到AOF文件中,当Redis重启时,将会读取AOF文件进行"重放"以恢复到Redis关闭前的最后时刻。由于os会在内核中缓存write做的修改,所以可能不是立即写到磁盘上。这样aof方式的持久化也还是有可能会丢失部分修改。不过我们可以通过配置文件告诉redis我们想要通过fsync函数强制os写入到磁盘的时机。

可以共存

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

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

主从配置

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就是用来指定这个"一定时间范围"的,单位是毫秒。

MEMCACHED MONGDB

mongdb的储存引擎,查库查表,查看数据,怎么将库里面的数据导出来

在2015/3/17以前,MongoDB只有一个存储引擎,叫做MMAP,MongoDB3.0的推出使得MongoDB有了两个引擎:MMAPv1和WiredTiger0\>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"

ANSIBLE

使用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

请写出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

gather_facts:false

tasks:

-name:changeuserpasswd

user:name={{item.name}}password={{item.chpass|password_hash(\'sha512\')}}update_password=alwayscreaton

with_items:创建和校验哈希密码

-{name:\'root\',chpass:\'123\'}

-{name:\'rep\',chpass:'123'}

注释:对迭代项的引用,固定变量名为\"item",使用with_item属性给定要迭代的元素;

方法二:

/etc/ansible/hosts test

ansible都用来做什么

实现了批量系统配置;批量程序部署;批量运行命令;自动化运维工具

NGINX

请简单描述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住进称号或进程号文件路径

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段

下面nginx配置文件中的一段配置,请写出输出结果,并说明为什么?

location/test{

set\$a32; echo\$a; set\$a56; 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;

}编写nginxrewrite规则,http://192.168.1.1/ops/index.php/admin/idc转化成http://192.168.1.1/ops/index.php?act=admin&arg=idc?

location\~*/ops/index.php/admin/(.*)\${

rewrite/ops/index.php/admin/(.*)/ops/index.php?act=admin&arg=\$1last; }

线上访问的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_names\~tianyun\~\.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

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/;}

防火墙

禁止来自10.0.0.188ip地址访问80端口的请求

#iptables-tfilter-AINPUT-s10.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

iptables是否支持time时间控制用户行为,如有请写出其具体操作步骤

支持。需要增加相关支持的内核补丁,并且要重新编译内核。

或者使用crontab配合iptables,首先:vi/deny.bat输入/sbin/iptables-AOUTPUT-ptcp-s192.168.1.0/24--dport80-jDROP保存退出

打开crontab-e

输入:0021* * */bin/sh/deny.bat

包过滤防火墙与代理应用防火墙有什么区别,能列出几种相应的产品吗?

包过滤防火墙工作在网络协议IP层,它只对IP包的源地址、目标地址及相应端口进行处理,因此速度比较快,能够处理的并发连接比较多,缺点是对应用层的***无能为力。

代理服务器防火墙将收到的IP包还原成高层协议的通讯数据,比如http连接信息,因此能够对基于高层协议的***进行拦截。缺点是处理速度比较慢,能够处理的并发数比较少。

代理应用防火墙:天融信GFW4000

包过滤防火墙:华为NE16E

什么是NAT,常见分为哪几种,DNAT与SNAT有什么不同,应用事例有哪些?

NAT(NetworkAddressTranslation,网络地址转换)是将IP数据包头中的IP地址转换为另一个IP地址的过程。分为DNAT(目的网络地址转换)和SNAT(源网络地址转换)

SNAT主要是用于内网主机通过路由器或网关访问外网

DNAT将外部地址和端口的访问映射到内部地址和端口

如何将本地80端口的请求转发到8080端口,当前主机IP为192.168.16.1,其中本地网卡eth0

#iptables-tnat-APREROUTING-d192.168.16.1-ptcp--dport80-jDNAT--to192.168.16.1:8080

或者:

#iptables-tnat-APREROUTING-ieth0-d192.168.16.1-ptcp-mtcp--dport80-jREDIRECT--to-ports8080

请注释说明以下iptables规则中划线部分中实现的功能

-APOSTROUTING-s192.168.0.0/255.255.0.0-jRETURN

-APOSTROUTING-d192.168.0.0/255.255.0.0-jRETURN

-IFORWARD-d192.168.3.150-jACCEPT-mcomment--comment\"redisserver\"

-AFORWARD-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端口外网访问,写出相应安全策略。

firewall-cmd--zone=public--add-port=80/tcp--permanent

serviceiptablesstop与iptables-F有何区别?

serviceiptablesstop停止iptables服务,防火墙设定的所有规则都失效,但表和链中的规则还在

iptables-F,清空所有表所有链中的规则,iptables服务是运行状态,链中的默认策略还生效

请问如何用iptables工具阻断来自192.168.0.1的所有网络连接

iptables-AINPUT-s192.168.0.1-jDROP

请写出iptables做NAT转发的步骤及iptables命令

DNAT目标地址转换

iptables-tnat-APREROUTING-ippp0-ptcp--dport80-jDNAT--to192.168.0.3:80把从ppp0进来的要访问tcp/80的数据包的地址改为192.168.0.3

SNAT网络地址转换

iptables-tnat-APOSTROUTING-s192.168.0.0/24-jSNAT--to1.1.1.1将内网192.168.0.0/24的源地址改为1.1.1.1

诊断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-AINPUT-ptcp--dport8080-s221.166.247.12-jACCEPT

iptables-tnat-APREROUTING-ptcp--dport8080-d221.100.247.10-jDNAT--to172.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

TOMCAT

您用过的几种中间件/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。

  1. 请写出Tomcat程序的主配置文件名 在conf目录下:server.xml

  2. 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虚拟机内存分配问题并发设置进程设置

邮件服务器

列出作为完整邮件系统的软件,至少二类

Sendmail,(邮件传输代理程序)postfix,(WietseVenema在IBM的GPL协议之下开发的MTA(邮件传输代理)软件)

qmail(qmail是一个因特网邮件传送代理(简写为MTA),它运行在linux/Unix兼容系统下,是一个直接代替UNIX下Sendmail软件的邮件传送程序。)

ZABBIX

写下之前工作中在生产环境配置使用过的监控系统?针对网络或服务配置过哪些监控项?使用什么方法进行报警通知

答:zabbix监控:服务器启动分区剩余空间服务器网络接口进出流量服务器服务状态服务器进程数量服务器CPU状态磁盘IO情况文件修改磁盘总和报警方式:邮件报警,微信报警,

使用何种工具监控的数据库?监控哪些指标?

zabbix

使用mysql自带的模板

监控:QPS(增删改查)、mysql请求流量带宽,mysql响应流量带宽,监控主从(showslavestatus\G);TPS(每秒事务的处理数量);监控缓冲池使用情况;缓存碎片;慢查询数量;当前连接数;吞吐量;端口和服务状态;mysql正常运行的时间;

  1. 架构设计题:

  2. 你可以采取任何设备和不同操作系统服务设计对两台WWW服务器和两台FTP服务器作负载均衡,用网络拓扑图表示并加以说明!(方法越多越好)

这是利用DNS处理域名解析请求的同时进行负载均衡的一种方案。

在DNS服务器中配置多条A记录,

每次域名解析请求都会根据负载均衡算法计算一个不同的IP地址返回,这样A记录中配置的多个服务器就构成一个集群,并可以实现负载均衡。

www1INA192.168.1.1 www2INA192.168.1.2 www3INA192.168.1.3 ftp1INA192.1.1.4 ftp2INA192.1.1.5

ftp3INA192.1.1.6 wwwINCNAMEwww wwwINCNAMEwww2 wwwINCNAMEwww3 ftpINCNAMEftp1 ftpINCNAMEftp2

ftpINCNAMEftp3

Linux系统层面有哪些常见的安全防护方法

1,防火墙只开放对外的服务端口 2,禁止ROOT远程登录 3,修改/etc/passwd访问权限 4,修改sshd的服务端口

5,只允许公司出口IP连接sshd服务端口 6,还有修改执行命令历史记录数 7,禁用不用的服务和应用

8,检查系统日志

怎么理解存储?

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

请描述你是怎么优化Linux系统的?

1、不用root,添加普通用户,通过sudo授权管理。2、更改默认的远程连接SSH服务端口及禁止root用户远程连接。

3、定时自动更新服务器时间。4、配置yum更新源,从国内更新源下载安装rpm包。

5、关闭selinux及iptable。6、调整文件描述符的数量。进程及文件的打开都会消耗文件描述符。

7、定时自动清理/var/spool/clientmquene/目录垃圾文件,防止inodes节点被占满。

8、精简开机自启动服务(crond,sshd,network,rsyslog)。

9、linux内核参数优化/etc/sysctl.conf,执行sysctl-p生效。

10、更改字符集,支持中文,但建议还是使用英文字符集,防止乱码问题,不要使用中文。11、锁定关键系统文件。

12、清空/etc/issue,去除系统及内核版本登陆前的屏幕显示。

请用画图的方法说明并讲解你曾经接触过的规模最大的服务器集群架构

client:客户端 cdn加速:内容分发网络 firewall:防火墙 wiki:(多人协作的写作系统) dr:负载均衡器 rabbitMQ:消息队列集群 站内搜索服务器solr(做集群,工具由开发选用)

memcachedx3:缓存堆(不能做集群,但可用多个。与gelara集群并行)

redis集群:(keepalived提供一个唯一ip入口)

pxe服务器:批量安装操作系统,初始化使用服务器 ansible:统一部署

zabbix:监控服务器(可用做高可用)(分布式监控:核心监控,代理层监控下的服务器才是真正被监控的机器)

ELK:开源实时日志分析平台 ips:***防御系统 ids:***检测系统

cmdb资产管理:配置管理数据库,通过识别、控制、维护,检查企业的IT资源,从而高效控制与管理不断变化的IT基础架构与IT服务

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

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

  1. rsync+inotify是做什么的?加什么参数才能实现实时同步?--delete参数又是什么意

  2. 思?

1:Linux内核从2.6.13版本开始提供了inotify通知接口,用来监控文件系统的各种变化情况,如文件存取、删除、移动等。利用这一机制,可以非常方便地实现文件异动告警、增量备份,并针对目录或文件的变化及时作出响应。

使用rsync工具与inotify机制相结合,可以实现触发式备份(实时同步)

  1. 加什么参数才能实现实时同步? inotifywait-m

  2. --delete参数又是什么意思? --delete:文件或目录被删除在监控目录中

  3. 虚拟化vSphere,Hyper-V,kvm

1、VMwarevSphere集成容器(VIC)建立了一个在轻量级虚拟机内部署并管理容器的环境。

2、Hyper-V是微软提出的一种系统管理程序虚拟化技术,能够实现桌面虚拟化

3、KVM是一个开源的系统虚拟化模块,自Linux2.6.20之后集成在Linux的各个主要发行版本中。它使用Linux自身的调度器进行管理,所以相对于Xen,其核心源码很少。KVM目前已成为学术界的主流VMM(虚拟机监控器)之一。

问:Linux系统下,如何修改test用户,最大的打开文件数量为10240,最大的进程数为20480?

答:\root\@wing\~\#vim/etc/security/limits.conf testsoftfsize9000 testhardfsize10240

\root\@wing\~\#vim/etc/security/limits.d/20-nproc.conf rootsoftnprocunlimited

test hard nproc 20480

KEEPALIVED

请简单阐述keepalived的故障切换工作原理

keepalived是以VRRP协议为实现基础的VRRP,全称VirtualRouterRedundancyProtocol,中文名为虚拟路由冗余协议,VRRP的出现就是为了解决静态路由的单点故障问题,VRRP是通过一种竞选机制来将路由的任务交给某台VRRP路由器的。

在两个负载均衡调度器上安装Keepalived以实现高可用的目的。

两个调度器之间通过VRRP协议来保证高可用性,当一台调度器宕机时,另一台备用的立即接替原主机服务,当主机被修复之后又将服务返还给主机。

在主节点正常工作的时候,会不断地向备节点广播心跳消息,用以告诉备节点自己还活着,当主节点发生故障的时候,备节点就无法收到主节点广播的消息,即可判定主节点发生故障,进而调用自身的接管程序,接管主节点的IP资源及服务。而而当主节点被修复时,备节点会释放主节点故障时自己所接管的IP资源和服务,恢复到原来备用的角色。

请简述非对称加密算法工作过程

1.乙方生成两把密钥(公钥和私钥)

2.甲方获取乙方的公钥,然后用它对信息加密。

3.乙方得到加密后的信息,用私钥解密,乙方也可用私钥加密字符串

4.甲方获取乙方私钥加密数据,用公钥解密

负载均衡

描述Lvs、Nginx负载均衡的五种调度算法。

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(更加智能的负载均衡算法,可以根据页面大小的和加载时间长短智能的进行负载均衡)

问:采用四层负载均衡的可以用哪种方式?答:lvshaproxy硬件负载均衡器(F5-BigIpRedware)

REBBITMQ

描述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均衡

ZOOKEEPER

zookeeper如何保证事务的一致性

数据一致性是靠Paxos算法(一种基于消息传递的一致性算法。)保证的,Paxos可以说是分布式一致性算法的鼻祖,是ZooKeeper的基础 paxos的基本思路(深入解读zookeeper一致性原理):http://wely.iteye.com/blog/2362118

你对运维工程师的理解和以及对其工作的认识

运维工程师在公司当中责任重大,需要保证时刻为公司及客户提供稳定、安全的服务。保障公司正常对外提供服务。运维工程师的一个小小的失误,很有可能会对公司及客户造成重大损失,因此运维工程师的工作需要严谨。

同时在工作中也要能及时发现问题,解决问题,记录问题。在工作中以及工作之余不断充实完善自己,更好的服务公司。

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

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

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

电脑开机时主机内发出嘀嘀的鸣叫声,且显示器无任何信号,此对象可能是哪方面所导致,怎样处理?

可能是内存问题导致,一般是内存松动,灰尘较多.可以做清扫灰尘处理,重新插好内存等操作.

各种主板的报警音有些差别,常见两种BIOS报警声音含义如下,自己根据长短查对属于那种情况吧:

AwardBIOS的报警音:

1短:系统正常。

2短:需要更正CMOS设置,请进入CMOSSetup重新设置。

1长1短:RAM或主板出错。1长2短:显示卡错误,检查独立显卡是否插牢,或者显卡坏了。

1长3短:键盘控制器错误。检查主板。1长9短:主板BIOS损坏。

不断地响(长声):内存条未插好或损坏。重复短响:电源故障。 无声音无显示:电源故障。

AMIBIOS的报警音:

1短:内存问题。2短:内存ECC较验错误。在CMOSSetup中将内存关于ECC校验的选项设为Disabled就可以解决。

3短:系统基本内存(第1个64kB)检查失败。换内存。

4短:系统时钟出错。5短:CPU损坏。6短:键盘控制器故障。7短:系统实模式错误,不能切换到保护状态。

8短:显存错误。更换显卡。9短:ROMBIOS错误。1长3短:内存错误。内存损坏,更换即可。

1长8短:显卡损坏或显示卡没插好。

有一个员工,说他的机器上不了网,请你描述一下,可能是哪些故障产生的,怎么解决这些故障?

查看软件和硬件

ping网关和其他机器.ping不通,看看是不是网卡被禁了,还是ipdnsgateway有问题,再看看网卡驱动是不是有问题.

硬件方面: 看看是不是网线没插好,网卡的灯亮不亮.

Linux系统统计服务器服务连接数命令?(前面原题)

netstat-n|awk\'/\^tcp/{++S\$NF}END{for(ainS)printa,S\a} 或是netstat-nat|grepESTABLISHED|wc-l

Linux运维工程师都需要具备哪些技能和职业品质?

熟练使用shell,最好也能掌握python的使用。

熟悉运维自动化工具和平台的使用,能整合、研发更好,通过自动化,实现运维数据可视化、生成报表;

能够独立进行运维的问题跟踪与管理,故障处理和隐患排查,定期给出业务运维状况和容量报告;

能够研究移动互联网应用服务架构及其依赖的软硬件环境,跟踪各个子系统的内部运行状况,不断提高系统的健壮性与效率;能熟练应对协助开发完成日常变更,上下线等的维护事务;

能对系统和业务数据进行统一存储、备份和恢复,对网络设备、服务器设备、操作系统运行状况进行监控。

首先要有良好的品行需要有发现问题,解决问题的能力。遇事沉着冷静。动动你的小脑袋夸夸自己,

不过一定要积极向上,杜绝消极思想。

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

\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:等待所有分组死掉

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

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

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

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

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

如果接到客服反馈:A项目www.lanxinA.cn无法打开,作为一名运维人员需要怎么操作?

1、先把服务切走,保证公司网站能正常对外提供服务2、查看网络是否正常3、本地网络速率正常时,再检查网站是否正常,域名是否能被正常解析到ip

使用故障诊断命令定位故障点。

命令分析:ping:检测IP或域名的连通性dig/nslookup:查看DNS解析情况

traceroute:显示从访问者到网站的路由连接状态,如果有节点无法连接,只需针对该故障点进行修复便可快速恢复网络。4、检查服务器本身是否故障5、协调开发检查设计是否异常

在之前的运维工作中你遇到过哪些运维故障?是怎么解决的?请描述2个你发现并解决的故障案例

1、问题描述:服务器tomcat重启之后,网站很长一段时间无法访问,然后过几分钟就可以访问了。

使用命令netstat-tulnp|grepjava发现是8005端口的问题,起来很慢,日志里面又没有什么报错信息。

原因:Tomcat启动过程很慢,JVM上的随机数与熵池策略耗时:session引起的随机数问题导致的。

解决方案: 修改\$JAVA_HOME/jre/lib/security/java.security文件中securerandom.source配置项:

#securerandom.source=file:/dev/urandom 改为 securerandom.source=file:/dev/./urandom

最后重启tomcat发现速度快了。

2、Tomcat每周六重启失败

问题背景:生产环境上面的tomcat每周六重启,但是重启失败

原因:经过调查发现是因为一个tomcat产生了多个java进程,所以执行自带脚本shutdown.sh的时候没有把tomcat进程完全杀死。

解决方案:将杀死tomcat进程的脚本放在重启脚本的前面执行

592**6/app/bin/kill.sh\>\>/app/log/backup/kill.log2&1

013**6/app/bin/restart_tomcat.sh\>\>/app/log/backup/restart.log2&1

假设网站结构为:Nginx→PHP-FPM→Mysql有部分链接打开缓慢,通过什么方式可以找到访问缓慢的链接

1、系统负载,磁盘IO 2、是否有php慢查询程序 打开php-fpm中php慢查询日志

request_slowlog_timeout=5 slowlog=var/log/slow.log

reload访问之后无慢查询日志,判断无执行时间比较慢的php程序

2.检查该配置文件

pm=static pm.max_children=300 pm.start_servers=15 pm.min_spare_servers=8 pm.max_spare_servers=48

request_terminate_timeout=200 排除是pm.max_children设置过小引起的问题。

3,mysql可能有慢查询

请写出5个你常用的系统或网络维护工具的名称

配置部署自动化:ansible(puppet,saltstart)

日志采集、分析、报警:ELK

网络质量监控:smokeping、zabbix

监控(报警)自动化:nagios(监控系统),ganglia(集群监控),cacti(流量监控)、ipmonitor(ping监控)等

指标收集:collectd+statsd(statsite)

指标绘图:graphite、nrpe、pnp4nagios

有IP恶意刷流量怎么办

将对应ip禁掉 #iptables-tfilter-AINPUT-sip-ptcp--dport80-jREJECT

或者 #iptables-tfilter-AINPUT-sip-ptcp--dport80-jDROP

公司的架构服务器什么配置,怎么上传代码,怎么发布

架构背背强哥提供的 戴尔710/720 scpjenkinsnfs

远程管理卡作用。怎么通过命令看硬盘,内存等硬件故障。

1、远程安装操作系统

登录 监控电池、风扇、CPU、内存、磁盘等硬件设备的状态远程管理卡管理界面,用控制卡上的虚拟介质映射功能把自己电脑上的ISO文件或者物理光驱投递给机房里服务器。

2、电源控制功能 远程登录管理界面,进行开机、关机、重启

3.检查服务器硬件状态 监控电池、风扇、CPU、内存、磁盘等硬件设备的状态

平时在公司都干些什么?

1.处理报警,查看报警的原因,和开发一起解决,并且尽量找出避免再次发生的方法,例如添加一些定时清理脚本

2.处理发布,基本都是自动化,但是总有发布不成功或者需要回滚的时候,这时候就需要手工介入,找到原因,并跟开发一起讨论最后是否撤销还是重上 3.日常一起能够自动化的工作尽量找到自动化的方法

4.会启动一些和运维相关的项目,所以有时候也兼职项目开发 5.参与例会 6.学习,看看新闻,学习资料等等。

或者

1,等待监控系统报警 2,核心系统巡检,备份系统备份任务完成情况巡检 3,等待用户报障

4,例行任务计划攥写,例行任务执行,比如新开用户,存储扩容等; 5,项目性的工作,比如新购存储,新的监控系统,新的操作系统,应用系统验证 6,学习新知识,看技术文档或者公司的各种通知 7,和不同供应商(工程师),内部人员开会

磊哥笔记十个案例

服务器硬件硬盘iocpu等,各种应用服务器的状态等

mysqltomcatnginx等

java报错socket

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状态的端口。只需要找一个没有被占用的端口就能解决这个问题。

status模块监控nginx等。

如何测试网速,测试视频吞吐与常规网速测试的区别

ping

服务器系统状态监控指标(前面有原题)

名词解释:

HDLC,VTP,OSPF,RIP,DDOS,GNU,netscreen,ssh,smartd,apache,WAIT_TIME

HDLC(High-LevelDataLinkControl):

高级数据链路控制:是一个在同步网上传输数据、面向比特的数据链路层协议,它是由国际标准化组织(ISO)根据IBM公司的SDLC(SynchronousDataLinkControl)协议扩展开发而成的。

VTP(VLANTrunkingProtocol):

VLAN中继协议,也被称为虚拟局域网干道协议:它是思科私有协议。作用是十几台交换机在企业网中,配置VLAN工作量大,可以使用VTP协议,把一台交换机配置成VTPServer,其余交换机配置成VTPClient,这样他们可以自动学习到server上的VLAN信息。

它是一个OSI参考模型第二层的通信协议,主要用于管理在同一个域的网络范围内VLANs的建立、删除和重命名。

OSPF(OpenShortestPathFirst开放式最短路径优先):

OSPF是IETF(国际互联网工程任务组TheInternetEngineeringTaskForce)开发的基于链路状态的自治系统内部路由协议。

OSPF仅传播对端设备不具备的路由信息,网络收敛迅速,并有效避免了网络资源浪费;OSPF直接工作于IP层之上,IP协议号为89;OSPF以组播地址发送协议包;

RIP(RoutingInformationProtocol)

路由信息协议RIP是基于距离矢量算法的路由协议,利用跳数来作为计量标准。

(缺点:由于15跳为最大值,RIP只能应用于小规模网络;收敛速度慢;根据跳数选择的路由,不一定是最优路由。)

DDOS(DistributedDenialofService)

分布式拒绝服务******指借助于客户/服务器技术,将多个计算机联合起来作为***平台,对一个或多个目标发动DDoS***,从而成倍地提高拒绝服务***的威力。通常,***者使用一个偷窃帐号将DDoS主控程序安装在一个计算机上,在一个设定的时间主控程序将与大量代理程序通讯,代理程序已经被安装在网络上的许多计算机上。代理程序收到指令时就发动***。利用客户/服务器技术,主控程序能在几秒钟内激活成百上千次代理程序的运行。

在信息安全的三要素------"保密性"、"完整性"和"可用性"中,DDOS针对的是可用性。

GNU(GNUisNotUnix"的递归缩写)

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

  1. 超时选项???

  2. 写下之前工作中在生产环境中对何种角色的服务器上的哪些内容配置过备份,使用什么备份方法及备份策略,使用了什么方法检查备份的可用性?

  1. 每天晚上00点整在Web服务器上打包备份系统配置文件、网站程序目录及访问日志并通过rsync命令推送备份服务器backup上备份保留2.内核备份

数据库备份

备份方案:1.设置数据库自动备份脚本文件,计划任务2.每个星期天做全库备份3.每日(星期天除外)做级增量备份4.在主服务器保留一个礼拜内的全库备份、增量备份5.将一个礼拜前的全库备份,增量备份数据FTP到其他环境6.还可以加入差异备份,多种备份形式。

tcp链接状态有哪些,分别代表什么意思

LISTEN:侦听来自远方的TCP端口的连接请求

SYN-SENT:再发送连接请求后等待匹配的连接请求

SYN-RECEIVED:再收到和发送一个连接请求后等待对方对连接请求的确认

ESTABLISHED:代表一个打开的连接

FIN-WAIT-1:等待远程TCP连接中断请求,或先前的连接中断请求的确认

FIN-WAIT-2:从远程TCP等待连接中断请求

CLOSE-WAIT:等待从本地用户发来的连接中断请求

CLOSING:等待远程TCP对连接中断的确认

LAST-ACK:等待原来的发向远程TCP的连接中断请求的确认

TIME-WAIT:等待足够的时间以确保远程TCP接收到连接中断请求的确认

CLOSED:没有任何连接状态

https://www.cnblogs.com/Jessy/p/3535612.html

linuxA机器提供了80端口服务,但是用户反馈访问慢,如何排查问题?

1、当网站访问较慢时,首先先查看本地网络是否正常

2、本地网络速率正常时,再检查下所访问的网站是否正常

总时间:网站的响应时间,可了解网站的性能瓶颈或者是利用谷歌或IE浏览器的F12开发者工具查看下网站的大小和网站的打开速度成不成正比。

3、网站出现无法访问时,使用故障诊断命令定位故障点。

命令分析:ping:检测IP或域名的连通性dig/nslookup:查看DNS解

析情况traceroute:显示从访问者到网站的路由连接状态,如果有节点无法连接,只需针对该故障点进行修复便可快速恢复网络。

4、利用浏览器开发者模式检查下图片、js、css是否做过压缩处理

5、数据库(连接数等)、服务器(cpu、内存等)

6、从网站本身找问题,网站的问题包括网站程序设计,网页设计结构,网页内容三个部分。

迅游科技有限公司

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

一个比较粗糙的答案:

#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

现有a和b两个文件,将a和b文件的内容输出到c文件里,按要求写入到c文件里.1\na\n2\nb\n3\nc

a文件内容 1 2 3

b文件内容 a b c

awk\'{a\NR\=\$0}END{printa\1\"\n\"a\4\"\n\"a\2\"\n\"a\5\"\n\"a\3\"\n\"a\6}\'ab\>\>c

icmp协议属于tcp/ip协议或者OSI模型的那一层。

icmp===Internet控制消息协议

该协议是TCP/IP协议集中的一个子协议,属于网络层协议,主要用于在主机与路由器之间传递控制信息,

包括报告错误、交换受限控制和状态信息等。当遇到IP数据无法访问目标、IP路由器无法按当前的

传输速率转发数据包等情况时,会自动发送ICMP消息。我们可以通过Ping命令发送ICMP回应请求消息

并记录收到ICMP回应回复消息,通过这些消息来对网络或主机的故障提供参考依据。

hadoop中的HDFS的文件存储过程中的写操作。namenode节点作用

hadoop概念:

Hadoop是一个由Apache基金会所开发的分布式系统基础架构。

用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。

Hadoop实现了一个分布式文件系统(HadoopDistributedFileSystem),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(highthroughput)来访问应用程序的数据,适合那些有着超大数据集(largedataset)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streamingaccess)文件系统中的数据。

Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。

Hadoop是一个能够让用户轻松架构和使用的分布式计算平台。用户可以轻松地在Hadoop上开发和运行处理海量数据的应用程序。它主要有以下几个优点:

1.高可靠性。Hadoop按位存储和处理数据的能力值得人们信赖。

2.高扩展性。Hadoop是在可用的计算机集簇间分配数据并完成计算任务的,这些集簇可以方便地扩展到数以千计的节点中。

3.高效性。Hadoop能够在节点之间动态地移动数据,并保证各个节点的动态平衡,因此处理速度非常快。

4.高容错性。Hadoop能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配。

5.低成本。与一体机、商用数据仓库以及QlikView、YonghongZ-Suite等数据集市相比,hadoop是开源的,项目的软件成本因此会大大降低。

HDFS写文件过程:

1.初始化FileSystem,客户端调用create()来创建文件

2.FileSystem用RPC调用元数据节点,在文件系统的命名空间中创建一个新的文件,元数据节点首先确定文件原来不存在,并且客户端有创建文件的权限,然后创建新文件。

3.FileSystem返回DFSOutputStream,客户端用于写数据,客户端开始写入数据。

4.DFSOutputStream将数据分成块,写入dataqueue。dataqueue由DataStreamer读取,并通知元数据节点分配数据节点,用来存储数据块(每块默认复制3块)。分配的数据节点放在一个pipeline里。DataStreamer将数据块写入pipeline中的第一个数据节点。第一个数据节点将数据块发送给第二个数据节点。第二个数据节点将数据发送给第三个数据节点。

5.DFSOutputStream为发出去的数据块保存了ackqueue,等待pipeline中的数据节点告知数据已经写入成功。

6.当客户端结束写入数据,则调用stream的close函数。此操作将所有的数据块写入pipeline中的数据节点,并等待ackqueue返回成功。最后通知元数据节点写入完毕。

7.如果数据节点在写入的过程中失败,关闭pipeline,将ackqueue中的数据块放入dataqueue的开始,当前的数据块在已经写入的数据节点中被元数据节点赋予新的标示,则错误节点重启后能够察觉其数据块是过时的,会被删除。失败的数据节点从pipeline中移除,另外的数据块则写入pipeline中的另外两个数据节点。元数据节点则被通知此数据块是复制块数不足,将来会再创建第三份备份。

NameNode:是一个通常在HDFS实例中的单独机器上运行的软件。它负责管理文件系统名称空间和控制外部客户机的访问。NameNode决定是否将文件映射到DataNode上的复制块上

NameNode的作用:是管理文件目录结构,接受用户的操作请求,是管理数据节点的

zabbix监控的优缺点。

zabbix优点:

1、数据采集:可用性和性能检测,自动发现,支持agent、snmp、JMX、telnet等多种采集方式,支持主动和被动模式数据传输、支持用户自定义插件,自定义间隔收集数据

2、高可用:server对设备性能要求低,支持proxy分布式监控,分布式集中管理,有自动发现功能,可以实现自动化监控;开放式接口,扩展性强,插件编写容易

3、告警管理:支持多条件告警,支持多种告警方式,支持多组模板,模板继承。

4、告警设置:告警周期,告警级别,告警恢复通知、告警暂停,时段阈值、支持维护周期、支持单机停用

5、图形化展示:允许自定义创建多监控项视图,网络拓扑,自定义面板展示,自定义IT服务可用性

6、历史数据:历史数据查询可配置,内置housekeeping数据清理机制

7、安全审计:具备安全的用户审计日志,权限认证,用户可以限制允许维护的列表。

zabbix缺点:

1、性能瓶颈,监控系统没有低估高峰期,具有持续性和周期性,机器量越大,数据的增大会使数据库的写入成为一定的瓶颈,官网给出的单机上限5000台,届时就需要增加proxy,增加成本。

2、Zabbix采集数据有pull方式,也就是server主动模式,当目标机器量大之后,pull任务会出现积压。采集数据会延迟

3、项目二次开发,需要分析MySQL表结构,表结构比较复杂,通过API开发对开发能力有要求。

4、内置housekeeping在执行过程中会对数据库增加压力,需要对数据库进行优化

大小写字母的替换,将qianfengjiaoyu中的n转换成大写的N.

(1)url=qianfengjiaoyu echo\${url//n/N} 或

(2)echoqianfengjiaoyu\>1.txt sed-ris/qianfengjiaoyu/qiaNfeNgjiaoyu/g1.txt

简单说一下tcp/ip协议中的tcp和ip

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(Addre***esolationProtocol)地址解析协议

从协议分层模型方面来讲,TCP/IP由四个层次组成:网络接口层、网间网层、传输层、应用层。

TCP(TransmissionControlProtocol传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议

在因特网协议族(Internetprotocolsuite)中,TCP层是位于IP层之上,应用层之下的中间层

ip协议是网络之间互连的协议也就是为计算机网络相互连接进行通信而设计的协议

IP协议是将多个包交换网络连接起来,它在源地址和目的地址之间传送一种称之为数据包的东西,它还提供对数据大小的重新组装功能,以适应不同网络对包大小的要求。

IP不提供可靠的传输服务,它不提供端到端的或(路由)结点到(路由)结点的确认,对数据没有差错控制,它只使用报头的校验码,它不提供重发和流量控制。如果出错可以通过ICMP报告,ICMP在IP模块中实现。

公司的架构,服务器的数量,之前公司运维部的人员数量,之前工作流程

服务器数量五六十台,运维人数2人,运维人员对公司互联网业务所依赖的基础设施、基础服务、线上业务进行稳定性加强,进行日常巡检发现服务可能存在的隐患,对整体架构进行优化以屏蔽常见的运行故障,多数据中接入提高业务的容灾能力。通过监控、日志分析等技术手段,及时发现和响应服务故障,减少服务中断的时间,使公司的互联网业务符合预期的可用性要求,持续稳定地为用户提供务。

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

进程和线程的区别

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

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

他们公司数据库使用的是mongodb,注意mongodb

MongoDB是一个基于分布式文件存储的数据库

它的特点是高性能、易部署、易使用,存储数据非常方便。主要功能特性有:

*面向集合存储,易存储对象类型的数据。mongodb集群参考 *模式自由。 *支持动态查询。

*支持完全索引,包含内部对象。 *支持查询。支持复制和故障恢复。 *可通过网络访问。

*使用高效的二进制数据存储,包括大型对象(如视频等)。 *自动处理碎片,以支持云计算层次的扩展性。

*支持RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言。 *文件存储格式为BSON(一种JSON的扩展)。

某公司面试总结

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

现在两台宿主机里的容器就可以通信了。

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. 面试总结

1802卢康正:

\>\>有什么才艺吗,会唱歌吗,跳舞之类的。 视个人情况而定

\>\>说一下jenkins的工作流程

开发(git)--\>git主库--\>jenkins(git+jdk(环境)+tomcat+maven打包+测试)--\>发布到tomcat服务器 张武松学长分享的工作环境下的jenkins流程

ftp://10.18.45.13/%E6%AD%A6%E6%9D%BE%E5%85%AC%E5%8F%B8jenkins.pptx (ftp://10.18.45.13/%E6%AD%A6%E6%9D%BE%E5%85%AC%E5%8F%B8jenkins.pptx) 上家公司有多少台服务器,几个运维。

王振给答案, 会python吗? 了解一些python

了解docker和别的虚拟化技术的区别吗?

1)标准化应用发布,docker容器包含了运行环境和可执行程序,可以跨平台和主机使用;

2)节约时间,快速部署和启动,VM启动一般是分钟级,docker容器启动是秒级;

3)方便构建基于SOA架构或微服务架构的系统,通过服务编排,更好的松耦合;

4)节约成本,以前一个虚拟机至少需要几个G的磁盘空间,docker容器可以减少到MB级;

5)方便持续集成,通过与代码进行关联使持续集成非常方便;

6)可以作为集群系统的轻量主机或节点,在IaaS平台上,已经出现了CaaS,通过容器替代原来的主机。

7)应用隔离

  1. 个人兴趣爱好是什么?

  2. 说一下数据库的几个缓存服务器

Redis memcached 你对未来有什么规划,三到五年 nginx的工作原理:

nginx作为web服务器:

nginx是基于http协议实现的web服务器,通过epoll技术实现I/O口多路复用,采用异步非阻塞实现高并发请求,高度的模块化设计。 异步非阻塞:1个master进程,2个work进程

每进来一个request,会有一个worker进程去处理。但不是全程的处理,处理到什么程度呢?处理到可能发生阻塞的地方,比如向上游(后端)服务器转发request,并等待请求返回。那么,这个处理的worker不会这么一直等着,他会在发送完请求后,注册一个事件:"如果upstream返回了,告诉我一声,我再接着干"。于是他就休息去了。这就是异步。此时,如果再有request进来,他就可以很快再按这种方式处理。

nginx作为代理服务器:

代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。

作为内容服务器的负载均衡器:

当客户机向站点提出请求时,请求将转到负载均衡服务器。然后,负载均衡服务器通过防火墙中的特定通路,将客户机的请求按照一定的规则发送到后端内容服务器。后端内容服务器再通过该通道将结果回传给负载均衡器。负载均衡器服务器将检索到的信息发送给客户机,好像负载均衡服务器就是实际的内容服务器

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

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

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\

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

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

591***rm-rf/bt/*

简述一下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、LVS:模式、原理、区别

DR模式:直接路由模式,只有进站的数据流量经过分发器,因为它修改的是目的mac地址,利用二层功能的mac地址。

NAT模式:网络地址转换模式,进站出站的数据流量都经过分发器,它修改的是IP地址,利用三层功能

tun模式:隧道模式

full-nat模式:双向转换模式

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分钟左右,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临时重定向

nginxconnectfull如何发现和解决

如何发现: 查看错误日志,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,搜索【\

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结构,集合起来叫副本集,每个叫一个分片,

  1. 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写

1703张武松面试总结

老闫公司工作情况-别人问你需求你要问场景-给各种银行做软件的--系统工程师-开始什么都不让干看业务级的文档

接电话处理内部工单(事件单)查数据库写质检单告诉他们原因

其他部门系统会负责去数据库取数据awk格式化输出复制粘贴或弄成excel发给人家

问题:victrl+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\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

4、在linux系统中,一般都会有swap内存,你觉得使用swap内存有什么好处,swap内存才会被使用?你觉得在生产环境中要不要用swap内存?

swap的好处是防止内存溢出 当内存不够时会使用 生产环境中是需要使用swap内存的

5、服务器需要监控哪些项目?凭借这些项目如何判断服务器的瓶颈?

•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指定轮询的权重,权重越大,被调度的次数越多

8、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\ \$serviceservice_namestart \$serviceservice_namestop \$servicesshdrestart/status/reload

\CentOS7\ \$systemctlstartservice_name \$systemctlstopservice_name \$systemctlrestart/status/reloadsshd

自启动

\CentOS6\ \$chkconfigservice_nameon/off

\CentOS7\ \$systemctlenableservice_name \$systemctldisableservice_name

服务一览

\CentOS6\ \$chkconfig--list

\CentOS7\ \$systemctllist-unit-files \$systemctl--typeservice

强制停止

\CentOS6\ \$kill-9\

\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下

foriin`find/test-typef-size+100k`;docd/test&&mv\$i/tmp;done

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

find/-name\"*.log\"-ctime+3-execrm-f{}\;

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

#vimiptables.sh

iptables-tfilter-IINPUT-ptcp!--dport80-jDROP

中盾面试题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系统统计服务器服务连接数命令?

netstat-n|awk\'/\^tcp/{++S\$NF}END{for(ainS)printa,S\a}\'或是netstat-nat|grepESTABLISHED|wc-l

  1. 5.虚拟化平台中使用模板克隆方式,复制一台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网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应

9.请使用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个月之后才可以入职,要仔细的审查学历,个人信息之类的东西,这个主管主要强调了他们属于公安部门,查的比较严。在我离开之后还打电话问了我的年龄的事情(简历上和身份证不符)。

亚信面试题MZD

  1. 第一题:数据库

  2. 账单表:acc_bill(字段类型:varchar2)

  3. ------------------------------------------------------------------------------------------------------------------------

  4. 账户编号(acct_id)|账单编号(bill_id)|账单状态(bill_sts)|账单月(bill_mon)|

  5. _____________________________________________________________________________

  6. 账单明细表:acc_bill_dtl(字段类型:varchar2)

  7. _________________________________________________________________________________

  8. 账单编号(bill_id)|账单科目编(fee_item_id)|账单金额(amount)|税率%(tax_rate)|

  9. __________________________________________________________________________________

  10. 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;

  1. 第二题:Unix命令

  2. 文件名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. 第三题:脚本语言

  2. 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:-9920

#description:Oooothisismynginxstartupscript

PROG=\"/usr/local/nginx/sbin/nginx\"

PIDF=\"/usr/local/nginx/logs/nginx.pid\"

case\"\$1\"in

start)

\$PROG

;;

stop)

kill-sQUIT\$(cat\$PIDF)

;;

restart)

\$0stop

\$0start

;;

reload)

kill-sHUP\$(cat\$PIDF)

;;

*)

echo\"Usage:\$0{start|stop|restart|reload}\"

exit1

esac

exit0

#chmod+x/etc/init.d/nginx

#chkconfig--addnginx

  1. 第五题:自我阐述

  2. 请自我阐述一到两项自己的技能或者比较精通的技术;

  3. 北京得意音通技术公司面试题MZD

一、Linux操作系统知识

1.Linux开机启动流程详细步骤是什么?系统安装完,忘记密码如何破解?

centos6:

1.post加电自检 2.MBR引导 3.GRUB引导 4.读取grub.conf文件 5.启动内核 6.加载伪文件系统(ramdisk) 7.启动init进程 8.执行/bin/login

centos7:

1.uefi或BIOS初始化,开始post开机自检 2.加载mbr到内存 3.GRUB阶段 4.加载内核和inintamfs模块

5.内核开始初始化,使用systemd来代替centos6以前的init程序 6.Systemd执行multi-user.target下的getty.target及登录服务 7.systemd执行graphical需要的服务

centos6:忘记密码

a、重启系统,在GRUB界面,选取忘记密码的系统,按e键进入编辑模式 b、选项Kernel.....按e键进行编辑

c、在编辑界面rhgbquiet后加空格,然后输入\"single\"或\"1\"回车 d、按b启动进入单用户模式

f、进入系统后passwd回车输入新密码(如果有selinux,先暂时关闭setenforce0)

2.企业中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命令及文件操作

1.在/tmp/目录下创建test.txt文件,内容为:Hello,World!,用一个命令写出来。

答:echo\"Hello,World\"\>/tmp/test.txt

2.给test.txt文件除所有者之外增加执行权限,最终以数字写出文件的权限。

答:chmod655test.txt##普通文件默认权限为655

  1. 3.用vi命令编辑test.txt,如何跳转到末行,首行、行首、行末,如何在光标行下行插入,如何复制5行,删除10行,查找dear的字符、把dear替换为dear.com

答:末行:G 首行:gg 行首:\^ 行尾:\$ 光标下插入一行:o 复制5行:5yy(包括当前行) 删除10行:10dd(包括当前行) 替换::%s/dear/dear.com/g

  1. 4.查找linux系统下以txt结尾,30天没有修改的文件大小大于20K同时具有执行权限的文件并备份到/data/backup/目录下。

答:find/-name\"*txt\"-mtime+30-typef-size+20k-perm655-execcp{}/data/backup/\;

5.当前test.txt所属的用户为root,组为abc,请将test.txt使拥有者为abc,组为root,写出命令。

答:chownabc.roottest.txt##或者chownabctest.txt,chgrproottest.txt

6.每次开机在/tmp目录下创建一个当天的的日期文件夹(提示:当前日期表示的方法为:`date+%Y%m%d`)

答:vi/etc/rc.local

mkdir-p/tmp/`date+%Y%m%d`

chmod777/etc/rc.d/rc.local

7.如何查看文件内容,命令有哪些?查看文件第1行到3行,查看文件最后一行。

答:cat、more、less,

sed\'1,3p\'test.txt或者head-3test.txt,

最后一行:tail-1test.txt

8.查看linux服务器IP的命令,同时只显示包含ip所在的行打印出来。

答:ifconfig, ifconfig|grep\"inetaddr:\"

9.将普通用户test加入root组的命令是?

答:usermod-G root test

  1. 10.poc-data目录有10个子目录,子目录名为1000~1010,其中各包含不同数量的文件。请编写一段shell脚本计算出各个子目录下的文件数量并打印出来。

foriin{1000..1010}

do

echo\"\$i的文件数量:\$(ls-1\$i|wc-l)\"

done

11.psaux会列出进程的以下属性,请解释每个属性的含义。

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:进程文件,进程名

12.解释一下符号链接(Symboliclink)和硬链接(Hardlink)的区别。

硬链接不会创建新的inode,只是给源文件多加了一个文件名 硬链接不能跨分区 硬链接删除源文件后,另一个文件还能用

软链接创建新的inode,相当于重新创建了一个文件 软链接可以跨分区 软链接删除源文件后,链接文件不能再使用

2.Linux网卡配置文件路径是什么?要使服务器上外网,必须满足的条件有哪些?需要配置什么?

答案: 网卡配置文件路径:/etc/sysconfig/network-scripts/ifcfg-eth*(*代表数字)

要上外网需要:能够链接internet的网线(或无线)、有网卡

     需要配置:IP、netmask、gateway、dns(自动或手动都ok,服务器一般自动)

4,请写出568A与568B的线序

答案(1)568A线序排列:白绿、绿、白橙、蓝、白蓝、橙、白棕、棕。

(2)568B线序排列:白橙、橙、白绿、蓝、白蓝、绿、白棕、棕。

5,网络拓扑设计:

(1)有一家集团公司,其资金需要在内部建立起一套完成集团内部资金调度的MIS系统。

(2)该系统在结构上有C/S架构的应用模式,又有B/S架构的应用模式。

(3)该系统的管理人员在资金部内部,都在总部大楼一层内,主要使用C/S架构的软件部

分。该系统面对的集团很多下属单位,分布在全国各地,使用浏览器访问总部。

(4)该系统在总部同银行进行连接、实时进行数据交换

如题:请您根据以上事实,对其网络、设备方案进行设计,并绘制出网络拓扑的草图,然后对其进行描述。MIS:主要指的是进行日常事务操作的系统。这种系统主要用于管理需要的记录,并对记录数据进行相关处理,将处理的信息及时反映给管理者的一套网络管理系统。

C/S:指Client/Server(客户端/服务器)架构。

B/C: 指Browser/Server(浏览器/服务器)架构。!(media/image1.png)

6,PAT和NAT分别代表什么?

NAT:网络地址翻译在内部网络中使用内部地址,通过NAT把内部地址翻译成合法的IP地址,在Internet上使用。其具体的做法是把IP包内的地址域用合法的IP地址来替换

PAT:属于Nat的一种,是把内部地址映射(https://baike.baidu.com/item/%E5%9C%B0%E5%9D%80%E6%98%A0%E5%B0%84)到外部网络的一个IP地址(https://baike.baidu.com/item/IP%E5%9C%B0%E5%9D%80/150859)的不同端口上。

7,在路由器中,使用什么命令查看路由器的路由表?

\root\@localhost\~\# oute print

8,简述tcp链接三次握手的过程。

  第一次握手:建立连接时,客户端(https://baike.baidu.com/item/%E5%AE%A2%E6%88%B7%E7%AB%AF)发送syn(https://baike.baidu.com/item/syn)包(syn=j)到服务器(https://baike.baidu.com/item/%E6%9C%8D%E5%8A%A1%E5%99%A8),并进入SYN\_SENT(https://baike.baidu.com/item/SYN_SENT)状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。

第二次握手(https://baike.baidu.com/item/%E7%AC%AC%E4%BA%8C%E6%AC%A1%E6%8F%A1%E6%89%8B):服务器(https://baike.baidu.com/item/%E6%9C%8D%E5%8A%A1%E5%99%A8)收到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/%E5%AE%A2%E6%88%B7%E7%AB%AF)收到服务(https://baike.baidu.com/item/%E6%9C%8D%E5%8A%A1)器的SYN+ACK包,向服务器(https://baike.baidu.com/item/%E6%9C%8D%E5%8A%A1%E5%99%A8)发送确认包ACK(ack(https://baike.baidu.com/item/ack)=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED(https://baike.baidu.com/item/ESTABLISHED)(TCP连接成功)状态,完成三次握手。

9,简述二层交换机和三层交换机的区别。

二层交换机和三层交换机的区别有以下5点:

1、工作层级不同二层交换机工作在数据链路层,三层交换机工作在网络层,三层交换机不仅实现了数据包的高速转发,还可以根据不同网络状况达到最优网络性能。

2、原理不同二层交换机的原理是当交换机从某个端口收到一个数据包,它会先读取包中的源MAC地址,再去读取包中的目的MAC地址,并在地址表中查找对应的端口,如表中有和目的MAC地址对应的端口,就把数据包直接复制到这个端口上。三层交换机的原理比较简单,就是一次路由多次交换,通俗来说就是第一次进行源到目的的路由,三层交换机会将此数据转到二层,那么下次无论是目的到源还是源到目的都可以进行快速交换。

3、功能不同二层交换机基于MAC地址访问,只做数据的转发,并且不能配置IP地址,而三层交换机将二层交换技术和三层转发功能结合在一起,也就是说三层交换机在二层交换机的基础上增加了路由功能,可配置不同vlan的IP地址,vlan之间可通过三层路由实现不同vlan之间通讯。

4、应用不同二层交换机主要用于网络接入层和汇聚层,而三层交换机主要用于网络核心层,但是也存在少部分三层交换机用于汇聚层的现象。二层交换机用于小型局域网,三层交换机用于大型局域网。

5、支持的协议不同二层交换机支持物理层和数据链路层协议,如以太网交换机,二层交换机和集线器HUB的功能差不多,而三层交换机支持物理层、数据链路层及网络层协议。

11,什么可以实现动态IP地址分配?

DHCP可以实现动态IP地址分配。

12,问:什么协议,是最为普遍的一种内部协议,一般称为动态路由信息协议?

RIP协议

  1. 13,请写出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参考模型的最底层。物理层的主要功能是利用物理传输介质为数据链路层提供物理连接,以便透明的传送比特流。

数据发送时,从第七层传到第一层,接收数据则相反。

上三层总称应用层,用来控制软件方面。下四层总称数据流层,用来管理硬件。

数据在发至数据流层的时候将被拆分

在传输层的数据叫段 网络层叫包 数据链路层叫帧 物理层叫比特流

14,已知某一主机的IP地址为201.103.136.184,其子网掩码为255.255.255.192,则该主机是在 C 类网络中,主机所在子网最多允许有 62 台主机。

16,简述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状态,完成三次握手.

完成三次握手,客户端与服务器开始传送数据

17,通过tcpdump查看网卡的Ping包?

#yum -y install tcpdump

#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包未能到达此主机,需要检查链路或者前端防火墙的策略。

18,Linux如何挂载windows下的共享目录

# mkdir /windows #创建挂载目录windows

# mount -t cifs -o username=\'Bob\',password=\'123456\' //10.18.41.203/workspace /windows

# df -h #查看是否成功挂载

参数说明 : username , Window 系统登录用户名

password : Window 系统登录密码

//192.168.0.102/Share : 设置Window共享目录的路径 地址格式是 \\你的IP\你的共享文件夹

/usr/local/bin/code : 挂载到 Linux 下的那个目录

通过修改fstab文件,支持开机自动挂载

# vim /etc/fstab

//10.18.41.203/workspace /windows cifs auto,username='echo',password='123456' 0 0

19,linux下如何添加路由

使用route -n 查看网关信息,或者 netstat -rn查看路由

永久生效

# vim /etc/sysconfig/network-scripts/ifcfg-ens33

GATEWAY=10.18.41.1

临时生效

# route add default gw 10.18.41.2

删除路由表:

# route del default gw 10.18.41.1

20,linux下如何改IP,主机名,DNS

修改ip地址-- 即时生效: # ifconfig ens33 10.18.41.5 netmask 255.255.255.0

重启生效:修改 # vim /etc/sysconfig/network-scripts/ifcfg-eth0 IPADDR=10.18.41.2

---修改host name-- 即时生效: # hostname 主机名

重新进入:# hostnamectl set-hostname 主机名

---修改dns---

  1. 修改# vim /etc/resolv.conf #修改后即时生效,重启同样有效

  2. 21,在命令行下发一邮件,发件人:<[email protected]>,收信人:abc\@xyz.com

echo \"hello\"|mail -s \"test\" abc\@xyz.com -- -f 123\@abc.com

  1. 22,请写出ip10.0.14.70mask255.255.255.192的网络地址和广播地址。并写下命令,在linux系统上配置10.0.14.65作为默认网关

网络地址:10.0.14.64 广播地址:10.0.14.127

sudo route add default gw 10.0.14.65

23,问:使用tcpdump监听TCP80端口来自192.168.0.1的所有流量,请写出命令。

\$ tcpdump -i ens33 -nnA 'port 80 and src host 192.168.0.1\'

24问:说出你知道的几种LINUX/UNIX发行版本

Linux主要的几种发行版本:

1、RedHat系列:RHEL、CentOS、Oracle linux。\
2、SUSE 3、Ubutun 4、debian

Unix主要的几个发行版本:

1、Solaris 2、HP-UX 3、AIX

25问:请简单描述vi编辑器的使用:

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 离开不保存

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

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

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

27如何使用rpm安装一个有依赖的包?

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

28问:如何查看当前LINUX系统的状态:CPU使用内存使用负载情况以及网络状态

可以用TOP工具实时动态查看CPU使用率、内存使用负载情况,用ps命令查看当前时刻的CPU使用率、内存使用负载情况。

可以用netstat命令查看网络状态,netstat命令用来打印网络连接状况、系统所开放端口、路由表等信息;可以用ifconfig这个命令可以用于网络接口的启动/停止,更改设置和表示网络状态,在不添加任何参数的情况下,ifconfig可以表示网络接口的状态;可以用ss命令可以用来获取socket统计信息,它可以显示和netstat类似的内容。但ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信息,而且比netstat更快速更高效。

  1. 29:/proc/sys子目录的作用?

  2. /proc/sys包括所有的内核参数信息,可以暂时修改参数(重启后就无效),优化性能。

  3. 30:一个EXT3的文件分区,当使用touchtest.file命令创建一个新文件时报错,报错的信息是提示磁盘已满,但是采 用df-h命令查看磁盘大小时,只使用了60%的磁盘空间,为什么会出现这种情况,说说你的理由?

答:1:是inode(索引节点)耗尽,因为linux的文件inode是有数量限制的。

2:磁盘配额问题。

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

netstat -nlp | grep 100

32: linux系统启动过程?

1:按下电源 2:BIOS自检 3:系统引导

4:启动内核 5:初始化系统

33问:请简述Linux系统的开机顺序

第一步:当然是加电了

第二步:加载BIOS设置,选择启动盘。

第三步:加载磁盘中MBR中的grub

第四步:加载Linux内核系统到内存当中,运行超级进程/sbin/init进程。

第五步:加载配置文件。

第六步:加载内核模块,

第七步:完成相应的初始化工作和启动相应的服务。

第八步:启动init.d下的系统进程

第九步:出现登录系统的画面。

至此,Linux开启启动完成。

34问:Linux开机启动流程详细步骤是什么?

第一步:当然是加电了

第二步:加载BIOS设置,选择启动盘。这是因为因为BIOS中包含了CPU的相关信息、设备启动顺序信息、硬盘信息、内存信息、时钟信息、PnP特性等等。在此之后,计算机心里就有谱了,知道应该去读取哪个硬件设备了。在BIOS将系统的控制权交给启动硬盘第一个扇区之后,就开始由Linux来控制系统了。

第三步:加载磁盘中MBR中的grubMBR(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开启启动完成。

35问:删除/app/logs目录下7天前的日志

find /app/logs -mtime +7 -exec rm -rf {} \;

36问:磁盘空间满了,删除一部分nginx日志后,但是磁盘空间还是满的,为什么?

未释放磁盘空间原因:在Linux或者Unix系统中,通过rm或者文件管理器删除文件将会从文件系统的目录结构上解除链接(unlink).然而如果文件是被打开的(有一个进程正在使用),那么进程将仍然可以读取该文件,磁盘空间也一直被占用。而我删除的是nginx的log文件删除的时候文件应该正在被使用\
解决方法:重启nginx服务,或者用\>/opt/nginx/logs/nginx.log清空日志文件,而不是直接删除。

37问:如何配置linux机器免密码登录?请写具体命令

两台先关闭防火墙

A主机

ps -ef | grep sshd

ssh-keygen -t rsa -P

cd /root/.sshcp id_rsa.pub authorized_keys

拷贝到B主机 scp authorized_keys hadoop\@192.168.1.111:/home/hadoop/.ssh

ps -ef | grep sshd

ssh 192.168.3.159 date

配置好了A机登录B机不需要密码的方式。

38问:在linux系统中,如何在文本里进行复制、粘贴、删除行、删除全部,按行查找和按字母查找

y #复制 yy 3yy yG (以行为单位) d #删除 dd 3dd (行为单位)

p #粘贴 D #从光标处删除到行尾

dG #删除全部 /string #查找字符

:行号 #查找行

39问:请写出一条命令,将当前目录中创建时间超过七天的文件压缩成gz格式

find / -ctime +7 -exec gzip {} \;

40问:如何在命令行查看一台linux机器的cpu、内存、SWAP分区信息?

cpu(https://www.baidu.com/s?wd=cpu&tn=SE_PcZhidaonwhc_ngpagmjz&rsv_dl=gh_pc_zhidao):cat /proc/cpu(https://www.baidu.com/s?wd=cpu&tn=SE_PcZhidaonwhc_ngpagmjz&rsv_dl=gh_pc_zhidao)info 内存:free -m swap(https://www.baidu.com/s?wd=swap&tn=SE_PcZhidaonwhc_ngpagmjz&rsv_dl=gh_pc_zhidao)分区信息:cat /proc/swap(https://www.baidu.com/s?wd=swap&tn=SE_PcZhidaonwhc_ngpagmjz&rsv_dl=gh_pc_zhidao)s

41问:查看服务器当前正在连接IP列表的命令是?

netstat -an 查看所有信息用:top

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

硬件配置1:/boot 200M /swap 64G /1984G

硬件配置2:/boot 200M /swap 256G /5888G

其他分区根据生产环境配置

43问:简述raid0、raid1、raid5三种工作模式的特点分区的方式:

RAID 0:连续以位或字节为单位分割数据,并行读/写于多个磁盘上,因此具有很高的数据传输率,但它没有数据冗余,因此并不能算是真正的RAID 结构。RAID 0 只是单纯地提高性能,并没有为数据的可靠性提供保证,而且其中的一个磁盘失效将影响到所有数据。因此,RAID 0不能应用于数据安全性要求高的场合。

RAID 1:它是通过磁盘数据镜像实现数据冗余,在成对的独立磁盘上产生互为备份的数据。当原始数据繁忙时,可直接从镜像拷贝中读取数据,因此RAID 1 可以提高读取性能。RAID1 是磁盘阵列中单位成本最高的,但提供了很高的数据安全性和可用性。当一个磁盘失效时,系统可以自动切换到镜像磁盘上读写 ,而不需要重组失效的数据。简单来说就是:镜象结构,类似于备份模式,一个数据被复制到两块硬盘上。

RAID5:分布式奇偶校验的独立磁盘结构,它的奇偶校验码存在于所有磁盘上,任何一个硬盘损坏,都可以根据其它硬盘上的校验位来重建损坏的数据。支持一块盘掉线后仍然正常运行。

44问:如何添加禁止登录的用户

# useradd user -s /sbinlogin

45问:Linux查看文件的命令是:

cat 由第一行开始显示内容,并将所有内容输出

tac 从最后一行倒序显示内容,并将所有内容输出

more 根据窗口大小,一页一页的现实文件内容

less 和more类似,但其优点可以往前翻页,而且进行可以搜索字符

head 只显示头几行 tail 只显示最后几行

nl 类似于cat -n,显示时输出行号 tailf 类似于tail -f

grep 针对文件内容进行过滤

46修改完文件后,保存修改并退出的命令是:

wq

47问:打印当前工作目录的Linux命令是:

pwd

48问:用于当前扩展或减少逻辑卷大小的命令分别是:

lvreduce -L

49问:请用Liunx命令行实现:查看/var/log目录下文件数:

ls /var/log/ |wc -l

  1. 50问:在Linux系统中,要列出当前运行的是哪些进程,用什么命令?如果要对进程进行监控,需要使用什么命令?杀死进程的命令是?VSZ、RSS分别代表什么意思?如果要对进程进行监控,需要使用什么命令?

ps aux kill VSZ: 占⽤用虚拟内存 RSS: 占⽤用实际内存 驻留内存 top

51问:如何修改Linux内核参数?

Vim /etc/sysctl.conf

52问:Linux文件系统XFS格式,应该选择哪种分区?

fdisk

53问:14日下午2点date+%Y%M%D%H%M输出的时间是什么?

18年10月14日2点10月

54问:能够查看储存空间的命令是?

Free -m

  1. 55问:请写出下面对应的bash指令。

  2. 56查看文件修改时间指令:

date

57查看文件最后10行内容:

tali

58实时查看日志文件:

tali -f

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

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

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

crontab -e

0 */2 * * * /data/scripts/back.sh

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

(Centos6)service nginx status

(Centos7) systemctl status nginx,6的方法也适用

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

ADMIN管理机上查看APP1,APP2客户机的内存信息。

70问:CPU利用率和CPU负载的区别

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的利用率是高是低,跟后面有多少任务在排队没有必然关系。

MBR是什么?有什么用?

1.MBR,全称为 Master Boot Record,即硬盘的 主引导记录。

为了便于理解,一般将MBR分为广义和狭义两种:广义的MBR包含整个扇区( 引导程序、分区表(https://baike.sogou.com/lemma/ShowInnerLink.htm?lemmaId=4440362&ss_c=ssc.citiao.link)及分隔标识),也就是上面所说的 主引导记录;而狭义的MBR仅指 引导程序而言。

硬盘的0柱面、0磁头、1扇区称为主引导扇区(https://baike.sogou.com/lemma/ShowInnerLink.htm?lemmaId=8225075)(也叫主引导记录MBR)。它由三个部分组成,主引导程序、硬盘分区表(https://baike.sogou.com/lemma/ShowInnerLink.htm?lemmaId=268563)DPT(Disk Partition(https://baike.sogou.com/lemma/ShowInnerLink.htm?lemmaId=10839122&ss_c=ssc.citiao.link) table)和硬盘有效标志(55AA)。在总共512字节的主引导扇区(https://baike.sogou.com/lemma/ShowInnerLink.htm?lemmaId=53419296)里 主引导程序(boot loader)占446个字节,第二部分是Partition table区(分区表),即DPT,占64个字节,硬盘中分区有多少以及每一分区的大小都记在其中。第三部分是magic number,占2个字节,固定为55AA。

2.MBR的作用

计算机在进行主板BIOS检测之后,就会将MBR扇区整个读取到内存中,然后执行权交给内存中MBR扇区的引导程序。系统下一步就会判断读入内存的MBR扇区的最后两个字节是否为"55 AA",不是则报错。

如果是"55 AA"接下来引导程序会到分区表中查找是有活动分区,若有活动分区,则判断活动分区的引导扇区在磁盘中的地址,如信息正确,引导权就交给这个扇区去引导操作系统了,MBR引导程序的使命就光荣完成。

在linux系统中如何备份?

1)使用fdisk -l 确定MBR位置 2)备份MBR dd if=/dev/sda1 of=/root/mbr bs=512 count=1 3)恢复MBR dd if=/root/mbr of=/dev/sda1 bs=512 count=1

4)恢复分区表 dd if=/root/mbr of=/dev/sda1 bs=512 skip=446 count=66  注:mbr大小512 所以bs=512 count=1 bs=512 skip=446 count=66 用来确定分区表在备份文件中的位置

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

chkconfig -level 5 nfs on

74问:如何查看当前登陆用户?同时知道自己使用的账户名?

w

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

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

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

mkswap /dev/sda2 mkfs.xfs -f /dev/sda3 Vim /etc/fstab

/dev/sda2 swap swap default 0 0

/dev/sda3 /tmp/sda3 xfs defaults 0 0

Mount -a Swapon -a df -Th和swapon -s 查看

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

查看:ps -ef |awk \'\$3==105{print \$0}

结束方法一:kill 105

只适用于守护进程,守护进程的会话,因为没有控制终端,所以就没有前后台进程组之分,会话首进程同时也是进程组组长.它被KILL掉会向该组每个进程发送SIGHUP,导致组中进程被中止.

结束方法二For pid in 'ps -ef |awk \'\$3==105{print \$2}\' do Kill -9 \$pid

Done

  1. 78问:在使用手工的方法配置网络时,可通过修改_/etc/hostname_文件来改变主机名;要配置该计算机的域名解析客 户端,需配置/etc/resolv.conf_文件。

  2. 79.问:将/home/data/wwwroot目录做归档压缩,压缩后生成webs.tar.gz文件,并将此文件保存到/home目录下,实 现此任务的tar命令___。

cd /home

tar -czf webs.tar.gz /data/wwwroot

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

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

81.查看文件常用命令?解压和压缩文件命令?

cat head tail less tar xf 压缩包名字 tar -cf/-czf/-cjf/-cJf 压缩包名字 压缩的目标目录

82.对raid0和raid5有何认识

raid0:磁盘利用率100% 不安全 读写性能超高 不安全的原因是: 两块盘分别存储文件的上半部分和下半部分

raid5:磁盘利用率75% 安全且具备读写性能 能够支持热插拔

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

 chattr +i /etc/passwd 同时,创建一个普通登录用户,并取消直接root登录

 # useradd \'username\' # passwd \'username\'     # vi /etc/ssh/sshd_config

  PermitRootLogin no         #取消root直接远程登录

其实,执行上面的chattr +i命令时,已经把这个文件都变成不可写的了,就算看了文件属性上写的是root用户可读写,此文件还是无法被root用户写。所以如果想添加新用户,必须先把这个文件上的限制减掉

  1. **85.Linux6.X如何修改ftp用户目录路径,以及修改时应当注意的事项?\

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

注意事项:权限等

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

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。组成所有的排列后再去 掉不满足条件的排列。

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

  2. 88队列的特性先进先出。

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

  4. 90Python写过什么脚本

答: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\')

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

答: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表中,可以查看这个库表得到详细的数据校验信息。

主从数据修复

95 AWS每月的账单开出后,给使用方多长时间来进行支付?

AWS的付费机制是:只需要为已使用的资源付费,并且AWS会在次月3号左右给出本月的账单,付款时间为30天;

你这边的问题应该是没有创建资源的权限,应该是信用卡或个人认证信息没有补充完成,可以后台提工单申请提高资源限额。

96阿里云,AWS相关的功能特性

AWS的优点:

AWS的云服务还是很成熟的,譬如大数据计算,开放存储这些服务的性能都要比阿里云好很多,在全世界各地使用访问都很快,成本上相对于阿里云来说确实花费多一点,AWS是国际化的,有七八种语言的客户服务,并且服务团队在工作日反应还算是很迅速的。

我先说说我感受最深的吧,为什么说AWS云服务很成熟,我觉得就可以从VM部署这一点看出来,速度比阿里云快很多(同样的条件下),微软的云服务和AWS和阿里云我都或多或少的使用过,如果不是因为AWS入门门槛太高我还会继续使用下去的,如果一个公司或者团队需要国际化,把服务全都放在AWS上是特别好的,在中国以内的话体验最好的其实就是阿里云了。

通用型:提供固定性能,对CPU性能不会产生突然并发的应用程序。如一般的web应用chengxu

计算优化:最高等级的性能,运行计算密集型应用程序。如游戏服务器

内存优化:可为高吞吐量的应用程序,如数据库,提供大容量内存。

存储优化:提供极高的磁盘I/O性能,适合对那些对磁盘访问频繁的应用程序。

CPU实例:高度并行化的应用程序(包括 3D 图形,HPC渲染和媒体处理应用程序)提供具备高CPU和网络性的图形处理能力。

阿里云的优点:

首先它易于国人使用,支付宝付款,可以开子账号团队协作,安全关把关也还算是可以的,其次就是BGP线路,确实名不虚传(但是国内区域在国外访问还是不咋的呀),阿里云确实贴合国人的角度突出了按需付费的这个特性,阿里云服务对于国外的亲们来说可能就是需要多地跑的事情集中在了一起而已,很多人也很喜欢,对于中国人来说,阿里云可能就是并不感冒了,技术上成熟度你别说还真的次于AWS(更多的可能是经验)

架构灵活

双机热备架构

系统工作时主节点(Master)和备节点(Slave)数据实时同步,主节点故障时系统自动进行秒级切换,备节点接管业务,全程自动且对业务无影响,主备架构保障系统服务具有高可用性。

集群架构

集群(Cluster)实例采用分布式架构,每个节点都采用一主一从的高可用架构,能够进行自动容灾切换和故障迁移。多种集群规格可适配不同的业务压力,可按需扩展数据库性能。

数据安全

数据持久化存储

采用内存加硬盘的混合存储方式,在提供高速数据读写能力的同时满足数据持久化需求。

备份及一键恢复

每天自动备份数据,数据容灾能力强,免费支持数据一键恢复,有效防范数据误操作,将可能发生的业务损失降到最低。

多层网络安全防护

VPC私有网络在TCP层直接进行网络隔离保护。

DDOS防护实时监测并清除大流量***。

持1000个以上IP白名单配置,直接从访问源进行风险控制。

支持密码访问鉴权方式,确保访问安全可靠。

深度内核优化

阿里云专家团队对源码Redis进行深度内核优化,有效防止内存溢出,修复安全漏洞,为您保驾护航。

高可用性

主从双节点

标准版与集群版的双副本实例均有主从双节点,避免单点故障引起的服务中断。

自动检测与恢复

自动侦测硬件故障,发生故障时能够进行故障转移,在数秒内恢复服务。

资源隔离

实例级别的资源隔离可以更好地保障单个用户服务的稳定性。

弹性扩展

数据容量扩展

云数据库Redis版支持多种内存规格的产品配置,可根据业务量大小在线升级内存规格,无需中断服务,不影响业务。

业务形态扩展

支持单节点缓存架构和双节点存储架构,适配不同业务场景。标准版和双节点版之间能够灵活变配。

性能扩展

支持集群架构下弹性扩展数据库系统的存储空间及吞吐性能,突破海量数据高QPS性能瓶颈,轻松应对每秒百万次的读写需求。

智能运维

监控平台

提供CPU利用率、连接数、磁盘空间利用率等实例信息实时监控及报警,随时随地了解实例动态。

可视化管理平台

管理控制平台对实例克隆、备份、数据恢复等高频高危操作可便捷地进行一键式操作。

数据库内核版本管理

主动升级,快速修复缺陷,免去日常版本管理苦恼;优化Redis参数配置,最大化利用系统资源。

97在线测速网站

360 腾讯 金山

98 nginx的优化选项?

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

  1. zabbix都监控什么,有自己添加的监控项吗?监控哪些应用程序和服务,怎么监控nginx的\>日志,怎么监控Tomcat,具体是Tomcat调优的问题,还是后端Java报错socket的问题。监控中具体用到哪些模块,当监控服务出现一些问题怎么处理,比如MySQL的复制状态或者是gps过高,nginx报错的一些日志

  2. 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\ 监控程序端口启用

下的www.文件权限改为只有主用户有执行权限的有(A)

A.chmod 400/www B.chmod001 /www C.chmod D.chmod a-x,g-x,u-x /www

以下函数中,和其他函数不属于一类的是___EF__?(E)

A. read B.pread C.write D.pwrite E.fseek F.lseek

查看内存使用率,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

简述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状态,完成三次握手.完成三次握手,客户端与服务器开始传送数据

1=5,2=15,3=215,4=2145那么5=?

1、"脑筋急转弯+逻辑推理"

因为已知5=1,所以1=5;因为每个等式左边数同时还代表了右边结果的位数,所以推断所求数字必为5位数)

2、"谐音"(个人感觉有点扯,但勉强可以解释)

1个字 5(我) 2个字 15(你我) 3个字 215(爱你我) 4个字 2145(爱你是我) 5个字 21945(爱你就是我)

3、"数字推理":对于数学推理由A→B 并不能说B→A。反向推理的1,首先否定。

5是公有的,因此不必考虑.直接看5前面的数字

1=0 2=1 3=21 4=214 5=?

将等号后每个数位上的数字相加,分别为:0、1、3、7,按照20、21、22的形式递增,不完全归纳法推断应为2的3次方即8,故下一数字为7+8=15。15-4-1-2=8,因从第二个数开始,依次在左边加以2的次方为值的数。并且如果为偶次方,则数值越大越靠近5;如果为奇次方,则数值越大越远离5。所以5=82145。

使用数学推理的算法不同,答案不同,方法较多。合理解答即可。

  1. A、B、C三个人是好朋友,他们中间一个人开了一家商店,一个人考上了重点大学,一个人参军了。此外他们号知道以下条件:C的年龄比士兵的大;大学生的年龄比B的小;A的年龄和大学生的年龄不一样。请推断出三个人中谁是商人?谁是大学生?谁是士兵?

解析:以上三个条件分别设为xyz;由yz可知AB都不是大学生,所以C为大学生。所以y的条件可变更为:C的年龄比B的小;结合x,可知B不是士兵,所以B为商人。综上:商人是B,大学生是C,士兵是A。