版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
软件运维笔试题及答案一、基础概念与理论1.请简述软件运维的核心目标及关键工作内容。答案:软件运维的核心目标是保障业务系统的高可用性、稳定性、安全性和性能优化,同时通过自动化降低人工操作风险,提升运维效率。关键工作内容包括:(1)系统监控:实时监控服务器、数据库、中间件的运行状态(CPU/内存/磁盘/网络),及时发现异常;(2)故障处理:快速定位并解决服务中断、性能瓶颈、安全漏洞等问题,缩短MTTR(平均修复时间);(3)容量管理:预测业务增长需求,合理规划服务器、存储、网络资源,避免资源浪费或不足;(4)变更管理:规范版本发布、配置修改流程,通过灰度发布、回滚机制降低变更风险;(5)安全运维:定期进行漏洞扫描、权限审计,部署防火墙、WAF等工具,防范DDoS、SQL注入等攻击;(6)自动化运维:通过脚本(Shell/Python)、工具(Ansible/Puppet)实现日常操作(如部署、监控、备份)的自动化,减少人为失误。2.什么是SLA(服务级别协议)?请举例说明其计算方式。答案:SLA是服务提供商与用户约定的服务质量标准,通常包含可用性、响应时间、故障修复时间等指标。例如,某云服务的SLA承诺“月度服务可用性不低于99.95%”,计算方式为:服务可用性=(总时间-不可用时间)/总时间×100%假设一个月按30天计算(30×24×3600=2,592,000秒),不可用时间(如服务中断)为T秒,则可用性需满足(2,592,000-T)/2,592,000≥99.95%,即T≤2,592,000×(1-0.9995)=1,296秒(约21.6分钟)。若某月不可用时间超过1,296秒,则服务商需按协议赔偿。3.简述容灾的三种类型(本地容灾、异地冷备、异地活备)的区别,并说明适用场景。答案:(1)本地容灾:数据备份至同一机房的不同存储设备(如磁盘阵列的RAID、本地磁盘快照),仅防范硬件故障,无法应对机房级灾难(如火灾、断电)。适用于对成本敏感、业务连续性要求较低的小型系统。(2)异地冷备:数据定期(如每日)通过网络传输至异地机房,但应用系统平时不运行,仅在主中心故障时手动启动。恢复时间长(可能数小时),适用于非实时性业务(如日志归档、历史数据存储)。(3)异地活备:主中心与备中心实时同步数据(如数据库主从复制、存储双活),备中心保持应用运行状态,主中心故障时可自动切换(如VIP漂移、DNS切换)。恢复时间短(秒级至分钟级),适用于高可用要求的核心业务(如支付、用户登录)。二、Linux操作系统与运维4.写出以下场景对应的Linux命令:(1)查看当前系统所有80端口的监听进程;(2)查找/var/log目录下7天前修改且大小超过100MB的日志文件;(3)将用户test的权限设置为:对文件/usr/local/app.conf有读和执行权限,其他用户无权限;(4)强制终止PID为1234的进程,并查看其终止后的状态;(5)查看最近7天的系统启动日志(位于/var/log/messages)。答案:(1)`netstat-tunlp|grep:80`或`lsof-i:80`(lsof需安装);(2)`find/var/log-typef-mtime+7-size+100M`(-mtime+7表示7天前修改,+100M表示超过100MB);(3)`chmod500/usr/local/app.conf`(5=4+1,用户读+执行;0=其他用户无权限),并确保文件属主是test(若需调整属主:`chowntest:test/usr/local/app.conf`);(4)`kill-91234`(强制终止),然后用`ps-p1234`查看是否仍存在(若不存在则终止成功);(5)`grep"$(date-d'7daysago'+'%b%d')"/var/log/messages`(需结合系统日志时间格式,若日志时间格式为“月日时间”,如“Oct0112:00:00”,则提取近7天的日期范围,或使用`journalctl--since"7daysago"`(若系统使用systemd))。5.简述Linux进程的五种状态(R/S/D/T/Z)及其含义,并说明僵尸进程(Z状态)的产生原因及解决方法。答案:(1)R(Running/Runnable):进程在CPU上运行或等待运行(就绪队列);(2)S(Sleeping):可中断睡眠,等待事件(如I/O完成),可被信号唤醒;(3)D(DiskSleep):不可中断睡眠,通常因内核态等待I/O(如磁盘写入),无法被信号终止;(4)T(Stopped):进程被暂停(如通过`kill-STOP`或调试器);(5)Z(Zombie):僵尸进程,进程已终止但父进程未调用`wait()`或`waitpid()`回收其资源(如进程描述符)。僵尸进程产生原因:子进程终止后,父进程未及时回收其状态信息(PCB),导致内核中残留进程条目。若父进程已终止(变成孤儿进程),则init进程(PID=1)会自动回收。解决方法:-若父进程仍运行,可发送SIGCHLD信号触发其回收(或修复父进程代码,添加`wait()`逻辑);-若父进程无响应,可终止父进程(`kill父进程PID`),此时init进程会接管并回收僵尸子进程。6.某服务器磁盘空间突然占满(/分区使用率100%),请列出排查步骤及常用工具。答案:排查步骤如下:(1)确认磁盘使用情况:`df-h`查看各分区使用率,`df-i`检查inode是否占满(可能文件过多导致inode耗尽);(2)定位大文件/目录:`du-sh/`(根目录下各目录大小),`du-h--max-depth=1/`(逐层排查),`find/-typef-size+1G`(查找超过1G的大文件);(3)检查临时文件:/tmp、/var/tmp是否有未清理的临时文件(如程序崩溃未释放的临时文件);(4)检查日志文件:/var/log下是否有日志未切割(如nginx/access.log无限增长),或日志轮转配置(logrotate)失效;(5)检查未释放的删除文件:`lsof|grepdeleted`(进程持有已删除文件的句柄,导致磁盘空间未释放,需重启对应进程);(6)检查磁盘配额:`quota-u用户名`(若启用配额限制);(7)确认是否有恶意文件:如挖矿程序生成的垃圾文件,或黑客上传的大文件(结合`ls-lt`查看最近修改的文件)。三、网络基础与运维7.简述TCP三次握手的过程,并说明第三次握手的作用。答案:三次握手是TCP建立连接的过程:(1)客户端发送SYN=1,随机序列号seq=x(请求连接);(2)服务器回复SYN=1,ACK=1(确认客户端请求),确认号ack=x+1,随机序列号seq=y;(3)客户端发送ACK=1,确认号ack=y+1(确认服务器连接)。第三次握手的作用:防止“已失效的连接请求报文”被服务器误接收。例如,客户端发送的SYN因网络延迟在连接关闭后到达服务器,若没有第三次握手,服务器会直接建立连接,导致资源浪费。通过第三次握手,客户端确认服务器的SYN有效,避免此类问题。8.某业务系统访问变慢,用户反馈“打开页面需要10秒”,请列出可能的网络层面原因及排查方法。答案:可能的网络原因及排查步骤:(1)网络延迟高:使用`ping目标IP`查看丢包率和延迟(正常应<50ms);`traceroute目标IP`定位跳数中的高延迟节点(如跨运营商链路)。(2)带宽瓶颈:使用`iftop`或`nload`查看服务器网卡流量,确认是否因带宽占满(如大文件下载、DDoS攻击)导致延迟。(3)TCP重传:通过`tcpdump-i网卡port业务端口-wcapture.pcap`抓包,用Wireshark分析是否有大量重传包(Retransmission),可能因网络丢包或路由不稳定。(4)DNS解析慢:使用`dig域名`或`nslookup`查看DNS解析时间(正常应<200ms),检查本地DNS缓存(如/etc/resolv.conf配置是否正确)或更换公共DNS(如14)。(5)NAT或防火墙限制:检查网关/防火墙的会话表(如`conntrack-L`)是否已满,导致新连接被丢弃;或查看防火墙日志(如iptables的LOG规则)是否有拦截。9.写出iptables命令实现以下策略:(1)禁止00访问本服务器的80端口;(2)允许SSH(22端口)仅来自/24网段的连接;(3)拒绝所有外部ICMP请求(禁止ping);(4)设置默认策略为拒绝所有入站连接,仅允许已建立的连接(ESTABLISHED)通过。答案:(1)`iptables-AINPUT-s00-ptcp--dport80-jDROP`;(2)`iptables-AINPUT-s/24-ptcp--dport22-jACCEPT`(需放在默认拒绝规则前);(3)`iptables-AINPUT-picmp--icmp-typeecho-request-jREJECT`;(4)默认策略设置:`iptables-PINPUTDROP`(默认拒绝入站);`iptables-AINPUT-mstate--stateESTABLISHED,RELATED-jACCEPT`(允许已建立的连接)。四、数据库运维(以MySQL为例)10.简述MySQL主从复制的原理及配置步骤(基于二进制日志)。答案:主从复制原理:主库将数据变更记录到二进制日志(binlog),从库通过I/O线程读取主库的binlog并写入本地中继日志(relaylog),然后SQL线程解析中继日志并应用到从库,实现数据同步。配置步骤:(1)主库配置:-编辑f,添加`server-id=1`(唯一标识),`log-bin=mysql-bin`(启用binlog),`binlog-do-db=指定同步的数据库`(可选);-重启MySQL,创建用于复制的用户:`GRANTREPLICATIONSLAVEON.TO'repl'@'从库IP'IDENTIFIEDBY'密码';`;-查看主库状态:`SHOWMASTERSTATUS;`(记录File和Position)。(2)从库配置:-编辑f,添加`server-id=2`(与主库不同),`relay-log=mysql-relay-bin`(启用中继日志);-重启MySQL,执行`CHANGEMASTERTOMASTER_HOST='主库IP',MASTER_USER='repl',MASTER_PASSWORD='密码',MASTER_LOG_FILE='主库的File',MASTER_LOG_POS=主库的Position;`;-启动从库复制:`STARTSLAVE;`;-检查状态:`SHOWSLAVESTATUS\G`,确保`Slave_IO_Running`和`Slave_SQL_Running`均为Yes。11.某MySQL数据库出现慢查询(查询耗时超过5秒),请列出排查及优化步骤。答案:排查步骤:(1)启用慢查询日志:修改f,设置`slow_query_log=1`,`slow_query_log_file=/var/log/mysql/slow.log`,`long_query_time=2`(记录超过2秒的查询),重启MySQL;(2)分析慢查询日志:使用`mysqldumpslow-st-t10/var/log/mysql/slow.log`(按时间排序,取前10条);(3)对慢查询执行`EXPLAIN`分析执行计划,关注`type`(是否全表扫描)、`key`(是否使用索引)、`rows`(扫描行数)等字段;优化方法:(1)添加索引:对WHERE、JOIN、ORDERBY涉及的字段添加索引(避免在低基数列如性别字段建索引);(2)优化查询语句:避免SELECT(仅查询需要的字段),减少子查询(改用JOIN),拆分复杂查询(如分页查询用LIMITOFFSET时,若OFFSET过大可改用范围查询);(3)分库分表:对数据量过大的表(如超过1亿条)按时间或业务维度拆分(水平分表/垂直分表);(4)调整MySQL配置:增大`innodb_buffer_pool_size`(缓存池大小,建议为内存的50%-70%),优化`join_buffer_size`、`sort_buffer_size`等参数;(5)使用读写分离:将查询压力分散到从库(主库写,从库读)。12.简述MySQL事务的ACID特性,并说明四种事务隔离级别的区别。答案:ACID特性:-原子性(Atomicity):事务要么全部提交,要么全部回滚;-一致性(Consistency):事务执行前后数据处于合法状态(如转账后总金额不变);-隔离性(Isolation):多个事务并发执行时,互不干扰;-持久性(Durability):事务提交后,数据变更永久保存(通过redolog实现)。四种隔离级别(从低到高):(1)读未提交(READUNCOMMITTED):允许事务读取其他事务未提交的数据(脏读);(2)读已提交(READCOMMITTED):仅读取已提交的数据(避免脏读,但可能出现不可重复读:同一事务两次查询结果不同);(3)可重复读(REPEATABLEREAD):同一事务内多次查询结果一致(避免不可重复读,但可能出现幻读:查询到其他事务新增的数据);(4)串行化(SERIALIZABLE):事务串行执行(避免所有并发问题,性能最低)。五、监控与故障排查13.简述Prometheus的核心组件及工作流程,并说明如何用其监控Nginx的请求量。答案:核心组件:-PrometheusServer:拉取(Pull)目标节点的指标数据,存储到时间序列数据库(TSDB);-Exporter(如node_exporter、nginx-vts-exporter):将被监控对象的指标(如CPU、Nginx请求数)转换为Prometheus兼容的格式;-Alertmanager:根据规则(alert.rules)触发报警(如邮件、Slack);-Pushgateway:用于临时任务或短生命周期作业主动推送(Push)指标到Prometheus(因Prometheus默认是Pull模式)。工作流程:PrometheusServer通过配置文件(prometheus.yml)定义Exporter的地址(如http://nginx服务器IP:9113/metrics),定时拉取指标;数据存储后,通过Grafana或内置的ExpressionBrowser可视化;Alertmanager根据预设的阈值(如Nginx请求量超过10万次/分钟)发送报警。监控Nginx请求量的步骤:(1)在Nginx服务器安装nginx-vts-exporter(或使用ngx_http_status_module),暴露指标接口(如/metrics);(2)在prometheus.yml中添加配置:```yamlscrape_configs:-job_name:"nginx"static_configs:-targets:["nginx服务器IP:9113"]假设exporter监听9113端口```(3)重启Prometheus,确认指标已采集(访问http://PrometheusIP:9090/targets查看状态);(4)在Grafana中添加数据源(Prometheus),创建仪表盘,使用查询语句`nginx_http_requests_total`(或具体的指标名)展示请求量趋势;(5)配置报警规则(如`rate(nginx_http_requests_total[5m])>10000`表示5分钟内平均请求量超过1万次/分钟时触发报警)。14.某Java服务突然无响应(无法连接8080端口),请列出排查步骤及常用命令/工具。答案:排查步骤:(1)确认服务进程是否运行:`ps-ef|grepjava`或`jps`(Java进程ID);若进程不存在,检查启动脚本或系统日志(/var/log/syslog)是否因OOM(内存溢出)被kill;(2)检查端口监听状态:`netstat-tunlp|grep8080`或`ss-tlnp|grep8080`;若端口未监听,可能是服务启动失败(查看应用日志如catalina.out、app.log);(3)检查资源使用情况:`top`或`htop`查看CPU/内存占用(如Java进程CPU100%可能是死循环);`free-h`检查内存是否耗尽(OOM会导致进程终止);`df-h`检查磁盘是否写满(日志无法写入可能导致服务阻塞);(4)分析线程状态:`jstack进程PID>jstack.log`(导出线程栈),查看是否有BLOCKED状态的线程(如锁竞争)或死锁;(5)检查网络连通性:`telnet服务器IP8080`(若无法连接,可能是防火墙拦截,检查iptables或云安全组规则);(6)查看应用日志:定位具体错误(如数据库连接失败、配置文件缺失),搜索关键词如“ERROR”、“Exception”;(7)重启服务测试:`systemctlrestart服务名`,观察是否能恢复;若反复失败,可能是代码缺陷或依赖服务(如Redis、MySQL)故障。六、自动化运维与工具15.编写一个Shell脚本,实现以下功能:(1)检查/var/log目录下所有以.log结尾的文件;(2)删除7天前修改且大小小于1MB的日志文件;(3)将操作结果(删除的文件路径、数量)记录到/var/log/clean_logs.log。答案:```bash!/bin/bashLOG_DIR="/var/log"CLEAN_LOG="/var/log/clean_logs.log"DELETE_COUNT=0记录开始时间echo"[$(date'+%Y-%m-%d%H:%M:%S')]开始清理日志...">>$CLEAN_LOG查找符合条件的日志文件并删除find$LOG_DIR-typef-name".log"-mtime+7-size-1M|whilereadfile;dorm-f"$file"if[$?-eq0];thenecho"删除文件:$file">>$CLEAN_LOG((DELETE_COUNT++))elseecho"删除失败:$file">>$CLEAN_LOGfidone记录结果echo"[$(date'+%Y-%m-%d%H:%M:%S')]清理完成,共删除$DELETE_COUNT个文件">>$CLEAN_LOG```16.简述Ansible的核心概念(Inventory、Playbook、Module),并编写一个Playbook实现以下目标:(1)在所有Web服务器(组名为web_servers)上安装Nginx;(2)复制自定义的nginx.conf到/etc/nginx/nginx.conf;(3)启动Nginx服务并设置开机自启。答案:核心概念:-Inventory:主机清单文件(默认/etc/ansible/hosts),定义被管理的主机及分组(如web_servers);-Playbook:YAML格式的任务编排文件,定义对目标主机执行的操作(如安装软件、复制文件、启动服务);-Module:Ansible的功能模块(如yum、copy、service),用于执行具体操作(如安装包、复制文件、管理服务)。Playbook示例(nginx_deploy.yml):```yaml-name:部署并配置Nginxhosts:web_servers目标主机组become:yes使用root权限tasks:-name:安装Nginxyum:name:nginxstate:present确保已安装-name:复制自定义配置文件copy:src:/local/path/nginx.conf本地自定义配置文件路径dest:/etc/nginx/nginx.confmode:0644目标文件权限backup:yes备份原配置文件-name:启动Nginx并设置开机自启service:name:nginx
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年江苏省新沂市高三生物上册期末考试模拟考试卷及参考答案
- 2026年河北省高碑店市高一化学上册期末考试模拟检测卷【有一套】附答案
- 2026年吉林省延吉市高一化学上册期末考试模拟检测卷必考题附答案
- 2026年山西省高平市高三物理下册期末考试模拟试卷及答案
- 2026年安徽省桐城市高三生物上册期末考试检测卷及参考答案
- 2026年湖北省宜都市高三生物上册期末考试模拟卷及答案
- 2026年河南省邓州市高三生物上册期末考试检测卷带答案
- 2026年江苏省太仓市高三生物上册期末考试检测卷含答案
- 2026年广东省英德市高三生物上册期末考试模拟测试卷及答案
- 五年级数学下册 第7课时 列方程解决实际问题
- 河南省安全生产考试点合规性检查表
- 红色管理课件
- 装配钳工试题题库及答案
- GB/T 45602-2025船舶与海洋技术可调式滚轮闸刀掣链器
- 2025年康复治疗师职业资格考试试题及答案
- 2025水土保持监测技术规范
- 2.2.1不等式及其性质 高一数学(人教B版2019必修第一册)
- 双峰驼血浆外泌体的分离鉴定及其差异miRNA生物信息学分析
- 中建龙门吊安拆专项施工方案
- DB15T3644-2024 国有企业阳光采购规范
- 大型健康科普活动方案设计
评论
0/150
提交评论