ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Linux日志分析与Redis缓存问题排查实战技巧

Linux日志分析与Redis缓存问题排查实战技巧 1. Linux日志排查实战指南1.1 精准定位日志关键信息日志分析是测试人员日常工作中最频繁的操作之一。面对动辄几个G的日志文件如何快速定位问题这里分享几个我多年实战总结的高效命令组合。查看错误日志前后10行内容-C参数表示上下文行数grep -C 10 error log.file这个命令特别适合在已知错误关键词时使用。比如系统抛出了NullPointerException直接搜索这个异常类名就能快速定位到出错位置。注意如果日志文件很大建议先用tail -n 1000缩小范围再grep否则可能卡死终端。提取特定时间段日志比如10:00-10:30sed -n /10:00/,/10:30/p log.file error.txt这个sed命令的原理是按时间范围过滤将结果重定向到error.txt文件。我经常用它来提取压测期间的错误日志方便后续分析。1.2 日志分析进阶技巧当简单的grep不能满足需求时可以尝试这些组合技统计错误出现次数grep -o ERROR log.file | wc -l查看最近修改的日志文件ls -lt /var/log | head实时监控日志更新tail -f application.log | grep --color ERROR避坑提示生产环境慎用vim直接打开大日志文件建议用less查看。我有次不小心用vim打开10G日志直接导致服务器内存溢出。2. Redis缓存问题排查手册2.1 Redis基础操作命令连接Redis服务记得替换实际密码redis-cli -h 127.0.0.1 -a yourpassword常用缓存操作get user_token_123 # 查看键值 ttl user_token_123 # 查看剩余过期时间 del user_token_123 # 强制删除键安全提示生产环境慎用keys *命令可能引发Redis阻塞。建议用scan替代。2.2 缓存问题排查实战查看内存使用情况info memory重点关注used_memory_human和maxmemory_human字段监控实时命令monitor这个命令会打印所有执行的操作适合调试但会影响性能查找大key超过1MB的键redis-cli --bigkeys我在压力测试时发现当Redis内存使用超过maxmemory的90%后响应时间会明显上升。建议设置合理的淘汰策略volatile-lru或allkeys-lru。3. 服务器性能监控技巧3.1 CPU监控与分析方法查看CPU使用情况top按P键按CPU使用率排序M键按内存排序关键指标解读load average1/5/15分钟的平均负载值%CPU进程的CPU占用百分比经验值load average超过CPU核数2倍说明系统过载。比如4核机器load到8就需要关注了。3.2 内存与磁盘监控检查内存使用free -h重点看available列如果只剩几MB服务很可能会OOM磁盘空间检查df -h关注/和/home分区的Use%列达到100%会导致服务异常我遇到过一个典型案例某次压测时磁盘突然写满原因是日志没有做rotate。后来设置了logrotate每天切割问题再没出现过。4. 网络与端口排查技术4.1 端口检测方法查看端口占用情况netstat -anp | grep 80或者用更现代的ss命令ss -tulnp | grep 80测试端口连通性telnet 192.168.1.49 8001 # 或者 nc -zv 192.168.1.49 80014.2 模拟HTTP请求发送测试请求curl -v http://example.com/api-v参数显示详细请求过程非常适合调试接口我常用的curl技巧# 带超时设置 curl --connect-timeout 5 -m 10 http://example.com # 发送POST JSON数据 curl -X POST -H Content-Type: application/json -d {key:value} http://example.com5. 高效文件操作技巧5.1 批量文件操作创建测试文件touch test_{1..100}.jpg这个brace expansion语法非常实用生成大文件fallocate -l 10G test.txt比dd命令更高效立即分配空间5.2 配置文件批量修改替换所有配置文件中的DEBUG为INFOsed -i s/DEBUG/INFO/g config*.xml-i表示直接修改文件g表示全局替换重要提示执行sed修改前建议先备份我有次误操作把生产配置改坏了幸亏有备份。查看文件变更时间ls -l --time-stylelong-iso这个格式方便对比文件修改时间6. 测试环境问题排查流程根据多年经验我总结了一套Linux环境问题排查的标准流程资源检查top → free -h → df -h服务状态systemctl status xxx → journalctl -u xxx网络检查ping → telnet → curl日志分析tail → grep → less进程检查ps aux → lsof这个流程覆盖了90%的常见问题。记得有一次线上故障按照这个顺序排查10分钟就定位到是磁盘空间不足导致的服务异常。7. 实用脚本分享最后分享几个我积累的实用脚本监控CPU使用率超过80%的进程#!/bin/bash while true; do ps -eo pid,user,%cpu,cmd --sort-%cpu | head -n 10 sleep 5 done自动清理7天前的日志find /var/log -name *.log -mtime 7 -exec rm {} \;批量检查服务器端口连通性#!/bin/bash for port in 80 443 3306 6379; do nc -zv $1 $port 21 | grep succeeded done这些脚本在日常测试工作中帮了大忙特别是批量检查端口那个在部署验证时特别高效。
返回列表