目录

1.自我介绍

2.项目介绍

3.Python装饰器

4.Python学了多久 DJango学了多久

5.Load的性能指标  怎么检测

6.负载指标

7.Buff cache区别

8.用什么查看磁盘io性能

9.三次握手的过程

10.第一次握手 服务端没有响应 客户端会做什么

11.502 504  500

12.Http1.0 http1.1 的区别

13.Dns劫持

14.智能dns

15.$*

16.Apache 和nginx区别

17.Nginx的调优

18.运维开发 运维的工作职责

19.最近在学什么东西

20.开发这块在学什么

21.手撕代码


1.自我介绍

2.项目介绍

一.CMDB自动化资产扫描

项目目的:

实现Web形式的自动化运维系统,远程控制服务器,  提高运维工程师的工作质量和效率。

项目步骤:

1.配置settings.py 定义数据库的信息(配置mysql数据库,其中数据库名字,用户密码,其中都需要提前主机中创建好)

2.models.py定义数据库的结构并生成迁移脚本并写入数据库:python3 manage.py makemigrations   python3 manage.py migrate

3.建立admin.py管理登录用户

4.建立views.py(保存函数或者类的视图文件)完成视图层的创建

nmap扫描存活主机;telnetlib判断ssh服务是否开启,即是否为linux服务器;paramiko实现远程登录。

5.前段html文件配置

6.路由文件配置(主路由调用admin,子路由调用views)

项目中遇到的难点:

1.Linux中使用mysql需要mysqlclient模块,需安装mysql-devel这个依赖项才可使用。

SQLITE功能简约,小型化,追求最大磁盘效率;MYSQL功能全面,综合化,追求最大并发效率。如果只是单机上用的,数据量不是很大,需要方便移植或者需要频繁读/写磁盘文件的话,就用SQLite比较合适;如果是要满足多用户同时访问,或者是网站访问量比较大是使用MYSQL比较合适。

2.各个模块的探索,以及,views编写的困难,utils的分离

二. lvs+keepalived

项目目的
随着企业信息化的不断发展,需要面对越来越复杂的业务和越来越多样化的用户需求,例如
单点故障问题、负载均衡问题。而 LVS+keepalived 构建的高可用负载均衡集群则完美解决了这些问
题,提高了运维服务质量。
项目步骤:
1.为调度节点VS与其备份安装keepalived,并修改其配置文件(master、backup, 调度主机工作模式为 DR,调度算法为 rr,加入后端RS)
2. 在真实主机中通过 arptables 将 RS 对 VIP 的响应屏蔽,此时可实现负载均衡,服务配置完毕
3.此时若真实主机故障,keepalived 的健康监测会探测到并以邮件形式通知调度主机;若调度主机失

效,备份的调度主机会自动被调用,且服务端不会察觉到变化
项目难点:
RS中屏蔽服务端的直接访问(arptable)

三.nginx+jdk+tomcat+memcache实现会话保持

项目目的

在交易类的电子商务网站,需要有购物车记录用户的购买信息,用户每次购买请求都是向购物车中增加商品;在社交类的网站中,需要记录用户的当前登录状态、最新发布的消息及好友状态等,用户每次刷新页面都需要更新这些信息。而基于nginx+tomcat+memcache实现的会话保持则完美解决了这些问题,提升了客户体验与运维服务质量。

项目步骤

1.调度节点安装nginx,编译时需加入sticky模块;服务端安装tomcat、memcache、jdk。

2.激活调度节点的粘滞模块sticky,使得登录页面不会来回跳转

3.配置服务端tomcat的测试登录页面,并开启tomcat

4.配置服务端的session管理器,实现交叉缓存

5.此时多次登录仍会保存之前的登录信息,且当一个服务端挂掉时,另一个服务端会接管并保存之前的登录信息在页面中。

项目难点

3.讲一下Python装饰器

装饰器其实就是一个闭包,把一个函数当作参数然后返回一个替代版函数。

在不改动函数代码的基础上无限制扩展函数功能的一种机制,本质上讲,装饰器是一个返回函数的高阶函数
-装饰器的使用: 使用@语法, 即在每次要扩展到函数定义前使用@+函数名

