• 服务宕机问题排查记录


    问题:从oracle查询1800w数据,根据尾号截取,加载到内存,取表数据四个字段,其中包含手机号、两个10位中文字段加一个日期,

    用jedisCluster进行管道操作psetStr
    当程序加载到第五批次左右,程序宕机,通过重启,重新加载数据,配合
    ps -ef|grep 查询进程号,jstat -gcutil 进程id 2000,top查看当前内存占用(-c查看执行脚本)、free -m 查看机器可用内存,几个命令,分析出当前机器空闲内存不足
    修改:调整程序启动的最大堆内存参数、修改程序,采用后两位尾数查询方式,减少分页量的大小,从10个批次扩充到100个批次,配合多线程处理
    后续问题:由于成功加载了redis数据,导致redis数据内部占用内存较大,使其他程序运行时宕机,解决:将redis下的dump文件
    

    top 指令:如果swap的uesd变化频繁,说明内存可能不足了,free少,不代表真的不够用了,mem的used表示,之前使用的内存,使用之后不会立即返回free
    堆、栈分配的内存,如果没有使用是不会占用实存(RES)的,只会记录到虚存(VIRTT)。
    如果程序占用实存比较多,说明程序申请内存多,实际使用的空间也多。
    如果程序占用虚存比较多,说明程序申请来很多空间,但是没有使用。
    比如可能会有【程序虚存300G+, 实存只有不到15G】

    gcstat -gcutil 进程号
    S0:幸存1区当前使用比例
    S1:幸存2区当前使用比例
    E:伊甸园区使用比例
    O:老年代使用比例
    M:元数据区使用比例
    CCS:压缩使用比例
    YGC:年轻代垃圾回收次数
    FGC:老年代垃圾回收次数
    FGCT:老年代垃圾回收消耗时间
    GCT:垃圾回收消耗总时间

  • 相关阅读:
    我决定重新开始搞机器学习啦
    基于问句实体扩展和全局规划的答案摘要方法研究相关论文
    cjson源代码解读(三) 解析字符串、数字、数组、对象
    论文阅读:DeepWalk
    cjson源代码解读 (二)解析流程
    cjson源代码解读 (一)介绍
    DDoS攻击的几种类型
    Nmap扫描二级目录
    一次域环境的渗透
    利用enum4linux 445端口+wordpress插件任意文件上传的一次渗透
  • 原文地址:https://www.cnblogs.com/brxHqs/p/15901040.html
Copyright © 2020-2023  润新知