问题解决:neo4j内存不够,导致cpu一直100%,利用arthas最终解决

    前几天使用公司的产品sati,将前段时间爬取的数据导入neo4j数据库。发现导入的时候数据一直在导入,一度以为sati出问题了。考虑了一下会不会是自己的neo4j数据库有问题,所以就排查了一下,果然是neo4j的问题。在这里记录一下吧。

一、使用top命令定位

    1.top查看自己进程发现一个java进程cpu使用率到达100%。记录进程pid(此时第一感觉是full gc)
    2.top -Hp pid命令定位到线程pid
    3.printf "%x\n" 线程pid 将十进制的id转换为16进制。

二、利用jstack打印堆栈信息

    1.jstack pid > xxx.dump 将堆栈信息打印到xxx.dump
    2.gedit xxx.dump 然后定位到16进制的线程id。发现是一个neo4j线程,不是gc进程。我傻了,想了一下,可以用阿里神器arthas,动态查看下线程情况,看下怎么回事。

 三、利用arthas动态查看堆栈

    1.java -jar arthas-boot.jar 启动arthas
    2.选择对应的java进程,发现有个neo4j的,肯定就是你了。
    3.dashboard命令动态观察了一下情况,发现在gc区年轻代中eden区的大小在疯狂变化。突然反应过来!!我在做数据抽取,把大量的数据写入neo4j,neo4j运行在jvm上,发现eden区只有633M总量。年轻代用的是并行收集器和G1配合,导致这里空间不足一直做young gc。
    4. vim neo4j.conf 查看配置情况,发现最小堆和最大堆都只有1g大小,这是自己刚使用neo4j时留下的,那个时候简单配了下。立刻调到10g,重新做数据抽取。进程不再100%,最多看到83%,几十秒下来数据也抽取完了。问题解决,开心!!!

四、总结

    出现问题不要慌张,利用所学的东西,一步一步排查就好。善用各种排查工具,另外arthas真好玩。
全部评论

相关推荐

不多说了,看图吧
MomonKa:实际上是,机房机器有些高度,问问你身高,有没有女朋友是看你能不能猛猛加班
你最讨厌面试问你什么?
点赞 评论 收藏
分享
Twilight_m...:还是不够贴近现实,中关村那块60平房子200万怎么可能拿的下来,交个首付还差不多
点赞 评论 收藏
分享
来个厂收我吧:首先,市场侧求职我不是很懂。 但是,如果hr把这份简历给我,我会觉得求职人不适合做产品经理。 问题点: 1,简历的字体格式不统一,排版不尽如人意 2,重点不突出,建议参考star法则写个人经历 3,印尼官方货币名称为印度尼西亚卢比(IDR),且GMV690000印尼盾换算为305人民币,总成交额不高。 4,右上角的意向职位在发给其他公司时记得删除。 5,你所有的经历都是新媒体运营,但是你要投市场营销岗位,jd和简历不匹配,建议用AI+提示词,参照多个jd改一下经历内容。 修改建议: 1,统一字体(中文:思源黑体或微软雅黑,英文数字:time new romans),在word中通过表格进行排版(b站学) 2,校招个人经历权重:实习经历=创业经历(大创另算)>项目经历>实训经历>校园经历 3,请将项目经历时间顺序改为倒序,最新的放最上方。 4,求职方向不同,简历文字描述侧重点也需要不同。
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务