python装饰器本质上就是一个函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外的功能,装饰器的返回值也是一个函数对象(函数的指针)。装饰器函数的外部函数传入我要装饰的函数名字,返回经过修饰后函数的名字;内层函数(闭包)负责修饰被修饰函数。

4.Python学了多久 DJango学了多久

5.Load的性能指标  怎么监控

average load :在过去的1分钟的平均负载

cpu utilization: cpu的使用率 disk traffic: disk传输率

paging rate:每秒从磁盘读到物理内存,或者从物理内存写到页面文件的内存页数

Swap-in rate:每秒交换到内存的进程数

Swap-out rate:每秒从内存交换出来的进程 (如果发现服务器重启后不能监控了,可以手动重启rpc.rstatd)

6.average load负载指标达到多少需要注意

假设系统是 1 个 CPU 单核

如果负载为 0.7, 并且长时间大于 0.7(观察前 5 分钟、 15 分钟数据), 那么需要去调查一下原因, 以免进一步恶化

如果负载为 1, 并且长时间大于 1, 需要立刻发现问题并修复它

如果负载为 5, 并且长时间大于 5, 整个系统会慢下来, 页面加载不出来, 等严重问题出现

如果是多 CPU 多核, 依此类推, 当 load average 达到总核数的时候, SA(System Administration)应该会提示报警, 研发人员就要去定位问题, 解决问题。

7.Buffer cache区别

  1. Buffer(缓冲区)是系统两端处理速度平衡(从长时间尺度上看)时使用的。它的引入是为了减小短期内突发I/O的影响,起到流量整形的作用。比如生产者——消费者问题,他们产生和消耗资源的速度大体接近,加一个buffer可以抵消掉资源刚产生/消耗时的突然变化。
  2. Cache(缓存)则是系统两端处理速度不匹配时的一种折衷策略。因为CPU和memory之间的速度差异越来越大,所以人们充分利用数据的局部性(locality)特征,通过使用存储系统分级(memory hierarchy)的策略来减小这种差异带来的影响。
  3. 假定以后存储器访问变得跟CPU做计算一样快,cache就可以消失,但是buffer依然存在。比如从网络上下载东西,瞬时速率可能会有较大变化,但从长期来看却是稳定的,这样就能通过引入一个buffer使得OS接收数据的速率更稳定,进一步减少对磁盘的伤害。

8.用什么查看磁盘io性能

iostat命令主要用于监控系统设备的IO负载情况,iostat首次运行时显示自系统启动开始的各项统计信息,之后运行iostat将显示自上次运行该命令以后的统计信息,

9.三次握手的过程

10.第一次握手 服务端没有响应 客户端会做什么

一直重发syn

11.502 504  500

500 – 内部服务器错误。

501 - 服务器还是不具有请求功能

502 - 服务器网关错误

503 - 服务器不可用

504 - 服务器网关超时

12.Http1.0 http1.1 的区别

1.1 长连接(Persistent Connection)

HTTP1.1支持长连接和请求的流水线处理,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟,在HTTP1.1中默认开启长连接keep-alive,一定程度上弥补了HTTP1.0每次请求都要创建连接的缺点。HTTP1.0需要使用keep-alive参数来告知服务器端要建立一个长连接。

1.2 节约带宽

HTTP1.0中存在一些浪费带宽的现象,例如客户端只是需要某个对象的一部分,而服务器却将整个对象送过来了,并且不支持断点续传功能。HTTP1.1支持只发送header信息(不带任何body信息),如果服务器认为客户端有权限请求服务器,则返回100,客户端接收到100才开始把请求body发送到服务器;如果返回401,客户端就可以不用发送请求body了节约了带宽。

1.3 HOST域

在HTTP1.0中认为每台服务器都绑定一个唯一的IP地址,因此,请求消息中的URL并没有传递主机名(hostname),HTTP1.0没有host域。随着虚拟主机技术的发展,在一台物理服务器上可以存在多个虚拟主机(Multi-homed Web Servers),并且它们共享一个IP地址。HTTP1.1的请求消息和响应消息都支持host域,且请求消息中如果没有host域会报告一个错误(400 Bad Request)。

