- 工作经验问题
- 常用的服务器型号
- 如何给服务器安装系统
- 给你100台服务器,你要如何管理?
- 平时的工作内容?
- 网站无法访问时排障思路
- 你会用什么方法查看某个应用服务的流量使用情况
- 说一下你们公司怎么发版的(代码怎么发布的)?
- ansbile同时分发过程很慢(默认逐台),如果解决
- 用什么命令可以查看上一次服务器启动的时间、上一次谁登录过服务器?
- 你在工作的过程中,遇到过你映像最深的是什么故障问题,你又是如何解决?
- 你在工作当中写什么脚本
- 本地的一个文件上传到服务器完成后,服务器上还是什么都没有,这有可能是什么问题?
- 网站访问的慢
- 我需要查看某个时间段的日志(比如access.log日志),如何实现?
- 给你一套环境,你会如何设计高可用、高并发的架构?
- 假如有人反应,调取后端接口时特别慢,你会如何排查
- mysql数据库用的是主从读写分离,主库写,从库读,假如从库无法读取了、或者从库读取特别慢,你会如何解决
- 你会怎么统计当前访问的IP,并排序?
- redis用在了哪些环境
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
张贺,多年互联网行业工作经验,担任过网络工程师、系统集成工程师、LINUX系统运维工程师
个人网站:www.zhanghehe.cn
笔者微信:zhanghe15069028807,现居济南历下区
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
下面是一些在面试的时候常常问到的与工作经验相关的问题,记录总结一下;
工作经验问题
常用的服务器型号
dell r640
dell r710
dell r720
如何给服务器安装系统
口头描述一下即可,过于简单,这里就略过了。
给你100台服务器,你要如何管理?
首先,我要知道要项目内容是什么?然后根据项目内容思考如何完成这个项目?在思考的同时把拓扑图要画出来,每一台机器要安装什么服务?完成什么任务?都要规划好,生成规范化的文档。
第一步是装系统,我们可以选项使用kickstart批量部署系统
第二步是连接系统,我们可以通过脚本批量推送公钥
第三步是批量优化系统和部署服务:ansible
第四步是测试服务,还有用脚本
第五步:批量监控,可以选项用zabbix
平时的工作内容?
- 睡觉之前和起床之后,先看有没有监控系统发的报警邮件。
- 上班第一件事,看监控,看日志,看有没有什么异常,该扩容扩容,该修复修复。
- 问问领导,今天有没有什么任务,如果有就干呗!如果没有就思考思考还有什么地方需要优化,找同事或找领导讨论讨论。
- 维护好同事关系,去给开发聊一聊天,吃个饭,让工作好干一点!
- 开放性,经常看看公众号,看有没有新的漏洞,的技术,想想能不能应用到实际环境当中。看看社区解决里面有没有人提问什么问题,力所能及的帮一把。思考最近做了什么事情?解决了什么故障?写成博客,分享在网上,在自己所在的QQ群和微信群都发一发,保持在活跃度,其目的是形成个人品牌效应。
- 下班之前写一写日报,及时向领导汇报工作。
网站无法访问时排障思路
有个客户说访问不到你们的网站,但是你们自己测试内网和外网访问都没问题。你会怎么排查并解决客户的问题?
我们自己测了都没问题,只是这个客户访问有问题,那肯定是要先联系到这个客户,能远程最好,问一下客户的网络是不是正常的,访问其它的网站有没有问题(比如京东、百度什么的)。如果访问其它网站有问题,那叫客户解决本身网络问题。如果访问其它网站都没问题,用ping和nslookup解析一下我们的网站是不是正常的,让客户用IP来访问我们的网站是否可行,如果IP访问没问题,那就是客户的DNS服务器有问题或者DNS服务器解析不到我们的网站。还有一种可能就是跨运营商访问的问题,比如我们的服务器用的是北方联通、而客户用的是南方移动,就也有可能突然在某个时间段访问不到,这种情况在庞大的中国网络环境中经常发生(一般是靠CDN解决)。还有可能就是我们的网站没有SSL证书,在公网是使用的是http协议,这种情况有可能就是没有用https协议网站被运营商劫持了。
你会用什么方法查看某个应用服务的流量使用情况
笔者回答:如果是单一应用的服务器,只需要用iftop、sar等工具统计网卡流量就可以。如果服务器跑了多个应用,可以使用nethogs工具实现,它的特别之处在于可以显示每个进程的带宽占用情况,这样可以更直观获取网络使用情况。
说一下你们公司怎么发版的(代码怎么发布的)?
jenkins配置好代码路径(SVN或GIT),然后拉代码,打tag。需要编译就编译,编译之后推送到发布服务器(jenkins里面可以调脚本),然后从分发服务器往下分发到业务服务器上。
ansbile同时分发过程很慢(默认逐台),如果解决
用过ansible的(copy file yum ping command shell)等模块;ansible默认只会创建5个进程,所以一次任务只能同时控制5台机器执行.那如果你有大量的机器需要控制,或者你希望减少进程数,那你可以采取异步执行.ansible的模块可以把task放进后台,然后轮询它.这使得在一定进程数下能让大量需要的机器同时运作起来.
用什么命令可以查看上一次服务器启动的时间、上一次谁登录过服务器?
笔者回答:w命令查看上次服务器启动时间。last命令 查看登录。
你在工作的过程中,遇到过你映像最深的是什么故障问题,你又是如何解决?
你在工作当中写什么脚本
本地的一个文件上传到服务器完成后,服务器上还是什么都没有,这有可能是什么问题?
网站访问的慢
我是这么说的:问清楚反应的人哪个服务应用或者页面调取哪个接口慢,叫他把页面或相关的URL发给你,首先,最直观的分析就是用浏览器按F12,看下是哪一块的内容过慢(DNS解析、网络加载、大图片、还是某个文件内容等),如果有,就对症下药去解决(图片慢就优化图片、网络慢就查看内网情况等)。其次,看后端服务的日志,其实大多数的问题看相关日志是最有效分析,最好用tail -f 跟踪一下日志,当然你也要点击测试来访问接口日志才会打出来。最后,排除sql,,找到sql去mysql执行一下,看看时间是否很久,如果很久,就要优化SQL问题了,expain一下SQL看看索引情况啥的,针对性优化。数据量太大的能分表就分表,能分库就分库。如果SQL没啥问题,那可能就是写的逻辑代码的问题了,一行行审代码,找到耗时的地方改造,优化逻辑。
我需要查看某个时间段的日志(比如access.log日志),如何实现?
笔者回答:方法有很多种,比如我要看查的时间是2018年1月9号--1月10号的日志吧。
比如可以用sed命令,格式为:sed -n '/起始时间/,/结束时间/p' 日志文件,如下:
sed -n '/09/Jan/2018/,/10/Jan/2018/p' access.log
比如可以用grep,格式为:grep -E '起始时间|结束时间' 日志文件,如下:
grep -E '09/Jan/2018|10/Jan/2018' access.log
当然,你还可以结合cat、grep 、awk这些命令一起来使用都行。
给你一套环境,你会如何设计高可用、高并发的架构?
如果这套环境是部署在云端(比如阿里云),你就不用去考虑硬件设计的问题。可直接上阿里云的SLB+ECS+RDS这套标准的高可用、高并发的架构。对外服务直接上SLB负载均衡技术,由阿里的SLB分发到后端的ECS主机;ECS主机部署多台,应用拆分在不同的ECS主机上,尽量细分服务。数据库用RDS高可用版本(一主一备的经典高可用架构)、或者用RDS金融版(一主两备的三节点架构)。在结合阿里其它的服务就完全OK,业务量上来了,主机不够用了,直横向扩容ECS主机搞定。
如果这套环境托管在IDC,那么你就要从硬件、软件(应用服务)双面去考虑了。硬件要达到高可用、高并发公司必须买多套网络硬件设备(比如负载设备F5、防火墙、核心层交换、接入层交换)都必须要冗余,由其是在网络设计上,设备之间都必须有双线连接。设备如果都是跑的单机,其中一个设备挂了,你整个网络都瘫痪了,就谈不上高可用、高并发了。其次在是考虑应用服务了,对外服务我会采用成熟的开源方案LVS+Keepalived或者Nginx+Keepalived,缓存层可以考虑redis集群及Mongodb集群,中间件等其它服务可以用kafka、zookeeper,图片存储可以用fastDFS或MFS,如果数据量大、又非常多,那么可采用hadoop这一套方案。后端数据库可采用 “主从+MHA”。这样一套环境下来是绝对满足高可用、高并发的架构。
假如有人反应,调取后端接口时特别慢,你会如何排查
问清楚反应的人哪个服务应用或者页面调取哪个接口慢,叫他把页面或相关的URL发给你,首先,最直观的分析就是用浏览器按F12,看下是哪一块的内容过慢(DNS解析、网络加载、大图片、还是某个文件内容等),如果有,就对症下药去解决(图片慢就优化图片、网络慢就查看内网情况等)。其次,看后端服务的日志,其实大多数的问题看相关日志是最有效分析,最好用tail -f 跟踪一下日志,当然你也要点击测试来访问接口日志才会打出来。最后,排除sql,,找到sql去mysql执行一下,看看时间是否很久,如果很久,就要优化SQL问题了,expain一下SQL看看索引情况啥的,针对性优化。数据量太大的能分表就分表,能分库就分库。如果SQL没啥问题,那可能就是写的逻辑代码的问题了,一行行审代码,找到耗时的地方改造,优化逻
mysql数据库用的是主从读写分离,主库写,从库读,假如从库无法读取了、或者从库读取特别慢,你会如何解决
笔者回答:这个问题笔者觉得回答的不太好,对mysql比较在行的朋友希望能给点建议。以解决问题为前提条件,先添加从库数量,临时把问题给解决,然后抓取slow log ,分析sql语句,该优化就优化处理。慢要不就是硬件跟不上,需要升级;要不就是软件需要调试优化,等问题解决在细化。
你会怎么统计当前访问的IP,并排序?
笔者回答:统计用户的访问IP,用awk结合uniq、sort过滤access.log日志就能统计并排序好。一般这么回答就够了,当然你还可以说出其它方式来统计,这都是你的加分项。
redis用在了哪些环境
java、php环境用到了redis,主要缓存有登录用户信息数据、设备详情数据、会员签到数据等