linux'面试集锦
- mysql主从复制的过程简述
1、主库接受到更新命令,执行更新操作,生成binlog
2、从库开启一个I/O线程与主库dump_thread建立连接
3、主库dump_thread从本地读取binlog传送给从库
4、从库从主库获取到binlog后存储到本地,成为relay log,并将读取到的binlog文件名和位置保存到master-info文件
5、sql_thread线程读取relay log解析、执行命令更新数据
- MySQL主从故障切换后,如何恢复主从复制?
记录master位置,切换架构为BA,保证业务,恢复前记录position结束位置,最后通过二进制日志文件进行恢复
- 引起主从延迟的常见原因
常见原因:Master、Slave负载过高、网络延迟、机器性能低、MySQL配置不合理。
- lvs和nginx的区别
Lvs是位于4层,抗负载能力强,应用广泛
Nginx4、7层都可以做,对网络依赖性小,稳定,支持正则、目录等。还是一个web服务器,缓存服务器
- nginx正向代理和反向代理区别以及列举 nginx作为反向代理的负载均衡算法和常用模块
正向代理即是客户端代理, 服务端不知道实际发起请求的客户端
反向代理即是服务端代理, 客户端不知道实际提供服务的服务端
算法:轮询;权重;ip_hash;fair;url_hash
常用模块:
rewrite重写模块
access来源控制模块
ssl安全模块
status监控模块
proxy前端代理模块
upstream后端代理模块
- 说出下面HTTP返回码的意义
200:请求成功 301:被请求资源永久重定向 302:请求资源临时重定向
404:页面找不到 500:内部服务器错误 502:网关无效
503:服务器不可用 504:网关超时
- Rsync+inotify和Rsync+crontab区别
Rsync+inotify是实时备份
Rsync+crontab是定时备份
- svn和Git区别
svn是集中式版本控制系统,git是分布式版本控制系统。
svn主要是项目管理,git主要是代码管理。
svn由项目经理协调多个项目统筹开发,git通过网络多人开发同一项目。
- 分别简述harbor和ansible工具是用来做啥的
harbor是私有镜像仓库
ansible是批量管理工具
- 假如让你负责监控工具建设,例如zabbix,说说你的思路
系统级——内存,cpu,硬盘,进程数,tcp状态
应用级——监控服务,端口,status模块
网络级——监控url
- zabbix监控分几种模式,分那几个组成部分?
两种:主动模式和被动模式
主动是agent向server发送请求
被动是server向agent发送请求
五部分
zabbix web GUI web界面
zabbix database 数据存储
zabbix server 服务端
zabbix agent 客服端
zabbix proxy 代理
- 解释 ip地址,子网掩码,网关的意义
Ip地址:身份明确(通信时使用)
子网掩码:组织明确(通信时所属网段的明确)
网关:边塞明确(不同网段之间通信进出口)
- 讲解一下raid0 raid1 raid5 raid1 0的区别
Raid 0 最少需要两块磁盘
性能极佳,无冗余
适用于个人及日志存储
RAID 1的特点:
最少需要2块磁盘,偶数盘
100%冗余
读写一般
适用于重要数据存放,如数据库服务器
Raid 5
3块盘起步
兼顾冗余,损失1块盘,读还行,写一般
适用于金融、数据库存储
Raid 1 0
最少4块盘
性能特佳,100%冗余
适用于对性能和冗余高要求的业务实现
- 假设目前的服务器规模是200台,说说你的管理思路,例如存储,监控,日志收集等。
跳板机统一登录审计
Ansible批量部署统一调度
cmdb信息管理界面,便于查阅
存储日志方面:
Es 4台
Logstash 小200台
Kibana 2 台
- nginx除了可以作为代理以外还可以作为什么服务器
缓存和web
- 解释CDN意义
CDN是将源站内容分发至最接近用户的节点,使用户可就近取得所需内容,提高用户访问的响应速度和成功率。适用于站点加速、点播、直播等场景
- 列举常用的关系型数据库和非关系型数据库,每类至少两个
关系型数据库:mysql,oracle,sql server
非关系型数据库:redis,memcache,mongoDB
- 何为脑裂?介绍一下负载中脑裂发生的原因
高可用HA中,心跳线断裂、一分为二、两master抢资源、致系统崩溃、数据丢失
心跳线断裂
网卡配置有问题
防火墙阻挡心跳消息
其他服务配置不当
交换机故障所致
解决方案:
用以太网电缆串行连接两根心跳线
预防:做好监控报警,第一时间挽救,降低损失
- 新安装的Linux系统在安全和性能方面做哪些配置
国内yum
时间同步
内核优化(最大打开文件数修改 修改系统默认的TIMEOUT时间)
精简开机自启
防火墙配置
拒绝ping
ssh加速
- 画出大做维有限公司的网站架构图
- dns原理,以访问百度为例
访问www.baidu.com,先访问本地缓存,有则返回,无则继续
向根域名解析服务器,接下来依次向一级/二级/三级域名解析服务器
找到资源存储到本地缓存并返回给客户
- keepalvied的工作原理
Keepalived高可用是通过 VRRP进行通信, VRRP是通过竞选机制来确定主备,主优先级高于备,因此,工作时主会优先获得所有资源,备节点处于等待状态,当主宕机时,备节点接替主节点资源对外提供服务
- memcache 和redis有什么区别
Redis支持数据持久化、丰富的 key/value
Memcache不支持数据持久化 较为简单的 key/value
- redis支持的数据类型有哪些
字符串 哈希 列表 集合 有序集合
- tomcat内存调优,XMX ,xms分别表示什么
Xmx:可用堆最大内存
Xms:初始化时堆的最小内存
- tomcat的目录结构有哪些
- nginx服务器上master和worker的区别
bin:命令目录
conf:配置文件目录
logs:日志目录
webapps:应用程序目录
master进程管理worker进程
负责判断配置文件的语法
worker进程处理事务请求
- mysql安全方面你都做过哪些措施
删除数据库无用用户
限权远程用户
不在命令行界面输入数据库密码
定期修改密码与加强密码的复杂度
mysql_secure_installation
--为root用户设置密码
--删除匿名账号
--取消root用户远程登录
--删除test库和对test库的访问权限
--刷新授权表使修改生效
- mysql数据库你们是使用什么工具完成读写分离的
amoeba支持读写分离
mycat支持读写分离
- 全备,增备,热备,温备、冷备分别阐述下你的理解
全备:备份数据库所有数据。
增备:在上次备份的基础上备份新增数据。
冷备:停机备份。
温备:服务在线,但仅支持读请求,不允许写请求。
热备:不停机备份
- 网站打开慢,请给出排查方法,如果是数据库导致的慢,如何排查。
首先检查dns域名解析、之后使用top来查看我们的网卡占用、如果有大的进程占用我们的网卡、kill -9 将其杀死、没有的话查看我们的日志文件,看是否有异常。
- 写过哪些shell脚本(列举5个)
防误删文件 巡检系统 防ddos攻击 status监控 系统优化 mysql备份
- 解释蓝绿部署、滚动部署、灰度发布
蓝绿部署:
旧版本不停,新版本进行测试,新版ok,将用户切换到新版本,同时更新旧版本
滚动发布:
取出部分服务器更新,更新完后继续使用,循环往复,直至全部更新完
灰度发布:
ABtest为例,一部分A继续用,一部分测试B,B无问题,A的迁移至B上
- Squid、Varinsh和Nginx 做缓存有什么区别
SQUID 是功能最全面的,但是架构古老,性能普通
Varnish 是速度一流的内存缓存,适合缓存页面和图片
Nginx 用了插件可以做缓存,只能缓存静态页面
- 什么是中间件,什么是JDK。
将具体业务和底层逻辑解耦的组件
jdk是Java的开发工具包
- MySQL 主从延时很大怎么办?
修改配置减少延迟(设置sync_binlog=0|关闭binlog,提高sql执行效率)
使用更好的硬件设备作为slave
加入缓存,降低mysql压力
- DDOS应该怎么防?
在短时间内发起大量请求,耗尽服务器的资源,无法响应正常的访问,造成网站实质下线
流量清洗(针对DDoS攻击的监控、告警和防护的一种网络安全服务)
备份网站
HTTP 请求的拦截
带宽扩容
CDN加速
- 啥是僵尸进程?如何查看?
defunct进程的出现时间是在子进程终止后,但是父进程尚未读取
我们用top命令查看zombie或者ps aux | grep Z会列出进程表中所有僵尸进程的详细内容
- ICMP是几层协议?
3层网络层协议
- 啥是静态网页,啥是动态网页。
静态网页是一经制成,内容不再变化, 如html
动态网页是内容可以变化,如 jsp php
- Linux中文件 inode? linux inode满了怎么办?
Inode就是索引节点,是储存文件元信息的区域
删除无用的临时文件
- Linux 里软连接和硬链接区别。
硬链接是复制原文件且互通
软链接相当于快捷方式
- Linux交换分区swap和物理内存的区别。
物理内存,从物理内存条获取的内存空间
交换分区:内存不足时将磁盘中的一部分空间释放出来,供当前运行的程序使用。
- 列出 LINUX 常见打包工具并写相应解压缩参数(至少三种)
tar gzip2 bzip xz
gzip -c FILE > FILE.gz保留源文件压缩
tar xf FILE
bzip2 -c FILE > FILE.bz2
xz -c FILE > FILE.xz
- 计划任务,每周六,14 ,16 ,18 执行备份脚本定时任务如何写
crontab -e
* 14,16,18 * * 6 sh /root/a.sh
- iptables开放DNS服务,命令如何写?
iptables -A INPUT -p udp --dport 53 -j ACCEPT
- TCP协议和UDP协议区别?
tcp是面向连接
udp是无连接
- Shell实现99乘法表
#!/bin/bash
for i in `seq 9`
do
for j in `seq $i`
do
echo -n "$j*$i=$[$j*$i] "
done
echo
done
- 磁盘空间满如何排查
df命令查看磁盘使用情况
du查看文件大小
- 日志分析你们关注哪些参数
客户端的ip地址
访问时间
HTTP协议
请求状态
- ansible和saltstack的区别
SaltStack是C/S架构,易扩展
Ansible 依靠SSH传输,无客户端,不易扩展
- MySQL innodb和myisam区别
1. InnoDB支持事务,MyISAM 不支持事务。
2. InnoDB支持外键,MyISAM 不支持外键。
3. InnoDB是聚集索引,MyISAM是非聚集索引。
4. InnoDB不保存表的具体行数,需要全表扫描。
MyISAM保存表的行数,执行语句速度很快;
5.InnoDB最小的锁粒度是行锁,MyISAM最小的锁粒度是表锁。
- 解释TPS、QPS、pv、uv , DAU, MAU , 并发数
qps 每秒请求数
tps 每秒处理事务数
pv 页面浏览量
uv 用户访问数
DAU 日活跃用户数量
MAU 月活跃用户人数
并发数 同时访问服务器的连接数
- linux最大文件数用ulimit 设置和修改配置文件配置
ulimit 限制 shell 启动进程所占用的资源
ulimit -f 数字 //设置文件的大小
默认是无限大【unlimited】
用ulimit -n命令,默认是1024 //最大文件数大小
vim /etc/security/limits.conf
末行追加
soft nofile 65565
hard nofile 65565
- 进程和线程的区别
进程是资源分配的最小单位
线程是程序执行的最小单位
- 啥是跨域?
解决浏览器的同源策略来实现跨域访问资源
- 介绍一下elk,由哪几部分组成?各部门都是干什么的?
Elasticsearch 存储和搜索日志
Logstash 收集、过滤日志
kibana web界面展示
- ansible的playbooke是干什么的
playbook是ansible用于配置,部署,和管理被控节点的剧本
- ansible用过哪些插件
Connection通信插件
Lookup循环插件
Vars变量插件
- Jenkins用过哪些插件
- elk一般用来收集哪些日志
Git插件将gitlab仓库内容拉取到本地
GitLab配置Gitlab的相关认证实现触发
Ansible执行Ansible任务
Publish Over SSH负责传输
nginx tomcat mysql
- zabbix主动模式和被动模式区别,如果让你zabbix服务器迁移,如何做?
Zabbix的主动模式和被动模式都是相对agent来说的
被动模式是 server主动去收集 agent上的数据,优点是模板多,更具灵活性,缺点server端压力大
主动模式就是agent将消息推送给server,优点是减轻了server的压力,缺点是所有的模板要修改为主动模式
1.部署新环境和代理
2.同步配置文件
3.关闭action,停掉旧节点
4.配置代理指向新节点
5.恢复action,配置web界面,重启即可
- Redis持久化两种方式,有什么区别?
Rdb 体积小,恢复速度快,安全性低
Aof 体积大,恢复速度慢,安全性根据策略决定
- 你们公司用的redis是什么架构
主从复制
哨兵
proxy集群
- 列举你知道存储系统例如NFS MFS
TFS 淘宝
GFS 谷歌
KFS 两个印度人
FASTDFS 中国人
- 描述一线自动化上线流程
研发人员上线代码到gitlab项目仓库、jenkins通过git插件将代码拉取到本地,通过ssh传输到ansible批量管理服务器
- 阿里云用过哪些产品?下面百度一下
ECS 云服务器 RDS 关系型数据库 SLB 负载均衡
OSS 开放存储服务 ESS 自动伸缩
ECS 云服务器:以虚拟机的方式将一台物理机分成多台云服务器,提供可伸缩的计算服务。
SLB 负载均衡:基于LVS和Tengine实现的4层和7层负载均衡,有动态扩容,session保持等特点。
RDS 关系型数据库:通过云服务的方式让关系型数据库管理、操作和扩展变得更加简单。
OSS 开放存储服务:对任意大小数据对象提供高可用,高可靠的海量存储服务。
ESS 自动伸缩:自动伸缩是一种根据业务需求和策略,自动调整其弹性计算资源的管理服务
- 你用docker做过什么
docekr部署 zabbix mysql lamp lnmp
- docker持久化怎么做的?
volumes:存于主机文件系统中的某个区域,由Docker管理(具名挂载;匿名挂载)
bind mount:存于主机文件系统中的任意位置(指定挂载)
tmpfs mount(Linux中):存于内存中
- docker 拉取,删除,启动镜像命令是什么,在写出其它你知道命令,至少6个
拉取镜像:docker pull 镜像名称
查看已经下载的镜像:docker images
删除镜像:docker rmi 镜像标识
运行容器:docker run 镜像名称
镜像导出:docker save -o 镜像id
镜像导入:docker load -i 镜像文件
71.Linux系统中病毒怎么解决
1)最简单有效的方法就是重装系统
2)要查的话就是找到病毒文件然后删除
top 命令找到cpu使用率最高的进程,rm -f 命令删除病毒文件,检查计划任务、开机启动项和病毒文件目录有无其他疑似文件等
3)删除病毒文件后不排除有潜伏病毒,所以最好是把备份重装一下
- iftop,ps,netstat,chattr,lsof,pstree这些命令都是干啥的
Iftop:实时流量监控工具
ps:显示当前进程的状态
netstat:监控TCP/IP网络的工具
chattr:改变文件属性
lsof:列出被各种进程打开的文件信息
pstree:所有进程以树状图显示
- 说说TCP/IP的七层模型
应用层 :为用户提供服务
表示层:数据的表示、安全、压缩。
会话层:会话的建立、管理、终止
传输层 :定义传输数据的协议端口号,以及流量控制和差错校验。
网络层 :进行逻辑地址寻址,实现不同网络之间的路径选择。
数据链路层:控制网络层与物理层之间通信
物理层:为数据传输提供可靠的环境
- vi和vim啥区别?说说在vim中删除 复制 粘贴 查找命令
Vi不支持正则表达式的搜索
Vim支持正则表达式的搜索
Vi没有自己的脚本语言
Vim有自己的脚本语言
删除:dd
复制:yy
粘贴:pp
查找:/
- 通过systemctl设置服务器的开机启动可以自动启动服务,除了这个还有没有其它的
写脚本 设置软链接
/etc/rc.local 永久修改
- 更改内核参数一般在哪个配置文件,如果直接配置会什么缺点。
/etc/sysctl.conf
当前有效,重启后无效
- 说说ftp主动模式和被动模式
参照物:ftp server端
主动模式:有利于ftp服务器的管理
ftp服务器的数据端口20主动连接客户端的数据端口,来建立数据连接,用来传输数据,这个数据连接的建立有可能被客户端防火墙拦截掉。
被动模式:有利于客户端服务器的管理
客户端的数据端口去连接ftp服务器的数据端口,建立数据连接。
- nginx调优做过哪些?
最大打开文件数
连接超时时间
缓存
系统连接数
worker_processes工作进程个数
worker_connections最大连接数
- 你是怎么理解运维的?
以服务为中心,以稳定、安全、高效为三个基本点,确保公司的互联网业务能够 7×24 小时为用户提供高质量的服务。
- 主从同步异常如何解决(不是重做主从)
1) 配置文件 添加slave-skip-errors = 错误代码 重启查看
2) stop slave;
跳过slave上的1个错误
mysql>set global sql_slave_skip_counter=1;
start slave;
- 代码上线时运维需要做的事情?
配合开发搭建测试环境
采购阿里云服务器,安装系统,配置服务提前确定好回滚机制
部署上线过程中出现bug,及时与开发沟通,解决bug后成功上线
82.文件已删除但空间不释放问题的分析与解决办法
du -sh /*//查看根目录文件大小,看有无大文件
df -h //查看磁盘使用情况
推测可能为文件被进程锁定或者有进程在一直写文件中的数据
使用lsof | grep delete查看文件删除列表,查找哪个服务被锁定,执行 kill -9 删除进程
清空日志echo " " > xx.log,df -h再次查看磁盘空间
- Tomcat 调优做过哪些
内存,并发,缓存,安全,网络,系统
并发:maxThreads 客户请求最大线程数
缓存:compression 打开压缩功能
- MySQL有哪些日志,如何打开慢查询日志
错误日志 查询日志 慢日志 二进制日志 中继日志
配置文件添加
slow_query_log = ON
slow_query_log_file = /var/lib/mysql/test-10-226-slow.log
long_query_time = 1
重启数据库
验证 show variables like '%slow_query%';
- MySQL数据库中delete 和truncate的区别
delete可带where条件删除,truncate只能删除整个表的数据
delete支持事务回滚【rollback】,truncate不支持
如果清空整个表的话,truncate会重建表结构,效率高,delete效率低
- redis持久化如何做?
RDB:会单独创建一个子进程【fork】来做持久化,先将数据写进一个临时文件,等持久化过程结束,用临时文件替换之前的持久化文件
AOF:将数据变更都写入指定目录下,保存数据完整性,持久化效果好
- zabbix监控nginx的哪些指标
Active connections: 活跃连接数
accepts:已接收的客户端请求数量
handled:已处理的客户端请求数量
requests:客户端发送的总请求数
Reading:正在读取客户端请求报文首部的连接数
Writing:正在向客户端发送响应报文的连接数
Waiting:正在等待客户端发送请求报文的空闲连接数
- 你们的微信报警怎么做的?
微信申请一个企业公众号
在企业号上新建应用
接口调用测试
配置脚本
Web界面新增报警媒介信息
测试是否成功
- 报警风暴如何避免
智能告警平台(Cloud Alert) CA,能快速接入各类告警信息,通过自动去重、规则压缩、算法降噪;同时通过分派、排班、通知等 功能,快速实现告警流程化管理,帮助运维团队更快响应告警,有序处理问题。
- zabbix有哪些监控方式,主动还是被动
主动是agent请求server获取主机的监控项列表,并主动将监控项内需要检测的数据提交给server
被动是server想agent请求获取监控项的数据,agent返回数据
- 除了zabbix你还了解过哪些监控
Nagios简单直观而且被监控端不要做任何配置
mrtg配置简单、源码开发、可定制
- 用过哪些zabbix的模板
Template App Zabbix Server
Template OS Linux
mysql监控报警
nginx连接监控报警
- 访问网站的流程
首先访问本地缓存,缓存里有就直接返回,没有的话就直接访问DNS服务器找相应的IP地址,找到后进入服务器主机里面找配置文件,在配置文件里面有相关的目录之类的,找到相关的目录后直接返还给客户
- 登录docker容器的方式有哪些
使用docker attach 【exit停止容器】
使用exec 【exit退出容器】
- mysql和nosql的区别
mysql关系型数据库,数据能持久化,存储在硬盘中,读取慢
nosql非关系型数据库,不能持久化,速度快效率高
- iptables是什么?在centos6和centos7中防火墙有啥区别?
防火墙
Centos6是iptables ,Centos7是firewall
iptables 用于过滤数据包,属于网络层防火墙
firewall 能够允许哪些服务可用,哪些端口可用,属于更高一层的防火墙
- 云服务 laas、paas、saas的区别
IaaS:基础设施服务:IaaS 是云服务的最底层,主要提供一些基础资源。用户需要自己控制底层,实现基础设施的使用逻辑。
PaaS:平台服务:PaaS 提供软件部署平台,抽象掉了硬件和操作系统细节,可以无缝地扩展。开发者只需要关注自己的业务逻辑,不需要关注底层
SaaS:软件服务SaaS 是软件的开发、管理、部署都交给第三方,不需要关心技术问题,可以拿来即用
- mysql数据库优化
系统内核优化
数据库性能优化
数据库配置优化
net.ipv4.tcp_fin_timeout = 30
#TIME_WAIT超时时间,默认是60s
net.ipv4.tcp_max_syn_backlog = 4096
#进入SYN队列最大长度,加大队列长度可容纳更多的等待连接
max_connections = 151
#同时处理最大连接数
open_files_limit = 1024
#打开文件数限制
- 主机名配置文件是什么
/etc/hostname
- dns服务器配置文件
/etc/resolv.conf
- 系统用户配置文件
/etc/passwd
- yum仓库配置文件
/etc/yum.repos.d/
- 文件系统挂在配置文件
/etc/fstab
- selinux配置文件
/etc/selinux/config
- centos6以前的系统服务配置文件
/etc/init.d/
- centos7以后的系统服务配置文件
/usr/lib/systemd/system/
- ssh服务器配置文件
/etc/ssh/sshd_config
- Redis数据库配置文件
redis.conf
- 网卡配置文件
/etc/sysconfig/network-scripts/
- 系统openfile配置文件
/etc/security/limits.conf
- 系统启动级别配置文件
/etc/inittab
- Apache的配置文件
/etc/httpd/conf/httpd.conf
- nginx配置文件
/etc/nginx/nginx.conf
- 系统内核参数配置文件
/etc/sysctl.conf
- nginx配置文件详解?
优化
worker_processes 1; --指定nginx要开启的进程数。最好与CPU个数相同。
worker_connections 1024; --每个进程的最大连接数
sendfile on; --高效文件传输模式。
gzip on; --支持压缩传输,提高传输速度
tcp_nopush on;优化网络传输
安全
location /admin {
allow 192.168.1.10;
deny all;
}
- NGINX配置文件分为那几部分?
nginx配置文件分为5个区块:
Main事件区块:影响全局的配置。
Events模块:影响服务器与用户网络连接的配置
HTTP模块:http的全局设置。
server模块:指定虚拟主机域名、IP和端口
location模块:location部分用于匹配网页位置
upstream模块:后端服务器的负载均衡
- nginx配置日志文件记录远程ip,时间,状态码,发送数据大小,从哪个页面访问的,客户端浏览器相关信息
/var/log/nginx/access.log
- 解释惊群现象
多个进程和线程同时阻塞等待一个事件,事件发生唤醒所有线程,但最终只能有一个线程对该事件进行处理,其他线程在失败后重新休眠,这种性能浪费就是惊群
Linux2.6版本以后,内核已经解决了accept()函数的“惊群”问题
处理方式就是,当内核接收到一个客户连接后,只会唤醒等待队列上的第一个进程或线程
- fastcgi是什么
FastCGI:Nginx本身不支持PHP等语言,但是它可以通过FastCGI来将请求扔给某些语言或框架进行处理
- 为什么nginx性能这么高
得益于它的事件处理机制:
异步非阻塞事件处理机制:运用了epoll模型,提供了一个队列,排队解决
事件收集器,事件发送器,事件处理器
- 在Nginx中,解释如何在URL中保留双斜线?
syntax: merge_slashes off
default: merge_slashes on
context: http,server
- fastcgi 与 cgi 的区别?
fastcgi 新增功能 分布式计算 【充分利用系统性能,提升系统安全性】
多角色与可扩展角色【认证和身份检查、转换数据格式】
- 写出下列参数
nginx工作进程数 worker_processes
nginx每个进程最大连接数 worker_connections
错误日志定义并指定级别 error_log /var/log/nginx/nginx_error.log crit; crit 记录最少,degug记录最多
访问日志定义 access_log path
日志格式定义 log_format name string
虚机域名配置 server_name name
根目录配置 root path;
首页配置
连接超时时间 keepalived_timeout timeout 默认75s
PID路径定义 pid logs/nginx.pid;
- autoindex是干什么的
自动变址, 自动索引
用@me来表示计数开始,而类似@me+1则可以指定数字开始
- nginx图片缓存30天如何写
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{expires 30d;}
location ~ .*\.(js|css)?$
{expires 12h; }
- nginx gzip模块如如何使用?
http{
gzip on; //开启压缩
gzip_min_length 1k; //设置阀值
gzip_buffers 4 32k; //设置压缩缓冲区数量和大小
gzip_http_version 1.1; //版本
gzip_comp_level 6; //压缩 比例
gzip_types text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml; //规定文件压缩类型
gzip_vary on; //启用
}
- NGINX如何将worker 进程绑定特定内核
worker_cpu_affinity
- NGINX常用命令
yum安装 启停 nginx
源码安装 启停 /usr/local/nginx/sbin/nginx // -s stop
不停机启动 nginx -s reload
指定配置文件启动 /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
检查配置文件 nginx -t
查看版本 nginx -v
- 用sed修改1.txt的23行study为xxx;
sed '23s/study/xxx/' 1.txt > 2.txt
sed -i '23s/study/xxx/' 2.txt
- 查看nginx日志50行第三列的内容
awk 'NR==50 {print $3}' access.log
- 删除日志文件里的空行
sed ‘/^$/d’ kong.txt > kong2.txt
sed -i '/^$/d' kong2.txt
- 删除日志文件里以#号开头的行
sed -i '1d' kong.txt
- 写一个每天0点执行的删除nginx日志的脚本,保留最近七天的日志
00 00 * * * find /var/log/nginx/ -type f -name '*.log' -mtime +7 -exec rm -f {} \;
- 查找名字为error.log的日志文件
find / -type f -name "error.log"
- 有一个文件,文件第二列为数字,查找第二列大于100的行?
awk ' $2>100' a.txt
- 假如系统有100个系统账号,名字一次为name1-name100,编写脚本删除这些用户
#!/bin/bash
for i in `seq 100`
do
userdel name$i
done
- 用iptable限制只有ip为192.168.0.55的IP访问本机22端口
iptables -I INPUT -p tcp --dport 22 -j DROP
iptables -I INPUT -s 192.168.0.55 -p tcp --dport 22 -j ACCEPT
- 查询文件里包含hhh的行并所在行的行号
grep -n 'hhh' h.txt
- 计算1到100相加
方法一:
seq 100|awk '{i=i+$1}END {print i}'
方法二:
#!/bin/bash
sum=0
for i in `seq 100`
do
sum=$[$sum+$i]
done
echo $sum
- 查找系统内文件大于60K小于100K的文件,并删除他们
find / -type f -size +50k -size -100k -exec rm -f {} \;
- 统计nginx日志每个iP出现的次数
cat /var/log/nginx/access.log |awk '{print $1}'|sort -r|uniq -c
- 统计log目录下以test开头的100个文件,然后把这100个文件的第一行保存到aaa这个文件中
find log -type f -name "test*" |head -100|xargs head -1 -q > aaa
- 文件如下
111
aaa
111
222
333
111
打印数量超过三次的行
cat three |sort|uniq -c|awk '{if($1>3){print $2}}'
- 系统里如何查看某个包是否安装
rpm -q nginx
- shell获取内存 CPU 硬盘
剩余内存:free |awk '/M/{print $4}'
cpu使用率:echo $(top -n1 |awk '/Cpu/{print $4}')%
磁盘总量:lsblk | awk '/disk/{print $4}'
- grep获取不包含an的行
grep -v an /etc/passwd
- vim打开一个文件,替换文中所有的user为users
//进入末行模式
:%s /user/users/g
- 删除文件中最后一行
sed -i '$d' user
- Linux启动流程
bios自检
加载主程序 【MBR】
加载次程序【GRUB】
内核映射
init进程
- 什么是微服务?
微服务架构就是将一个庞大的业务系统按照业务模块拆分成若干个独立的子系统,每个子系统都是一个独立的应用
- Spring cloud是什么?
Spring cloud 是对于微服务架构的实现,底层基于http协议
- Nginx工作模式
单进程:只有一个进程,所有工作都由它负责,一般在开发阶段和调试使用
master-worker:一个master管理至少一个worker,master管理worker有信号处理,加载配置等,worker挂掉master会再启一个,稳定和性能高
153. Cookie和session的区别
- 数据存放位置不同:
cookie数据存放在客户的浏览器上,即网页缓存
session数据放在服务器上,即key-value形式,如redis 和mongoDB - 安全程度不同:
cookie不安全,session安全 - 数据存储大小不同:
单个cookie保存的数据不能超过4K,一个站点普遍上限保存20个cookie
session存储于服务端,浏览器对其没有限制
154. Tomcat session共享
Tomcat内置的session复制方案
Spring Session也就是基于redis实现session共享
- docker容器有几种状态?
四种:运行、已暂停、重启、已退出
- dockerfile中最常见的指令是什么?
FROM:指定基础镜像
LABLE:为镜像指定标签
RUN:运行指定的命令
CMD:容器启动时要运行的命令
- docker三剑客
Compose 简化容器的生成和运行
Machine 负责在多种平台上快速安装 Docker 环境
Swarm 将多个 Docker 主机封装为单个大型的虚拟 Docker 主机
- mysql主从复制的过程简述
1、主库接受到更新命令,执行更新操作,生成binlog
2、从库开启一个I/O线程与主库dump_thread建立连接
3、主库dump_thread从本地读取binlog传送给从库
4、从库从主库获取到binlog后存储到本地,成为relay log,并将读取到的binlog文件名和位置保存到master-info文件
5、sql_thread线程读取relay log解析、执行命令更新数据
- MySQL主从故障切换后,如何恢复主从复制?
记录master位置,切换架构为BA,保证业务,恢复前记录position结束位置,最后通过二进制日志文件进行恢复
- 引起主从延迟的常见原因
常见原因:Master、Slave负载过高、网络延迟、机器性能低、MySQL配置不合理。
- lvs和nginx的区别
Lvs是位于4层,抗负载能力强,应用广泛
Nginx4、7层都可以做,对网络依赖性小,稳定,支持正则、目录等。还是一个web服务器,缓存服务器
- nginx正向代理和反向代理区别以及列举 nginx作为反向代理的负载均衡算法和常用模块
正向代理即是客户端代理, 服务端不知道实际发起请求的客户端
反向代理即是服务端代理, 客户端不知道实际提供服务的服务端
算法:轮询;权重;ip_hash;fair;url_hash
常用模块:
rewrite重写模块
access来源控制模块
ssl安全模块
status监控模块
proxy前端代理模块
upstream后端代理模块
- 说出下面HTTP返回码的意义
200:请求成功 301:被请求资源永久重定向 302:请求资源临时重定向
404:页面找不到 500:内部服务器错误 502:网关无效
503:服务器不可用 504:网关超时
- Rsync+inotify和Rsync+crontab区别
Rsync+inotify是实时备份
Rsync+crontab是定时备份
- svn和Git区别
svn是集中式版本控制系统,git是分布式版本控制系统。
svn主要是项目管理,git主要是代码管理。
svn由项目经理协调多个项目统筹开发,git通过网络多人开发同一项目。
- 分别简述harbor和ansible工具是用来做啥的
harbor是私有镜像仓库
ansible是批量管理工具
- 假如让你负责监控工具建设,例如zabbix,说说你的思路
系统级——内存,cpu,硬盘,进程数,tcp状态
应用级——监控服务,端口,status模块
网络级——监控url
- zabbix监控分几种模式,分那几个组成部分?
两种:主动模式和被动模式
主动是agent向server发送请求
被动是server向agent发送请求
五部分
zabbix web GUI web界面
zabbix database 数据存储
zabbix server 服务端
zabbix agent 客服端
zabbix proxy 代理
- 解释 ip地址,子网掩码,网关的意义
Ip地址:身份明确(通信时使用)
子网掩码:组织明确(通信时所属网段的明确)
网关:边塞明确(不同网段之间通信进出口)
- 讲解一下raid0 raid1 raid5 raid1 0的区别
Raid 0 最少需要两块磁盘
性能极佳,无冗余
适用于个人及日志存储
RAID 1的特点:
最少需要2块磁盘,偶数盘
100%冗余
读写一般
适用于重要数据存放,如数据库服务器
Raid 5
3块盘起步
兼顾冗余,损失1块盘,读还行,写一般
适用于金融、数据库存储
Raid 1 0
最少4块盘
性能特佳,100%冗余
适用于对性能和冗余高要求的业务实现
- 假设目前的服务器规模是200台,说说你的管理思路,例如存储,监控,日志收集等。
跳板机统一登录审计
Ansible批量部署统一调度
cmdb信息管理界面,便于查阅
存储日志方面:
Es 4台
Logstash 小200台
Kibana 2 台
- nginx除了可以作为代理以外还可以作为什么服务器
缓存和web
- 解释CDN意义
CDN是将源站内容分发至最接近用户的节点,使用户可就近取得所需内容,提高用户访问的响应速度和成功率。适用于站点加速、点播、直播等场景
- 列举常用的关系型数据库和非关系型数据库,每类至少两个
关系型数据库:mysql,oracle,sql server
非关系型数据库:redis,memcache,mongoDB
- 何为脑裂?介绍一下负载中脑裂发生的原因
高可用HA中,心跳线断裂、一分为二、两master抢资源、致系统崩溃、数据丢失
心跳线断裂
网卡配置有问题
防火墙阻挡心跳消息
其他服务配置不当
交换机故障所致
解决方案:
用以太网电缆串行连接两根心跳线
预防:做好监控报警,第一时间挽救,降低损失
- 新安装的Linux系统在安全和性能方面做哪些配置
国内yum
时间同步
内核优化(最大打开文件数修改 修改系统默认的TIMEOUT时间)
精简开机自启
防火墙配置
拒绝ping
ssh加速
- 画出大做维有限公司的网站架构图
- dns原理,以访问百度为例
访问www.baidu.com,先访问本地缓存,有则返回,无则继续
向根域名解析服务器,接下来依次向一级/二级/三级域名解析服务器
找到资源存储到本地缓存并返回给客户
- keepalvied的工作原理
Keepalived高可用是通过 VRRP进行通信, VRRP是通过竞选机制来确定主备,主优先级高于备,因此,工作时主会优先获得所有资源,备节点处于等待状态,当主宕机时,备节点接替主节点资源对外提供服务
- memcache 和redis有什么区别
Redis支持数据持久化、丰富的 key/value
Memcache不支持数据持久化 较为简单的 key/value
- redis支持的数据类型有哪些
字符串 哈希 列表 集合 有序集合
- tomcat内存调优,XMX ,xms分别表示什么
Xmx:可用堆最大内存
Xms:初始化时堆的最小内存
- tomcat的目录结构有哪些
- nginx服务器上master和worker的区别
bin:命令目录
conf:配置文件目录
logs:日志目录
webapps:应用程序目录
master进程管理worker进程
负责判断配置文件的语法
worker进程处理事务请求
- mysql安全方面你都做过哪些措施
删除数据库无用用户
限权远程用户
不在命令行界面输入数据库密码
定期修改密码与加强密码的复杂度
mysql_secure_installation
--为root用户设置密码
--删除匿名账号
--取消root用户远程登录
--删除test库和对test库的访问权限
--刷新授权表使修改生效
- mysql数据库你们是使用什么工具完成读写分离的
amoeba支持读写分离
mycat支持读写分离
- 全备,增备,热备,温备、冷备分别阐述下你的理解
全备:备份数据库所有数据。
增备:在上次备份的基础上备份新增数据。
冷备:停机备份。
温备:服务在线,但仅支持读请求,不允许写请求。
热备:不停机备份
- 网站打开慢,请给出排查方法,如果是数据库导致的慢,如何排查。
首先检查dns域名解析、之后使用top来查看我们的网卡占用、如果有大的进程占用我们的网卡、kill -9 将其杀死、没有的话查看我们的日志文件,看是否有异常。
- 写过哪些shell脚本(列举5个)
防误删文件 巡检系统 防ddos攻击 status监控 系统优化 mysql备份
- 解释蓝绿部署、滚动部署、灰度发布
蓝绿部署:
旧版本不停,新版本进行测试,新版ok,将用户切换到新版本,同时更新旧版本
滚动发布:
取出部分服务器更新,更新完后继续使用,循环往复,直至全部更新完
灰度发布:
ABtest为例,一部分A继续用,一部分测试B,B无问题,A的迁移至B上
- Squid、Varinsh和Nginx 做缓存有什么区别
SQUID 是功能最全面的,但是架构古老,性能普通
Varnish 是速度一流的内存缓存,适合缓存页面和图片
Nginx 用了插件可以做缓存,只能缓存静态页面
- 什么是中间件,什么是JDK。
将具体业务和底层逻辑解耦的组件
jdk是Java的开发工具包
- MySQL 主从延时很大怎么办?
修改配置减少延迟(设置sync_binlog=0|关闭binlog,提高sql执行效率)
使用更好的硬件设备作为slave
加入缓存,降低mysql压力
- DDOS应该怎么防?
在短时间内发起大量请求,耗尽服务器的资源,无法响应正常的访问,造成网站实质下线
流量清洗(针对DDoS攻击的监控、告警和防护的一种网络安全服务)
备份网站
HTTP 请求的拦截
带宽扩容
CDN加速
- 啥是僵尸进程?如何查看?
defunct进程的出现时间是在子进程终止后,但是父进程尚未读取
我们用top命令查看zombie或者ps aux | grep Z会列出进程表中所有僵尸进程的详细内容
- ICMP是几层协议?
3层网络层协议
- 啥是静态网页,啥是动态网页。
静态网页是一经制成,内容不再变化, 如html
动态网页是内容可以变化,如 jsp php
- Linux中文件 inode? linux inode满了怎么办?
Inode就是索引节点,是储存文件元信息的区域
删除无用的临时文件
- Linux 里软连接和硬链接区别。
硬链接是复制原文件且互通
软链接相当于快捷方式
- Linux交换分区swap和物理内存的区别。
物理内存,从物理内存条获取的内存空间
交换分区:内存不足时将磁盘中的一部分空间释放出来,供当前运行的程序使用。
- 列出 LINUX 常见打包工具并写相应解压缩参数(至少三种)
tar gzip2 bzip xz
gzip -c FILE > FILE.gz保留源文件压缩
tar xf FILE
bzip2 -c FILE > FILE.bz2
xz -c FILE > FILE.xz
- 计划任务,每周六,14 ,16 ,18 执行备份脚本定时任务如何写
crontab -e
* 14,16,18 * * 6 sh /root/a.sh
- iptables开放DNS服务,命令如何写?
iptables -A INPUT -p udp --dport 53 -j ACCEPT
- TCP协议和UDP协议区别?
tcp是面向连接
udp是无连接
- Shell实现99乘法表
#!/bin/bash
for i in `seq 9`
do
for j in `seq $i`
do
echo -n "$j*$i=$[$j*$i] "
done
echo
done
- 磁盘空间满如何排查
df命令查看磁盘使用情况
du查看文件大小
- 日志分析你们关注哪些参数
客户端的ip地址
访问时间
HTTP协议
请求状态
- ansible和saltstack的区别
SaltStack是C/S架构,易扩展
Ansible 依靠SSH传输,无客户端,不易扩展
- MySQL innodb和myisam区别
1. InnoDB支持事务,MyISAM 不支持事务。
2. InnoDB支持外键,MyISAM 不支持外键。
3. InnoDB是聚集索引,MyISAM是非聚集索引。
4. InnoDB不保存表的具体行数,需要全表扫描。
MyISAM保存表的行数,执行语句速度很快;
5.InnoDB最小的锁粒度是行锁,MyISAM最小的锁粒度是表锁。
- 解释TPS、QPS、pv、uv , DAU, MAU , 并发数
qps 每秒请求数
tps 每秒处理事务数
pv 页面浏览量
uv 用户访问数
DAU 日活跃用户数量
MAU 月活跃用户人数
并发数 同时访问服务器的连接数
- linux最大文件数用ulimit 设置和修改配置文件配置
ulimit 限制 shell 启动进程所占用的资源
ulimit -f 数字 //设置文件的大小
默认是无限大【unlimited】
用ulimit -n命令,默认是1024 //最大文件数大小
vim /etc/security/limits.conf
末行追加
soft nofile 65565
hard nofile 65565
- 进程和线程的区别
进程是资源分配的最小单位
线程是程序执行的最小单位
- 啥是跨域?
解决浏览器的同源策略来实现跨域访问资源
- 介绍一下elk,由哪几部分组成?各部门都是干什么的?
Elasticsearch 存储和搜索日志
Logstash 收集、过滤日志
kibana web界面展示
- ansible的playbooke是干什么的
playbook是ansible用于配置,部署,和管理被控节点的剧本
- ansible用过哪些插件
Connection通信插件
Lookup循环插件
Vars变量插件
- Jenkins用过哪些插件
- elk一般用来收集哪些日志
Git插件将gitlab仓库内容拉取到本地
GitLab配置Gitlab的相关认证实现触发
Ansible执行Ansible任务
Publish Over SSH负责传输
nginx tomcat mysql
- zabbix主动模式和被动模式区别,如果让你zabbix服务器迁移,如何做?
Zabbix的主动模式和被动模式都是相对agent来说的
被动模式是 server主动去收集 agent上的数据,优点是模板多,更具灵活性,缺点server端压力大
主动模式就是agent将消息推送给server,优点是减轻了server的压力,缺点是所有的模板要修改为主动模式
1.部署新环境和代理
2.同步配置文件
3.关闭action,停掉旧节点
4.配置代理指向新节点
5.恢复action,配置web界面,重启即可
- Redis持久化两种方式,有什么区别?
Rdb 体积小,恢复速度快,安全性低
Aof 体积大,恢复速度慢,安全性根据策略决定
- 你们公司用的redis是什么架构
主从复制
哨兵
proxy集群
- 列举你知道存储系统例如NFS MFS
TFS 淘宝
GFS 谷歌
KFS 两个印度人
FASTDFS 中国人
- 描述一线自动化上线流程
研发人员上线代码到gitlab项目仓库、jenkins通过git插件将代码拉取到本地,通过ssh传输到ansible批量管理服务器
- 阿里云用过哪些产品?下面百度一下
ECS 云服务器 RDS 关系型数据库 SLB 负载均衡
OSS 开放存储服务 ESS 自动伸缩
ECS 云服务器:以虚拟机的方式将一台物理机分成多台云服务器,提供可伸缩的计算服务。
SLB 负载均衡:基于LVS和Tengine实现的4层和7层负载均衡,有动态扩容,session保持等特点。
RDS 关系型数据库:通过云服务的方式让关系型数据库管理、操作和扩展变得更加简单。
OSS 开放存储服务:对任意大小数据对象提供高可用,高可靠的海量存储服务。
ESS 自动伸缩:自动伸缩是一种根据业务需求和策略,自动调整其弹性计算资源的管理服务
- 你用docker做过什么
docekr部署 zabbix mysql lamp lnmp
- docker持久化怎么做的?
volumes:存于主机文件系统中的某个区域,由Docker管理(具名挂载;匿名挂载)
bind mount:存于主机文件系统中的任意位置(指定挂载)
tmpfs mount(Linux中):存于内存中
- docker 拉取,删除,启动镜像命令是什么,在写出其它你知道命令,至少6个
拉取镜像:docker pull 镜像名称
查看已经下载的镜像:docker images
删除镜像:docker rmi 镜像标识
运行容器:docker run 镜像名称
镜像导出:docker save -o 镜像id
镜像导入:docker load -i 镜像文件
71.Linux系统中病毒怎么解决
1)最简单有效的方法就是重装系统
2)要查的话就是找到病毒文件然后删除
top 命令找到cpu使用率最高的进程,rm -f 命令删除病毒文件,检查计划任务、开机启动项和病毒文件目录有无其他疑似文件等
3)删除病毒文件后不排除有潜伏病毒,所以最好是把备份重装一下
- iftop,ps,netstat,chattr,lsof,pstree这些命令都是干啥的
Iftop:实时流量监控工具
ps:显示当前进程的状态
netstat:监控TCP/IP网络的工具
chattr:改变文件属性
lsof:列出被各种进程打开的文件信息
pstree:所有进程以树状图显示
- 说说TCP/IP的七层模型
应用层 :为用户提供服务
表示层:数据的表示、安全、压缩。
会话层:会话的建立、管理、终止
传输层 :定义传输数据的协议端口号,以及流量控制和差错校验。
网络层 :进行逻辑地址寻址,实现不同网络之间的路径选择。
数据链路层:控制网络层与物理层之间通信
物理层:为数据传输提供可靠的环境
- vi和vim啥区别?说说在vim中删除 复制 粘贴 查找命令
Vi不支持正则表达式的搜索
Vim支持正则表达式的搜索
Vi没有自己的脚本语言
Vim有自己的脚本语言
删除:dd
复制:yy
粘贴:pp
查找:/
- 通过systemctl设置服务器的开机启动可以自动启动服务,除了这个还有没有其它的
写脚本 设置软链接
/etc/rc.local 永久修改
- 更改内核参数一般在哪个配置文件,如果直接配置会什么缺点。
/etc/sysctl.conf
当前有效,重启后无效
- 说说ftp主动模式和被动模式
参照物:ftp server端
主动模式:有利于ftp服务器的管理
ftp服务器的数据端口20主动连接客户端的数据端口,来建立数据连接,用来传输数据,这个数据连接的建立有可能被客户端防火墙拦截掉。
被动模式:有利于客户端服务器的管理
客户端的数据端口去连接ftp服务器的数据端口,建立数据连接。
- nginx调优做过哪些?
最大打开文件数
连接超时时间
缓存
系统连接数
worker_processes工作进程个数
worker_connections最大连接数
- 你是怎么理解运维的?
以服务为中心,以稳定、安全、高效为三个基本点,确保公司的互联网业务能够 7×24 小时为用户提供高质量的服务。
- 主从同步异常如何解决(不是重做主从)
1) 配置文件 添加slave-skip-errors = 错误代码 重启查看
2) stop slave;
跳过slave上的1个错误
mysql>set global sql_slave_skip_counter=1;
start slave;
- 代码上线时运维需要做的事情?
配合开发搭建测试环境
采购阿里云服务器,安装系统,配置服务提前确定好回滚机制
部署上线过程中出现bug,及时与开发沟通,解决bug后成功上线
82.文件已删除但空间不释放问题的分析与解决办法
du -sh /*//查看根目录文件大小,看有无大文件
df -h //查看磁盘使用情况
推测可能为文件被进程锁定或者有进程在一直写文件中的数据
使用lsof | grep delete查看文件删除列表,查找哪个服务被锁定,执行 kill -9 删除进程
清空日志echo " " > xx.log,df -h再次查看磁盘空间
- Tomcat 调优做过哪些
内存,并发,缓存,安全,网络,系统
并发:maxThreads 客户请求最大线程数
缓存:compression 打开压缩功能
- MySQL有哪些日志,如何打开慢查询日志
错误日志 查询日志 慢日志 二进制日志 中继日志
配置文件添加
slow_query_log = ON
slow_query_log_file = /var/lib/mysql/test-10-226-slow.log
long_query_time = 1
重启数据库
验证 show variables like '%slow_query%';
- MySQL数据库中delete 和truncate的区别
delete可带where条件删除,truncate只能删除整个表的数据
delete支持事务回滚【rollback】,truncate不支持
如果清空整个表的话,truncate会重建表结构,效率高,delete效率低
- redis持久化如何做?
RDB:会单独创建一个子进程【fork】来做持久化,先将数据写进一个临时文件,等持久化过程结束,用临时文件替换之前的持久化文件
AOF:将数据变更都写入指定目录下,保存数据完整性,持久化效果好
- zabbix监控nginx的哪些指标
Active connections: 活跃连接数
accepts:已接收的客户端请求数量
handled:已处理的客户端请求数量
requests:客户端发送的总请求数
Reading:正在读取客户端请求报文首部的连接数
Writing:正在向客户端发送响应报文的连接数
Waiting:正在等待客户端发送请求报文的空闲连接数
- 你们的微信报警怎么做的?
微信申请一个企业公众号
在企业号上新建应用
接口调用测试
配置脚本
Web界面新增报警媒介信息
测试是否成功
- 报警风暴如何避免
智能告警平台(Cloud Alert) CA,能快速接入各类告警信息,通过自动去重、规则压缩、算法降噪;同时通过分派、排班、通知等 功能,快速实现告警流程化管理,帮助运维团队更快响应告警,有序处理问题。
- zabbix有哪些监控方式,主动还是被动
主动是agent请求server获取主机的监控项列表,并主动将监控项内需要检测的数据提交给server
被动是server想agent请求获取监控项的数据,agent返回数据
- 除了zabbix你还了解过哪些监控
Nagios简单直观而且被监控端不要做任何配置
mrtg配置简单、源码开发、可定制
- 用过哪些zabbix的模板
Template App Zabbix Server
Template OS Linux
mysql监控报警
nginx连接监控报警
- 访问网站的流程
首先访问本地缓存,缓存里有就直接返回,没有的话就直接访问DNS服务器找相应的IP地址,找到后进入服务器主机里面找配置文件,在配置文件里面有相关的目录之类的,找到相关的目录后直接返还给客户
- 登录docker容器的方式有哪些
使用docker attach 【exit停止容器】
使用exec 【exit退出容器】
- mysql和nosql的区别
mysql关系型数据库,数据能持久化,存储在硬盘中,读取慢
nosql非关系型数据库,不能持久化,速度快效率高
- iptables是什么?在centos6和centos7中防火墙有啥区别?
防火墙
Centos6是iptables ,Centos7是firewall
iptables 用于过滤数据包,属于网络层防火墙
firewall 能够允许哪些服务可用,哪些端口可用,属于更高一层的防火墙
- 云服务 laas、paas、saas的区别
IaaS:基础设施服务:IaaS 是云服务的最底层,主要提供一些基础资源。用户需要自己控制底层,实现基础设施的使用逻辑。
PaaS:平台服务:PaaS 提供软件部署平台,抽象掉了硬件和操作系统细节,可以无缝地扩展。开发者只需要关注自己的业务逻辑,不需要关注底层
SaaS:软件服务SaaS 是软件的开发、管理、部署都交给第三方,不需要关心技术问题,可以拿来即用
- mysql数据库优化
系统内核优化
数据库性能优化
数据库配置优化
net.ipv4.tcp_fin_timeout = 30
#TIME_WAIT超时时间,默认是60s
net.ipv4.tcp_max_syn_backlog = 4096
#进入SYN队列最大长度,加大队列长度可容纳更多的等待连接
max_connections = 151
#同时处理最大连接数
open_files_limit = 1024
#打开文件数限制
- 主机名配置文件是什么
/etc/hostname
- dns服务器配置文件
/etc/resolv.conf
- 系统用户配置文件
/etc/passwd
- yum仓库配置文件
/etc/yum.repos.d/
- 文件系统挂在配置文件
/etc/fstab
- selinux配置文件
/etc/selinux/config
- centos6以前的系统服务配置文件
/etc/init.d/
- centos7以后的系统服务配置文件
/usr/lib/systemd/system/
- ssh服务器配置文件
/etc/ssh/sshd_config
- Redis数据库配置文件
redis.conf
- 网卡配置文件
/etc/sysconfig/network-scripts/
- 系统openfile配置文件
/etc/security/limits.conf
- 系统启动级别配置文件
/etc/inittab
- Apache的配置文件
/etc/httpd/conf/httpd.conf
- nginx配置文件
/etc/nginx/nginx.conf
- 系统内核参数配置文件
/etc/sysctl.conf
- nginx配置文件详解?
优化
worker_processes 1; --指定nginx要开启的进程数。最好与CPU个数相同。
worker_connections 1024; --每个进程的最大连接数
sendfile on; --高效文件传输模式。
gzip on; --支持压缩传输,提高传输速度
tcp_nopush on;优化网络传输
安全
location /admin {
allow 192.168.1.10;
deny all;
}
- NGINX配置文件分为那几部分?
nginx配置文件分为5个区块:
Main事件区块:影响全局的配置。
Events模块:影响服务器与用户网络连接的配置
HTTP模块:http的全局设置。
server模块:指定虚拟主机域名、IP和端口
location模块:location部分用于匹配网页位置
upstream模块:后端服务器的负载均衡
- nginx配置日志文件记录远程ip,时间,状态码,发送数据大小,从哪个页面访问的,客户端浏览器相关信息
/var/log/nginx/access.log
- 解释惊群现象
多个进程和线程同时阻塞等待一个事件,事件发生唤醒所有线程,但最终只能有一个线程对该事件进行处理,其他线程在失败后重新休眠,这种性能浪费就是惊群
Linux2.6版本以后,内核已经解决了accept()函数的“惊群”问题
处理方式就是,当内核接收到一个客户连接后,只会唤醒等待队列上的第一个进程或线程
- fastcgi是什么
FastCGI:Nginx本身不支持PHP等语言,但是它可以通过FastCGI来将请求扔给某些语言或框架进行处理
- 为什么nginx性能这么高
得益于它的事件处理机制:
异步非阻塞事件处理机制:运用了epoll模型,提供了一个队列,排队解决
事件收集器,事件发送器,事件处理器
- 在Nginx中,解释如何在URL中保留双斜线?
syntax: merge_slashes off
default: merge_slashes on
context: http,server
- fastcgi 与 cgi 的区别?
fastcgi 新增功能 分布式计算 【充分利用系统性能,提升系统安全性】
多角色与可扩展角色【认证和身份检查、转换数据格式】
- 写出下列参数
nginx工作进程数 worker_processes
nginx每个进程最大连接数 worker_connections
错误日志定义并指定级别 error_log /var/log/nginx/nginx_error.log crit; crit 记录最少,degug记录最多
访问日志定义 access_log path
日志格式定义 log_format name string
虚机域名配置 server_name name
根目录配置 root path;
首页配置
连接超时时间 keepalived_timeout timeout 默认75s
PID路径定义 pid logs/nginx.pid;
- autoindex是干什么的
自动变址, 自动索引
用@me来表示计数开始,而类似@me+1则可以指定数字开始
- nginx图片缓存30天如何写
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{expires 30d;}
location ~ .*\.(js|css)?$
{expires 12h; }
- nginx gzip模块如如何使用?
http{
gzip on; //开启压缩
gzip_min_length 1k; //设置阀值
gzip_buffers 4 32k; //设置压缩缓冲区数量和大小
gzip_http_version 1.1; //版本
gzip_comp_level 6; //压缩 比例
gzip_types text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml; //规定文件压缩类型
gzip_vary on; //启用
}
- NGINX如何将worker 进程绑定特定内核
worker_cpu_affinity
- NGINX常用命令
yum安装 启停 nginx
源码安装 启停 /usr/local/nginx/sbin/nginx // -s stop
不停机启动 nginx -s reload
指定配置文件启动 /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
检查配置文件 nginx -t
查看版本 nginx -v
- 用sed修改1.txt的23行study为xxx;
sed '23s/study/xxx/' 1.txt > 2.txt
sed -i '23s/study/xxx/' 2.txt
- 查看nginx日志50行第三列的内容
awk 'NR==50 {print $3}' access.log
- 删除日志文件里的空行
sed ‘/^$/d’ kong.txt > kong2.txt
sed -i '/^$/d' kong2.txt
- 删除日志文件里以#号开头的行
sed -i '1d' kong.txt
- 写一个每天0点执行的删除nginx日志的脚本,保留最近七天的日志
00 00 * * * find /var/log/nginx/ -type f -name '*.log' -mtime +7 -exec rm -f {} \;
- 查找名字为error.log的日志文件
find / -type f -name "error.log"
- 有一个文件,文件第二列为数字,查找第二列大于100的行?
awk ' $2>100' a.txt
- 假如系统有100个系统账号,名字一次为name1-name100,编写脚本删除这些用户
#!/bin/bash
for i in `seq 100`
do
userdel name$i
done
- 用iptable限制只有ip为192.168.0.55的IP访问本机22端口
iptables -I INPUT -p tcp --dport 22 -j DROP
iptables -I INPUT -s 192.168.0.55 -p tcp --dport 22 -j ACCEPT
- 查询文件里包含hhh的行并所在行的行号
grep -n 'hhh' h.txt
- 计算1到100相加
方法一:
seq 100|awk '{i=i+$1}END {print i}'
方法二:
#!/bin/bash
sum=0
for i in `seq 100`
do
sum=$[$sum+$i]
done
echo $sum
- 查找系统内文件大于60K小于100K的文件,并删除他们
find / -type f -size +50k -size -100k -exec rm -f {} \;
- 统计nginx日志每个iP出现的次数
cat /var/log/nginx/access.log |awk '{print $1}'|sort -r|uniq -c
- 统计log目录下以test开头的100个文件,然后把这100个文件的第一行保存到aaa这个文件中
find log -type f -name "test*" |head -100|xargs head -1 -q > aaa
- 文件如下
111
aaa
111
222
333
111
打印数量超过三次的行
cat three |sort|uniq -c|awk '{if($1>3){print $2}}'
- 系统里如何查看某个包是否安装
rpm -q nginx
- shell获取内存 CPU 硬盘
剩余内存:free |awk '/M/{print $4}'
cpu使用率:echo $(top -n1 |awk '/Cpu/{print $4}')%
磁盘总量:lsblk | awk '/disk/{print $4}'
- grep获取不包含an的行
grep -v an /etc/passwd
- vim打开一个文件,替换文中所有的user为users
//进入末行模式
:%s /user/users/g
- 删除文件中最后一行
sed -i '$d' user
- Linux启动流程
bios自检
加载主程序 【MBR】
加载次程序【GRUB】
内核映射
init进程
- 什么是微服务?
微服务架构就是将一个庞大的业务系统按照业务模块拆分成若干个独立的子系统,每个子系统都是一个独立的应用
- Spring cloud是什么?
Spring cloud 是对于微服务架构的实现,底层基于http协议
- Nginx工作模式
单进程:只有一个进程,所有工作都由它负责,一般在开发阶段和调试使用
master-worker:一个master管理至少一个worker,master管理worker有信号处理,加载配置等,worker挂掉master会再启一个,稳定和性能高
153. Cookie和session的区别
- 数据存放位置不同:
cookie数据存放在客户的浏览器上,即网页缓存
session数据放在服务器上,即key-value形式,如redis 和mongoDB - 安全程度不同:
cookie不安全,session安全 - 数据存储大小不同:
单个cookie保存的数据不能超过4K,一个站点普遍上限保存20个cookie
session存储于服务端,浏览器对其没有限制
154. Tomcat session共享
Tomcat内置的session复制方案
Spring Session也就是基于redis实现session共享
- docker容器有几种状态?
四种:运行、已暂停、重启、已退出
- dockerfile中最常见的指令是什么?
FROM:指定基础镜像
LABLE:为镜像指定标签
RUN:运行指定的命令
CMD:容器启动时要运行的命令
- docker三剑客
Compose 简化容器的生成和运行
Machine 负责在多种平台上快速安装 Docker 环境
Swarm 将多个 Docker 主机封装为单个大型的虚拟 Docker 主机
本文作者:寻仙阁
本文链接:https://www.cnblogs.com/wxfboke/p/16829569.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)