1.4缓存处理

       在HTTP1.0中主要使用header里的If-Modified-Since,Expires来做为缓存判断的标准,HTTP1.1则引入了更多的缓存控制策略例如Entity tag,If-Unmodified-Since, If-Match, If-None-Match等更多可供选择的缓存头来控制缓存策略。

1.5错误通知的管理

在HTTP1.1中新增了24个错误状态响应码,如409(Conflict)表示请求的资源与资源的当前状态发生冲突;410(Gone)表示服务器上的某个资源被永久性的删除。

13.Dns劫持

DNS劫持 就是通过劫持了 DNS 服务器,通过某些手段取得某域名的解析记录控制权,进而修改此域名的解析结果,导致对该域名的访问由原 IP 地址转入到修改后的指定 IP,其结果就是对特定的网址不能访问或访问的是假网址,从而实现窃取资料或者破坏原有正常服务的目的。DNS劫持 通过篡改 DNS 服务器上的数据返回给用户一个错误的查询结果来实现的。

DNS劫持 症状:某些地区的用户在成功连接宽带后,首次打开任何页面都指向 ISP 提供的“电信互联星空”、“网通黄页广告”等内容页面。还有就是曾经出现过用户访问 Google 域名的时候出现了百度的网站。这些都属于 DNS劫持。

对于 DNS劫持,可以通过手动更换 DNS 服务器为 公共DNS 解决。

14.智能dns

智能NDS又称为解析切割,是对请求DNS解析的IP地址进行判断,将域名解析成不同的IP地址

一般智能DNS应用常见的场景就是CDN,中国特色的网络结构,就是联通和电信,二者通过在北京的机房的100G的宽带相连,这就导致了电信访问联通的会非常慢,所以CDN的原理就在智能DNS基础上进行web反向代理缓存实现的,通过不同地域的请求解析到对应的缓存服务器上,然后缓存服务器对主服务器进行数据请求,最终返回给客户,这对静态网页的网站非常有用

15.$*

$0: 脚本本身文件名称
$1: 命令行第一个参数,$2为第二个,以此类推
$*: 所有参数列表
$@: 所有参数列表
$#: 参数个数
$$: 脚本运行时的PID
$?: 脚本退出码

16.Apache 和nginx区别

Nginx相对于Apache的优势:

1.轻量级,采用C进行编写,同样的web服务,会占用更少的内存及资源
2.抗并发,nginx以epoll and kqueue作为开发模型,处理请求是异步非阻塞的,多个连接对应一个进程,负载能力比apache高很多,而apache则是同步多进程模型,只能一个连接对应一个进程,当压力过大时,它是会被阻塞型的。在高并发下nginx能保持低资源低消耗高性能 ,而apache在PHP处理慢或者前端压力很大的情况下,很容易出现进程数飙升,从而拒绝服务的现象。
3.设计高度模块化,编写模块相对简单
4.配置简洁,正则配置让很多事情变得简单,而且改完配置能使用 -t 测试配置有没有问题,apache 配置复杂 ,重启的时候发现配置出错了,会很崩溃
5.一般用于处理静态文件,静态处理性能比apache高三倍以上
6.作为负载均衡服务器,支持7层负载均衡
7.本身就是一个反向代理服务器,而且可以作为非常优秀的邮件代理服务器
8.nginx启动特别容易, 并且几乎可以做到 7*24 不间断运行,即使运行数个月也不需要重新启动,支持热部署,比如:实现不间断服务的情况下进行软件版本的升级与版本的回退
9.社区活跃,各种高性能模块出品迅速

Apache相对于Nginx的优势:

1.apache的rewrite比nginx强大,在rewrite频繁的情况下,用apache
2.apache发展到现在,模块超多,基本想到的都可以找到
3.apache更为成熟,少bug ,nginx的bug相对较多
4.apache超稳定,一个进程死掉时,会影响到多个用户的使用,稳定性差
5.apache对PHP支持比较简单,nginx需要配合其他后端用
6.apache在处理动态请求有优势,nginx在这方面是鸡肋,一般动态请求要apache去做,nginx适合静态和反向。
7.apache仍然是目前的主流,拥有丰富的特性,成熟的技术和开发社区

总结:

两者最核心的区别在于:
Apache是同步多进程模型,一个连接对应一个进程,而Nginx是异步的,多个连接(万级别)可以对应一个进程。

