Skip to content

服务器运维面试题库(带答案) ​

生成时间:2026-05-21 22:26


【面试题】1. Nginx的location匹配规则优先级是怎样的? ​

【标准答案】 location匹配有四种类型,优先级从高到低:第一是精确匹配 location = /path,完全相同才命中;第二是前缀匹配 location ^~ /path,匹配后停止正则搜索;第三是正则匹配 location ~ /path 或 location ~*,按配置顺序匹配,区分大小写用~,不区分用~*;第四是普通前缀匹配 location /path,最长前缀优先。

面试加分点:实际配置时,建议静态资源用 ^~ 前缀,避免正则匹配的性能开销。比如 location ^~ /static/ 配合 alias 指令,命中后直接返回,不再走正则。


【面试题】2. Nginx如何实现平滑重启(热部署)? ​

【标准答案】 平滑重启用 nginx -s reload 命令。底层原理:master进程收到信号后,先加载新配置,然后启动新的worker进程。新worker用新配置处理新请求,旧worker继续处理当前连接,处理完才优雅退出。

面试加分点:实际生产中,reload前建议先 nginx -t 检测配置语法。如果配置有误,reload会失败但不影响现有服务。reload过程对用户完全无感知,是生产环境首选的配置更新方式。


【面试题】3. Tomcat的Connector线程模型有哪些?如何选择? ​

【标准答案】 Tomcat有三种Connector线程模型。第一是BIO,阻塞IO,每个请求一个线程,性能差,已废弃。第二是NIO,非阻塞IO,基于Java NIO,适合大多数场景,是默认配置。第三是APR,使用本地库,性能最高但需要安装APR库。还有NIO2,异步IO,适合高并发长连接。

面试加分点:生产环境推荐NIO,性能够用且无需额外依赖。如果追求极致性能且能安装本地库,选APR。配置在 server.xml 的 <Connector protocol="org.apache.coyote.http11.Http11NioProtocol" />。


【面试题】4. Linux中如何排查CPU使用率过高的问题? ​

【标准答案】 三步走:第一步,用 top 或 htop 查看整体CPU,按P排序找到高CPU进程;第二步,用 top -Hp <pid> 查看进程内线程,找到具体哪个线程占用高;第三步,用 jstack <pid> 打印线程堆栈,对比十六进制线程ID定位代码。

面试加分点:如果是Java应用,建议配置 -XX:+PrintGCDetails,CPU高也可能是频繁GC。如果是系统进程,用 strace -p <pid> 跟踪系统调用。还要注意 top 里的 wa(IO等待),可能是磁盘瓶颈。


【面试题】5. 如何配置Nginx实现HTTPS?需要哪些步骤? ​

【标准答案】 三步配置:第一步,获取SSL证书,CA机构申请或用Let's Encrypt免费证书;第二步,配置Nginx,ssl_certificate 指向证书文件,ssl_certificate_key 指向私钥文件;第三步,监听443端口并启用 ssl on 或直接 listen 443 ssl。

关键配置:ssl_protocols TLSv1.2 TLSv1.3 只开安全协议,ssl_ciphers HIGH:!aNULL:!MD5 指定加密套件,ssl_session_cache shared:SSL:10m 开启会话缓存提升性能。

面试加分点:生产环境建议HTTP强制跳转HTTPS,用 return 301 https://$host$request_uri。还可以配置HSTS头,add_header Strict-Transport-Security "max-age=31536000" 强制浏览器用HTTPS。


【面试题】6. Keepalived+Nginx高可用方案如何实现? ​

【标准答案】 核心原理:Keepalived基于VRRP协议实现虚拟IP漂移。两台Nginx服务器,一主一备,都安装Keepalived。主节点优先级高,绑定虚拟IP。主节点故障时,备节点接管虚拟IP,实现故障转移。

关键配置:Keepalived的 vrrp_instance 配置虚拟IP、优先级、认证信息。配合Nginx健康检查脚本,定期检测Nginx进程,发现异常自动降低优先级触发切换。

面试加分点:建议配置 nopreempt 不抢占模式,主节点恢复后不立即抢占,避免频繁切换。还要配置 notify_master 和 notify_backup 脚本,切换时发告警通知。


【面试题】7. Docker容器资源限制如何配置?为什么重要? ​

【标准答案】 Docker通过Cgroups限制资源。CPU限制:--cpus=1.5 限制使用1.5核,--cpu-shares=512 设置权重。内存限制:--memory=512m 限制最大内存,--memory-swap=1g 限制内存+交换分区。

为什么重要:没有资源限制,一个容器可能占满宿主机资源,导致其他容器甚至宿主机崩溃。生产环境必须配置资源限制,防止单个异常服务拖垮整个系统。

面试加分点:建议配合 --restart=on-failure 自动重启,以及健康检查 --health-cmd。Kubernetes中用 resources.limits 和 resources.requests 更精细控制。


【面试题】8. Nginx出现502 Bad Gateway错误如何排查? ​

【标准答案】 502是Nginx作为反向代理时,无法从上游服务器获得有效响应。排查步骤:第一步,检查后端服务是否启动,netstat -tlnp 看端口是否监听;第二步,检查防火墙是否阻断了Nginx与后端的连接;第三步,查看Nginx错误日志 error.log 具体报错信息。

常见原因:后端服务崩溃、端口配置错误、防火墙拦截、后端服务响应超时、连接数超限。

面试加分点:建议配置 proxy_connect_timeout、proxy_read_timeout 适当延长超时。配置 proxy_next_upstream 允许故障时自动切换到下一个上游服务器。


【面试题】9. Linux文件描述符限制如何调整?为什么要调整? ​

【标准答案】 文件描述符是Linux对打开文件的标识,默认限制1024,高并发服务会不够用。调整方法:临时调整用 ulimit -n 65535,永久调整修改 /etc/security/limits.conf 添加 * soft nofile 65535 和 * hard nofile 65535。Nginx还需要修改 nginx.conf 的 worker_rlimit_nofile。

为什么重要:每个TCP连接都占用一个文件描述符,高并发场景(如Nginx反向代理)可能同时打开数万连接。默认1024会报 Too many open files 错误,导致新连接失败。

面试加分点:还要检查系统级限制 /proc/sys/fs/file-max,这是系统全局上限。可以用 sysctl -w fs.file-max=100000 临时调整。


【面试题】10. Zabbix监控体系如何设计?告警策略如何配置? ​

【标准答案】 架构设计:Zabbix Server负责数据收集、存储、告警;Zabbix Agent部署在被监控服务器,采集数据;数据库存储历史数据;前端Web界面展示和配置。

监控项设计:服务器层监控CPU、内存、磁盘、网络;应用层监控进程状态、端口存活、服务响应;业务层监控接口成功率、响应时间。

告警策略:按严重程度分级,灾难级(服务器宕机)立即电话通知,严重级(CPU超90%)短信通知,警告级(磁盘超80%)邮件通知。配置告警升级,超过一定时间未处理自动升级。

面试加分点:生产环境建议配置 Zabbix Proxy 分布式采集,减轻Server压力。配合Grafana做可视化大屏,让运维一目了然。还要定期演练告警流程,确保告警通道畅通。