- 软链接和硬链接的区别:
硬链接不会创建新的inode,只是给源文件多加了一个文件名 软链接创建新的inode,相当于重新创建了一个文件
硬链接不能跨分区 软链接可以跨分区
硬链接删除源文件后,另一个文件还能用 软链接删除源文件后,链接文件不能再使用
1.创建命令不同
ln -s /root/ruan.txt /root/桌面/ ln /root/ying.txt /root/桌面/
2.软链接创建时必须使用绝对路径(链接和源文件在同一目录下,可以相对路径)
硬链接创建时可以绝对路径也可相对路径
3.软链接的源文件不可以剪切,重命名,删除
硬链接的源文件可以剪切,重命名,删除
4.软链接的链接文件权限永远是777,即使将链接文件的权限进行了修改,也不会发生变化,变得是源文件的权限
硬链接的链接文件权限永远和源文件相同
5.软链接的链接文件的inode号和源文件不同
硬链接的链接文件的inode号和源文件相同
6.软连接可以对目录操作
硬链接不支持对目录操作,是针对于上层来说,底层是可以针对于目录做硬链接的,通过代码就可以实现
7.软连接可以跨文件系统
硬链接不可以跨文件系统,因为硬链接是存放在源文件的同一个block上面的
8.软链接可以跨越文件系统,且可以针对于目录做软链接
硬链接可以缩短文件路径;且可以防止重要的文件误删除
- 保存当前磁盘分区的分区表,dd命令是个强大的命令,在复制的同时进行转换,请写出具体命令
Dd if=/dev/sda of=./mbr.txt bs=1M count=512
- 6块300G的硬盘做raid5,新的设备容量是多大?
由于RAID5磁盘阵列兼顾了安全性和速度,所以有一块磁盘是要被用作安全备份区的,所以6块300G的磁盘实际使用到的只有5块5*300=1500G
显示网络接口常见命令是:ifconfig或者ipa;查看服务端口的命令是:ss-anptul
- 假设服务器具有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
- 问:请简要描述Linux系统下源代码编译方式安装软件的大致步骤
1.部署基础环境:关闭防火墙;关闭selinux;安装编译器2.下载、解压软件包3、配置安装路径4、编译5、安装
- 问:列出当前系统中所有的网络连接(包含进程名),请写出完整操作命令
netstat-anputl -t TCP -l监听 -a所有 -u UDP -n显示端口号和IPppid
- 实时抓取并显示当前系统中tcp80端口的网络数据信息,请写出完整操作命令
tcpdump -n tcpport80(tcpdump -i ens33 ‘tcp port 80’)
-
问:linux中你常用的系统命令说5个
ls、cat、mkdir、useradd、touch、pwd
-
问:关闭swap分区
Swapoff -a关闭所有的交换分区 swapoff /dev/sde关闭sde交换分区
- 问:系统安全加固
1.密码策略 修改系统的密码策略1)经常修改密码2)使用一些特殊的字符和密码的长度增加密码的难度 3)不要随便告诉他人密码
2.权限ugo锁定系统中不必要的系统用户和组 锁定下列用户,锁定之前备份/etc/passwd和/etc/shadow文件 禁用无关的组 禁止root用户远程登录
3.预防flood攻击linux中预防SYNflood.在/etc/sysctl.conf文件中添加net.ipv4.tcp_syncookies=1
4.加固TCP/IP协议设置/etc/sysctl.conf文件相应权限
5.默认权限与umask不要修改正确的umask值022
6.做任何修改文件的动作先备份再做操作
- psaux中的VSZ代表什么意思?RSS代表什么意思?
VSZ:虚拟内存集,进程占用的虚拟内存空间
RSS:物理内存集,进程战用实际物理内存空间.
- 问:如何查看当前linux系统的状态,如CPU使用,内存使用,负载情况
sar综合命令 mpstat11cpu监测 free-m内存使用 top负载
- 问:显示CPU利用率的命令,查看系统版本的命令
CPU利用率的命令:top或sar
查看系统版本的命令:cat/etc/redhat-release或uname-a
- 问:如何查看当前系统每个ip的连接数
Netstat -n |awk’/^tcp/{print5}’|awk -F: ‘{print1}’|sort| uniq-c
- 问:找出/home下所有7天以前,以.ok结尾的文件列
Find /home -name “*.ok” -mtime +7
- 问:快速生成一个10G的文件
Dd if=/dev/zero of=test bs=10M count=1024
- 问:列出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
- 标准端口的范围是?
1-65535
- 常见协议(http、https、ftp、mysql、redis)默认端口。
http:80https:433ftp:21mysql:3306redis:6379
- 问:硬件性能测试用过什么
对IO进行简单测试dd if=/dev/zero of=testbs=1M count=4096
用top和iostat查看wa%及写硬盘速度top-n1每秒钟的cpu
通过df-h命令查看磁盘情况通过hdparm测试读取速率hdparm-t/dev/sda
linux中几块盘求平均值就是磁盘的平均读取速率
- NAT使用的几种情况:
1.连接到INTERNE,但却没有足够的合法地址分配给内部主机; 2.更改到一个需要重新分配地址的ISP; 3.有相同的IP地址的两个INTRANET合并;4.想支持负载均衡(主机);
- 简述raid0、raid1、raid5三种工作模式的工作原理及特点
raid0:条带卷,利用率100%,相对读写速率最快,相对安全性差。数据随机存入到阵列中的一个磁盘上。同时从2块磁盘读数据;读速度与raid1相差不多;
raid1:镜像卷,使用率50%,相对读写速率一般,相对安全性高。最少2块磁盘组成,数据同时存入到两块磁盘上。同时从2块磁盘读数据;写速度会比raid0慢;
raid5:带奇偶校验的镜像卷,相对读写速率较快,相对安全性高可以添加热被磁盘作为冗余。
- 写出下面服务的常用端口:ftp、http、dns、smtp、pop3、dhcp、tftp、mysql、ssh、https
ftp:21http:80dns:53smtp:25“简单邮件传输协议”pop3:110“邮局协议版本3”
dhcp:客户端是以UDP68服务器是以UDP67tftp:69文件传输协议mysql:3306ssh:22https:443
- 请解释下Telnet和SSH的区别
Telnet:不安全,没有对传输的数据进行加密,容易被监听还有遭受中间人攻击,telnet不能压缩传输数据,所以传输慢;
ssh:对数据进行了RSA加密,安全性高,ssh传输数据是经过压缩的,所以数据传输速度比较快
- Http的错误代码含义(404、410、504、502)?
404(未找到)服务器找不到请求的网页。
410(已删除)如果请求的资源已永久删除,服务器就会返回此响应。
504(网关超时)服务器作为网关或代理,但是没有及时从上游服务器收到请求。
502(错误网关)服务器作为网关或代理,从上游服务器收到无效响应。
- 如何改变Apache端口:
找到Apache安装目录下conf目录下的httpd.conf文件。打开它,找到“Listen”,紧接着Listen的数字就是端口号,默认状态下为“Listen80”。在之前的PHP专题中提到过关于在安装配置Apache时会遇到端口与IISHTTP端口冲突的问题,因为IISHTTP端口默认也为80。那么我们就可以在这里改变Apache的端口,从而避免冲突,比如可以改成:Listen8011。改好之后别忘重起Apache服务使得配置生效。
Vim /etc/httpd/conf/httpd.conf
- 进程和线程的区别?
线程:线程来源与进程,线程模式需要事先开启
线程模式并发量高 相对与进程模式来说没有进程模式稳定 共享内存 不支持php
进程:进程稳定性高;线程稳定性低
进程独占内存;线程共享进程的内存一个进程可以有多个线程;
- Linux中的服务自启动添加方法有哪些。
centos6:有2种1.chkconfig服务名on2.vim/etc/rc.d/rc.local/usr/sbin/服务名start
centos7:有三种1.systemctlenable服务名2.vim/etc/rc.localsystemctlstart服务名
3.vim/etc/fstabsystemctlstart服务名
从本机复制文件、文件夹到服务器并替换同名文件的写法有哪几种?
有两种:1.scp-r源文件路径目标文件ip:目标文件路径2.rsync-avr源文件路径目标文件ip:目标文件路径
-
如何检查Selinux是否开启?getenforce
-
检查服务器是否正常工作的最好办法是?
1.ping服务器ip2.ss-antul|grep服务端口3.psaux|grep服务名4.systemctlstatus服务名
- 问:查看网卡历史流量实时查看网卡流量
网卡历史流量:sar-nDEV-f/var/log/sa/saxx#查看xx日的网卡流量历史
实时查看网卡流量:sar-nDEV15(每间隔1秒刷新一次,共5次)
- 每天中午12点使用tcpdump命令抓取目的端口为tcp80的1000个包输出到当前目录,以当前时间命名。请写出定时任务及脚内容
0 12 * * * bash tcpdump.sh
Vim tcpdump.sh tcpdump -c 1000 tcp dstport80 -w./date+%Y%m%d
- 请使用awk、sed、grep三个命令,请举写出命令语句。
grep‘root’/etc/passwd sed-ri‘/SELINUX=/cSELINUX=disabled’/etc/selinux/conf
cat/etc/passwd|awk‘NR==1{print$1}’
- 如何查看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加载命令
- nginx可以做什么用
web服务器、代理服务器、负载均衡器、邮件服务器
- dhcp客户端是哪个地址来申请一个新的ip地址的?
dhcp客户端是使用广播地址来向全网发送广播包来寻找dhcp服务器的
源地址是0.0.0.0广播地址是:255.255.255.255客户端没有IP地址才需要申请,所以它只能用0.0.0.0来代替它的ip,向服务器端申请ip地址。
- /var/www/html/是网站的发布目录,如何每天凌晨0点30分对其进行自动备份,每次备份成按时间生成不同的备份包,写出操作步骤?
30 0 * * * tar-zcf date+%Y%m%d.html.tar.gz/var/www/html
- apache的工作模式,如何执行php代码
进程模式prefork 线程模式work 事件模式event 安装apache的php模块libphp5.so
apache做代理----后端服务器安装php-fpm
- 单独修改某一个账户的配置?
user_config_dir=/etc/vsftpd/userconf #vim /etc/vsftpd/userconf/zhanghu local_root=/zhanghu
- 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与防火墙或代理服务器不同,但它确实有利于安全。
- 计划任务在11月份,每天早上6点到12点中,每隔2小时执行一次/usr/bin/httpd.sh怎么实现?
00 6-12/2 * 11 * bash/usr/bin/httpd.sh
- 请写下Linux系统中cron定时任务,每天07至23点,每隔半小时执行apache重启,并禁用系统邮件通知
crontab-e */30 7-23 * * * systemctl restart httpd>/dev/null2>&1
- 在nslookup使用中请问如何查询test.com域中的MX记录
Nslookup -query type=MX test.com Host dig nslookup settype=mx test.com
- 修改ssh服务端端口:
#vim/etc/ssh/sshd_config /Port查找端口行,删除#,将22修改为目标端口
#systemctl restart sshd
- 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
- 请说出以下符号在bashshell中的意义:
0、n、#、?、*、、(#aa)
0当前读取内容n位置变量#参数个数上一语句的返回值pid*所有参数
- NFS共享文件怎么做的,用的什么技术,碰到了什么问题
用nfs做nas存储
当访问的过多时;会比较卡: 提升交换机的配置原来是百兆的话要提升到千兆或者万兆
- 设置系统当前运行级别中test服务状态为启动时自动加载,请写出完整操作命令
#runlevel//查看当前的运行级别#chkconfig–level5teston
- 请简单描述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:实现负载均衡和反向代理,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/;}
- 解压acces.gz文件至access.log,保持源文件不删除解压:
Cp access.gz/access.log/access1.gz cd/access.log gzip-daccess1.gz
- apache有几种工作模式,分别介绍下其特点,并说明什么情况下采用不同的工作模式?
apache有三种工作模式:分别是prefork,worker和event
1.prefork:是一种进程、与派生的工作模式,用的是进程去处理请求,所以比较容易消耗内存,但是稳定性好,某个进程出现问题不会影响到其他请求。要求稳定的时候使用
2.worker:是使用多个子进程、每个子进程有多个线程、由于使用的是线程去处理请求,消耗内存小,适合高流量的请求,但是如果某个进程出现问题,那么这个进程下的线程都会出现问题,即稳定性不是很好。这种模式不能php要测试一下在访问量多的时候使用
3.event模式:是为解决keep-alive保持长连接出现的一种工作模式,使用keep-alive长连接的时候,某个线程会一直被占用,即使中间没有请求,需要等到超时才会被释放,所以这个时候就出现了event的工作模式就出现了。在event工作模式中,会有一些专门的线程用来管理这些keep-alive类型的线程,当有真实请求过来的时候,将请求传递给服务器的线程,执行完毕后,又允许它释放。这增强了在高并发场景下的请求处理。另外,event模式是不支持用在https上的。
- 当用户在浏览器当中输入一个网站,说说计算机对dns解释结果哪些流程?注:本机跟本地DNS还没有缓存
1.用户输入网址到浏览器;
2.浏览器发出DNS请求信息;
3.计算机首先查询本机HOST文件,不存在,继续下一步;
4.计算机按照本地DNS的顺序,向区域dns服务器查询IP结果;区域dns服务器查询不到时会从根域开始,按照DNS层次结构向下搜索,直至对于信息具有权威性;
5.将返回dns结果给本地dns和本机,本机和本地dns并缓存本结果,直到TTL过期,才再次查询此结果;
6.返回IP结果给浏览器;并给本地的DNS一份结果;
7.浏览器根据IP信息,获取页面;
- Linuxshell中单引号,双引号及不加引号的简单区别
单引强引硬引取消引号内特殊字符的意义
双引弱引软引取消部分引号内特殊字符的意义让多个以空格为分隔符的字符串形成一个整体字符串
- 统计/var/log下文件(非目录)的个数
find/var/log-typef|wc-l
- 统计出yum安装的apache的访问日志access_log中访问量最多的5个IP
cat/var/log/httpd/access_log|awk‘{ips[KaTeX parse error: Expected 'EOF', got '}' at position 5: 1]++}̲END{for(iinips)…iips[i]}}’|sort-rn-k2|head-5ssss
- 实现用用户输入入用用户名和密码,当用用户名为ye或sk且密码为123时,显示登陆成功,否则登陆失败,失败时允许重复输入入三次
foriinrange(3): u=input(“user>:”) p=input(“pwd>:”) ifu=="yg"oru=="sk"andp==“123”: print(“登陆成功”)
Break else: print(“登陆失败”)
- 线上访问的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
-
Tomcat服务的配置文件是哪个? tomcat服务的配置文件是server.xml
-
您用过的几种中间件/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。
- 以下字段可能和哪个服务有关?表示什么意思? */5 * * * * ping -c 100 www.wanmel.com>/root/network.log2>&1
答:(计划任务)每五分钟ping www.wanmel.com 100次将错误和正确的输出覆盖到/root/network.log
- ansible都用来做什么
实现了批量系统配置;批量程序部署;批量运行命令;自动化运维工具
- 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
-
请写出Tomcat程序的主配置文件名 在conf目录下:server.xml
-
Tomcat:调优工作模式基于什么协议
并发优化:在TOMCAT_HOME/bin/catalina.sh增加如下语句,
JAVA_OPTS="-Xms1024m-Xmx1024m-Xss1024K-XX:PermSize=64m-XX:MaxPermSize=128m"
建议和注意事项:
-Xms和-Xmx选项设置为相同堆内存分配,以避免在每次GC后调整堆的大小,堆内存建议占内存的60%~80%;非堆内存是不可回收内存,大小视项目而定;线程栈大小推荐256k.
tomcat的运行模式有3种,即BIO、NIO和APR。 tomcat基于HTTP协议
- DHCP(动态主机配置协议)
主要目的是为了方便我们的主机IP地址的配置,如果网络中存在大量的主机时,可通过部署DHCP协议,由DHCP服务器分配可用地址给主机。
客户端启用了DHCP,开机后,它会发布一个的广播报文,广播报文经过网关时会带上相应标记,要使路由可达,当DHCP服务器收到这个报文后,DHCP服务器会根据报文标记,分配一个网关所在网段IP地址给客户端,如果所有客户端未划分网关,DHCP会在地址池内随机分配IP给客户端
地址池:在用户定义了DHCP范围及排除范围后,剩余的地址构成了一个地址池,地址池中的地址可以动态的分配给网络中的客户机使用。地址池仅对自动获取IP的方式有效,手动设置IP只要符合规则可无视此项。
- 我们都知道dns既采用了tcp协议,又采用了udp协议,什么时候采用tcp协议?什么时候采用udp协议?为什么要这么设计?
dns有两个情况,一种是区域传输,一种是域名解析
1.区域传输时,一个区中主DNS服务器从自己本机的数据文件中读取该区的DNS数据信息,而辅助DNS服务器则从区的主DNS服务器中读取该区的DNS数据信息,传输协议是tcp。问:tcp
2.域名解析时,首选的通讯协议是udp
使用udp传输,不用经过TCP三次握手,这样DNS服务器负载更低,响应更快
但是当域名解析的反馈报文的长度超过512字节时,将不能使用udp协议进行解析,此时必须使用tcp回:udp
- 请用shell脚本实现:批量添加5个用户,用户名为:user1-5,密码为:user名+3个随机字符
For I in{1…5}
do
useradduser$i
suijishu=opensslrand-hex2|sed-r"s/(…)(.)/\1:\2/g"|awk-F:’{print$1}’
echouserisuijishu|passwd–stdinuser$i
done
- MySQL数据库cpu飙升到500%的话他怎么处理?
(1)多实例的服务器,先top查看是那一个进程,哪个端口占用CPU多;
(2)showprocesseslist查看是否由于大量并发,锁引起的负载问题;
(3)否则,查看慢查询,找出执行时间长的sql;explain分析sql是否走索引,sql优化;
(4)再查看是否缓存失效引起,需要查看buffer命中率;
- 事务有几大特性?分别代表什么意思?
事务的四种隔离级别
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来观察之间的差距
-
NAT有4种用法:
-
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―多对多.
- 写下之前工作中在生产环境配置使用过的监控系统?针对网络或服务配置过哪些监控项?使用什么方法进行报警通知
答:zabbix监控:服务器启动分区剩余空间服务器网络接口进出流量服务器服务状态服务器进程数量服务器CPU状态磁盘IO情况文件修改磁盘总和报警方式:邮件报警,微信报警,
- 使用何种工具监控的数据库?监控哪些指标?
zabbix
使用mysql自带的模板
监控:QPS(增删改查)、mysql请求流量带宽,mysql响应流量带宽,监控主从(showslavestatus\G);TPS(每秒事务的处理数量);监控缓冲池使用情况;缓存碎片;慢查询数量;当前连接数;吞吐量;端口和服务状态;mysql正常运行的时间;
- Linux系统层面有哪些常见的安全防护方法
1,防火墙只开放对外的服务端口 2,禁止ROOT远程登录 3,修改/etc/passwd访问权限 4,修改sshd的服务端口
5,只允许公司出口IP连接sshd服务端口 6,还有修改执行命令历史记录数 7,禁用不用的服务和应用
8,检查系统日志
- 问: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
- 如何查看Linux系统每个IP的连接数
netstat-n|awk’/^tcp/{print5}’|awk-F:’{print1}’|sort|uniq-c|sort-rn
- 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
- MySQLbinlog的几种日志录入格式以及区别
(1)binlog的日志格式的种类和分别
(2)适用场景
(3)结合第一个问题,每一种日志格式在复制中的优劣
- 解释冷备份和热备份的不同点以及各自的优点
热备份针对归档模式的数据库,再数据库仍旧处于工作状态时进行备份。而冷备份指数据库关闭后进行备份,适用于所有数据库。
不同点:
热备份:备份时数据库仍旧处于运行状态
冷备份:备份时数据处于关闭状态
优点:
热备份:在备份时,数据库仍可以使用并且可以将数据库恢复到任意一个时间点
冷备份:它的备份和恢复操作相当简单,并且冷备份可以工作在非归档模式下,数据库性能会比归档模式稍好
- 列举三种表连接算法以及各自高性能的场景
三种连接算法:①嵌套循环连接 ②合并连接 ③Hash连接
嵌套循环连接:通常在小数据量并且语句比较简单的场景中使用
合并连接:在SQL数据库中,如果查询优化器,发现要连接的两张对象表,在连接上都已经排序并包含索引,那么优化器将会极大
可能选择“合并”连接策略。条件是:两个表都是排序的,并且两个表连接条件中至少有一个等号连接,查询分析器会去选择合并连接
Hash连接:当我们尝试将两张数据量较大,没有排序和索引的两张表进行连接时,SQLServer的查询优化器会尝试使用HashJoin
1.问:临时调整和永久生效系统内核参数在哪里调
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
2.简述数据库中索引的用法及原理
索引在mysql中也叫键,是存储引擎用于快速找到记录的一种数据结构
用法:与查阅图书是一个道理:先定位到章,然后定位到章下的一个小节,再定位到页。
原理:通过不断地缩小想要获取数据的范围来筛选出最终想要的结果,同时把随机的事件变成顺序的事件
3.解释冷备份和热备份的不同点以及各自的优点
热备份针对归档模式的数据库,再数据库仍旧处于工作状态时进行备份。而冷备份指数据库关闭后进行备份,适用于所有数据库。
不同点:
热备份:备份时数据库仍旧处于运行状态
冷备份:备份时数据处于关闭状态
优点:
热备份:在备份时,数据库仍可以使用并且可以将数据库恢复到任意一个时间点
冷备份:它的备份和恢复操作相当简单,并且冷备份可以工作在非归档模式下,数据库性能会比归档模式稍好
4.mysql主从,主库宕机,主从切换步骤?
主机故障或者宕机:
在salve执行:
stopslave;
resetmaster;
5.MySQLbinlog的几种日志录入格式以及区别
(1)binlog的日志格式的种类和分别
(2)适用场景
(3)结合第一个问题,每一种日志格式在复制中的优劣
6.MySQL数据库cpu飙升到500%的话他怎么处理?
(1)多实例的服务器,先top查看是那一个进程,哪个端口占用CPU多;
(2)showprocesseslist查看是否由于大量并发,锁引起的负载问题;
(3)否则,查看慢查询,找出执行时间长的sql;explain分析sql是否走索引,sql优化;
(4)再查看是否缓存失效引起,需要查看buffer命中率;
7.如何用mysql命令进程备份和恢复?以test库为例,创建一个备份,并再用此备份进行恢复
备份:
mysqldump-uroot-p密码test>备份文件.sql
恢复: mysql-uroot-p密码<备份文件.sql
Mysql创建数据库的命令,创建表的命令,插入语句的命令?
创建库的命令: createdatabase库名;
创建表的命令: createtable表名;
插入表的语句: insertinto表名(记录); 数据库中有一个6亿的表a,一个3亿的表b,通过外键tid进行关联。
8.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参数
9.配置读写mysql主从复制的步骤:
1.在主库与从库都安装mysql数据库
2.在主库的配置文件(/etc/my.cnf)中配置server-id和log-bin
3.在登陆主库后创建认证用户并做授权。
4.在从库的配置文件(/etc/my.cnf)中配置server-id
5.登陆从库后,指定master并开启同步开关。
需要注意的是server-id主从库的配置是不一样的。
10.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.Mysql客户端工具中,请问如何让查询当前所有的连接进程信息
showprocesslist;
2.备份恢复失败如何处理:
首先在恢复之前就应该做足准备工作,避免恢复的时候出错。比如说备份之后的有效性检查、权限检查、空间检查等。如果万一报错,再根据报错的提示来进行相应的调整。
3.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不能再创建一个线程而保留原来的线程,那样同步就可能有问题;
4.mysqldump中备份出来的sql,如果我想sql文件中,一行只有一个insert…value()的话,怎么办?如果备份需要带上master的复制点信息怎么办?
1).–skip-extended-insert 2).–master-date=1
5.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
6.请写出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
7.nginx如何配置能够获取用户的真实ip?
当多层代理或使用CDN时,如果代理服务器不把用户的真实IP传递下去,那么业务服务器将永远不可能获取到用户的真实IP
nginx反向代理及cdn:•proxy_set_headerHost
h
t
t
p
h
o
s
t
;
p
r
o
x
y
s
e
t
h
e
a
d
e
r
X
−
R
e
a
l
−
I
P
http_host; proxy_set_headerX-Real-IP
httphost;proxysetheaderX−Real−IPremote_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;
8.怎么理解存储?
存储就是根据不同的应用环境通过采取合理、安全、有效的方式将数据保存到某些介质上并能保证有效的访问,总的来讲可以包含两个方面的含义: 它是数据临时或长期驻留的物理媒介; 它是保证数据完整安全存放的方式或行为。
9.加什么参数才能实现实时同步? inotifywait-m
10.–delete参数又是什么意思? --delete:文件或目录被删除在监控目录中