17.Nginx的调优

1.worker_processes的进程数,数量要与CPU数量一致,通过lscpu查看

worker_processes 1; 

2.worker process打开文件数的优化

worker_rlimit_nofile 65535;

2.1 优化了nginx的worker进程最多打开数量的参数之后,还需要优化系统内核参数(允许打开最多文件的参数)

临时配置: ulimit -Hn 100000
ulimit -Sn 100000          永久配置:vim /etc/security/limits.conf* soft nofile 100000* hard nofile 100000

3.单个进程最大连接数的优化

events {worker_connections 2048;multi_accept on;use epoll;}

4.隐藏版本信息的优化

server_tokens off;

5.高效文件传输模式的

sendfile on;tcp_nopush on;tcp_nodelay on;

6.访问日志关闭的优化

access_log off;

7.超时时间的优化

keepalive_timeout 10; //设置客户端保持活动状态的超时时间client_header_timeout 10; //客户端请求头读取超时时间client_body_timeout 10; //客户端请求体读取超时时间reset_timedout_connection on; //在客户端停止响应之后,允许服务器关闭连接,释放socket关联的内存send_timeout 10; //指定客户端的超时时间,如果在10s内客户端没有任何响应,nginx会自动断开连接

8.gzip的优化

gzip on;//开启压缩gzip_min_length 1000;//小文件不压缩gzip_comp_level 6;//压缩比例gzip_types text/plain text/css application/json application/x-javascript text/xml
application/xml application/xml+rss text/javascript;//对指定文件类型进行压缩

9.缓存静态页面的优化 (文件句柄是打开文件的唯一标示)

open_file_cache max=100000 inactive=20s; //设置服务器最大缓存10万个文件句柄,关闭20s内无请求的句柄open_file_cache_valid 30s;//文件句柄的有效期为30sopen_file_cache_min_uses 2;//最少打开2次才会被缓存open_file_cache_errors on;

18.运维开发 运维的工作职责

运维工程师的工作职责
1    负责日常系统维护,及监控,提供IT软硬件方面的服务和支持,保证系统的稳定。

2    参与设计、审核、优化公司IT系统以及各应用系统的体系架构;

3    全面负责公司运维项目的系统升级、扩容需求与资源落实,配合开发需求,测试、调整运维平台;

4    负责网络以及服务器的网络设置、维护和优化、网络的安全监控、系统性能管理和优化、网络性能管理和优化;

5    建立面向开发部门,业务部门的服务流程和服务标准;

6    负责IT运维相关流程的规划、设计、推行、实施和持续改进;

7    负责内部分派下发,对实施结果负责。

8    负责日常网络及各子系统管理维护。

9    负责设计并部署相关应用平台,并提出平台的实施、运行报告。

10    负责配合开发搭建测试平台,协助开发设计、推行、实施和持续改进。

11    负责相关故障、疑难问题排查处理,编制汇总故障、问题,定期提交汇总报告。

12    负责网络监控和应急反应,以确保网络系统有7*24小时的持续运作能力。

19.最近在学什么东西

20.开发这块在学什么

21.手撕代码

