杨梅冲
每天在想什么呢?
随笔 - 198,  文章 - 0,  评论 - 8,  阅读 - 17万

以下是一些常见的运维常识:

  1. 日志分析:快速定位应用崩溃原因

生产场景:一个 Web 应用崩溃,重启后仍然无法恢复。通过查看日志文件,发现 OutOfMemoryError,并且日志中显示 JVM 堆内存不足。

解决方案:

  • 使用 grep 过滤关键字:grep "OutOfMemoryError" /var/log/application.log

  • 确定是内存溢出问题,检查 JVM 配置,增加堆内存大小。修改 JAVA_OPTS 配置:-Xms2g -Xmx4g

预防措施:配置日志轮转,确保日志不会占用过多磁盘空间。

 

  1. 备份与恢复:数据库数据丢失恢复

生产场景:由于误操作,生产环境数据库中的重要表被删除,需要恢复数据。

解决方案:

  • 使用备份文件恢复:mysql -u root -p < /backup/backup_2024-12-01.sql

  • 如果没有备份,通过分析 MySQL 的 binlog 日志恢复增量数据:mysqlbinlog /var/lib/mysql/mysql-bin.000001 | mysql -u root -p

预防措施:定期备份并验证备份文件,配置增量备份,确保能最大程度恢复数据。

 

  1. 磁盘管理:磁盘空间不足

生产场景:生产服务器上的磁盘空间满,导致应用无法写入数据,服务中断。