20200820美团运维SRE一面面经(问题+答案)相关推荐

  1. 20200820美团运维工程师一面面经

    美团运维工程师一面(2020.8.20) 总过程:一个小时 1.自我介绍 2.运维学习如何开展 3.学习过程中有挑战的事情,具体例子 (1)源码编译mysql8.0数据库的时候,遇到依赖性的解决方法, ...

  2. 美团运维SRE+运维开发一面面经汇总

    目录 网搜面经 1.怎么理解SRE 2.说说你在实习的主要工作 3.工作期间遇到问题,服务出现报错会怎么解决(上网查啊,看日志定位,修改) 4.Linux了解多少,项目中会用到吗,你会负责些什么(还不 ...

  3. 美团运维面试官没想到jenkins我用得这么溜,人直接傻掉

    前言 春天来了,在家玩了半年,也该出去散散心了,顺便收获几个offer练练手,要不然都没有办法给小伙伴们发面试题了. 所谓知己知彼方能百战不殆,我先是在网上搜索了一下关于最近的运维职位,发现还行,大多 ...

  4. 月薪30K的运维工程师面试宝典(含答案)

    同岗不同薪并不完全稀奇,无论是在同一家企业还是同一领域的不同企业,同一岗位的薪资待遇都会有所差距,谁都不想当底薪的那一个,所以要做就做最好的. 因此,运维想要拿高薪,冲击大厂是最直接的方法.今天就给各 ...

  5. 三七互娱-游戏运维岗笔试题(无答案)

    (1)简述TCP/IP三次握手和四次挥手过程 (2)磁盘分区空间还充足,但用户无法写入了,简述可能的原因 (3)把列表[1,3,5,7,9]倒序并将元素变为字符类型,请写出多种方法 (4)使用gran ...

  6. 系统运维工程师面试题及参考答案

    1. raid0 raid1 raid5 原理与区别 raid0至少2块硬盘.吞吐量大 性能好 同时读写,但损坏一个就完蛋 raid1至少2块硬盘.相当于 一个镜像,一个存储.安全性比较高.但是性能比 ...

  7. TOP互联网公司都在用,为什么SRE比传统运维更抢手?

    阿里妹导读:双11的完美收官,2684亿的销售奇迹及顺滑极致的客户体验让双11背后的技术再次被推到风头浪尖.而双11技术热点话题,不得不提集团核心系统100%上云这一技术创举. 作为集团上云的底座产品 ...

  8. 工具化、产品化、运营化—「美团点评」运维的故事

    本次分享嘉宾是美团点评运维中心高级总监钟红军,他向我们详细介绍了美团点评近3年来在大规模运维的理念和实践方面的探索,尤其是在运维自动化和数据运营方面的工作和效果-- 钟红军 / 美团点评运维中心高级总 ...

  9. 云原生背景运维转型之 SRE 实践

    作者:yorkoliu,腾讯 IEG 业务运维专家 一.前言 上一篇文章<云原生背景下的运维价值思考与实践(上)> 重点介绍了云原生背景下运维转型的思考,围绕着整个 DevOps 交付链, ...

最新文章

  1. MyEclipse数据库连接配置(以Oracle为例)
  2. nodejs中的fiber(纤程)库详解
  3. 雅虎核心业务售与Verizon:互联网先驱的时代终结
  4. Tornado同步api和异步api混写一例
  5. excel中怎样用公式获取表单控件_挑战高手:用不到 100 行代码,在前端实现 Excel 全部功能...
  6. Linux系统编程35:多线程之如何理解Linux中的线程以及轻量级进程LWP
  7. Java中大规模集合快速求和计算
  8. python面向对象和面向过程_python--什么是面向对象和面向过程,对象的进化,什么是对象...
  9. Python接口自动化测试系列文章汇总
  10. Mysql中导入和导出数据库
  11. opencv基础:相机参数标定(camera calibration)及标定结果如何使用
  12. 【USACO 2.3.4】Cow Tours 牛的旅行
  13. 模拟人生4修改服务器,模拟人生4 全秘籍、作弊码一览 模拟人生4修改方法汇总...
  14. 孙悟空这个农村人(搞笑)
  15. vue实现前端搜索功能
  16. 连上手机就能偷你信息?一定要注意你身边的共享充电宝。
  17. 【mmdetection】mmdetection安装详细步骤
  18. 电脑开机时stage 1 fo 3 stage 2 fo 3 Checking file system on D:
  19. 拦截导弹 导弹防御系统
  20. java-net-php-python-ssm高校学生学业分析及预警系统查重PPT计算机毕业设计程序

热门文章

  1. ES健康状态red问题处理
  2. #10164. 「一本通 5.3 例 2」数字游戏
  3. MYSQL 获得当前日期时间 函数 当前时间后一月
  4. 区块链开发公司之区块链技术融合云计算能否碰撞出新火花
  5. 打游戏csgo的时候莫名其妙卡一下
  6. PHP运行时网页出现乱码怎么解决
  7. 11:类和对象、类的属性、类的方法
  8. Adobe Creative Suite 6 CS6 正式版下载大全
  9. js的计时事件. 圆形时钟
  10. php微信公众号支付实例教程,微信支付PHP SDK之微信公众号支付代码详解_php实例...