解决方案:

  • 使用 df -h 查看磁盘使用情况,使用 du -sh /var/log/* 查找日志文件占用的空间。

  • 删除过期的日志或临时文件,清理 /tmp 目录。

  • 配置 logrotate 自动轮转日志文件,避免磁盘占满。

预防措施:设置磁盘空间监控,及时告警,避免手动清理遗漏。

 

  1. 权限管理:避免滥用权限

生产场景:开发人员拥有 root 权限,误操作导致生产环境服务宕机。

解决方案:

  • 使用 sudo 配置最小权限,确保开发人员只对特定操作具有权限:user ALL=(ALL) NOPASSWD: /bin/systemctl restart nginx

  • 通过 visudo 配置审计规则,限制不必要的权限。

预防措施:定期审查权限设置,确保用户仅能执行必要的命令。

 

  1. 网络故障排查:服务器无法访问外网

生产场景:服务器无法访问外部网络,导致无法进行软件更新或 API 请求。

解决方案:

  • 使用 ping 检查服务器与外网的连通性:ping 8.8.8.8

  • 使用 traceroute 确定网络中断位置。

  • 检查防火墙配置,使用 iptables -L 查看当前规则,确认是否有误拦截外部请求。

预防措施:配置网络监控工具,确保网络连接稳定。

 

  1. 进程管理:高负载导致服务响应慢

生产场景:Web 应用由于高并发请求,导致某些进程占用大量 CPU 资源,系统负载过高,影响响应速度。

解决方案:

  • 使用 top 或 htop 查看 CPU 占用情况:top -o %CPU

  • 调整进程的优先级,使用 renice 降低低优先级进程的 CPU 使用率:renice -n 10 -p <PID>

  • 如果应用性能瓶颈是数据库,可以优化 SQL 查询或增加数据库索引。

预防措施:配置自动化监控,提前告警并调整资源分配。

 

  1. 定时任务:漏掉定期备份任务

生产场景:定时任务(如数据库备份)未成功执行,导致数据丢失。

解决方案:

  • 使用 crontab -l 检查当前定时任务配置,确保任务已正确设置:crontab -l

  • 查看 /var/log/cron 日志,确保任务执行无误。

预防措施:配置监控工具(如 Prometheus)实时监控定时任务执行情况,确保任务成功执行。

 

  1. 服务管理:服务崩溃无法自动重启

生产场景:关键服务(如 Nginx 或 MySQL)崩溃后没有自动重启,导致系统无法提供服务。

解决方案:

  • 配置 systemd 确保服务崩溃后自动重启:systemctl enable nginxsystemctl restart nginx

  • 设置 Restart=always 在服务配置文件中,确保服务在失败后自动重启。

预防措施:配置服务监控,确保服务始终在运行状态。

 

  1. 高可用性:负载均衡器故障

生产场景:负载均衡器故障,导致流量无法正确分发,部分用户无法访问服务。

解决方案:

  • 配置 Nginx 或 HAProxy 作为负载均衡器,确保多个实例能够均衡分配流量。

  • 使用健康检查来确保实例健康状态:upstream backend {server backend1.example.com check;server backend2.example.com check;}

预防措施:配置健康检查,确保负载均衡器始终能检测到健康的后端服务。

 

10.数据库性能优化:查询慢导致应用性能下降

生产场景:数据库查询响应时间过长,导致前端页面加载缓慢,影响用户体验。

解决方案:

  • 使用 EXPLAIN 分析慢查询,优化查询语句:EXPLAIN SELECT * FROM orders WHERE order_date = '2024-12-20';

  • 添加索引以加速查询:CREATE INDEX idx_order_date ON orders(order_date);

预防措施:配置慢查询日志,定期审查和优化数据库查询。

 

11.容器化:Docker 容器资源泄漏

生产场景:某 Docker 容器由于内存泄漏导致资源消耗过大,影响系统稳定性。

解决方案:

  • 使用 docker stats 查看容器的资源消耗情况。

  • 使用 docker logs 查看容器输出日志,确定是否有内存泄漏问题。

预防措施:设置 Docker 容器的内存限制,避免容器资源过度占用:docker run -m 512m --memory-swap 1g my-container

 

12.网络安全:防止 DDoS 攻击

生产场景:服务器遭遇 DDoS 攻击,导致网络带宽消耗殆尽,应用服务不可用。

解决方案:

  • 配置防火墙规则,限制每个 IP 地址的请求频率:iptables -A INPUT -p tcp --dport 80 -m limit --limit 10/min -j ACCEPT

  • 使用 Cloudflare 或 AWS Shield 等服务防止 DDoS 攻击。

预防措施:设置流量监控,及时发现异常流量,防止 DDoS 攻击。

 

13.SSL/TLS 配置:确保 HTTPS 安全

生产场景:网站未启用 HTTPS,导致用户数据未加密传输,容易遭受中间人攻击。

解决方案:

  • 配置 Let’s Encrypt 证书并启用 HTTPS:certbot --nginx -d example.com

  • 强制 HTTP 请求重定向到 HTTPS:server {listen 80;server_name example.com;return 301 https://$host$request_uri;}

预防措施:定期检查证书有效性,避免证书过期。

 

14.服务依赖:微服务依赖中断

生产场景:微服务架构下的一个服务无法启动,导致依赖的其他服务也无法正常工作。

解决方案:

  • 使用 docker-compose 管理多个服务的依赖,确保服务按顺序启动。

  • 配置服务健康检查,确保每个服务健康时才能进行下游服务的启动。

预防措施:定期测试微服务的高可用性和容错性,确保系统具备较强的抗压能力。

 

15.自动化运维:批量配置管理

生产场景:新增一批服务器,需统一配置防火墙规则、软件包等。

解决方案:

  • 使用 Ansible 或 Puppet 自动化配置管理工具,批量配置所有服务器。ansible-playbook -i inventory setup.yml

预防措施:配置持续集成(CI/CD)流水线,确保所有服务器配置的一致性和安全性。

 

16.内存泄漏:查找并解决内存泄漏

生产场景:应用长期运行后,内存使用量不断增加,最终导致系统崩溃。

解决方案:

  • 使用 top 和 free -h 检查内存使用情况。

  • 配合 valgrind 或 jmap 查找内存泄漏:jmap -histo:live <pid>

预防措施:定期检查内存使用情况,定期重启服务避免内存泄漏积累。

 

17.日志存储:集中式日志管理

生产场景:多台服务器生成大量日志文件,手动查看日志困难,难以定位问题。

解决方案:

  • 配置 ELK(Elasticsearch, Logstash, Kibana)堆栈收集和分析日志。

  • 配置 Filebeat 收集日志并发送至 Logstash 进行处理:filebeat.yml

预防措施:配置日志分类和实时监控,避免日志过大导致性能问题。

 

18.虚拟化管理:KVM 主机性能优化

生产场景:KVM 虚拟化环境下虚拟机性能不佳,导致主机资源不足。

解决方案:

  • 调整虚拟机内存和 CPU 配置。

  • 配置 KVM 的 cpu pinning 和 hugepages 来优化性能。

预防措施:定期分析虚拟化主机性能,优化资源分配。

 

19.备份恢复:云存储数据恢复

生产场景:存储在云端的数据库或文件丢失,需从云存储恢复。

解决方案:

  • 使用 AWS S3、Google Cloud Storage 或其他云服务提供的备份恢复功能。

预防措施:配置云服务自动备份并定期验证备份文件。

 

20.服务调度:Kubernetes 集群调度优化

生产场景:Kubernetes 集群资源分配不均,导致部分容器因资源不足而无法启动。

解决方案:

  • 使用 kubectl 查看 pod 和 node 的资源分配:kubectl describe pod <pod_name>

  • 配置合理的资源请求和限制(如 resources.requests 和 resources.limits)。

预防措施:定期调整集群资源,避免资源过度集中在某一节点,导致负载不均。

 

引用自:

https://mp.weixin.qq.com/s/hAzU_epkZ_uSNTdQQheD-A

posted on   杨梅冲  阅读(31)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示