600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 【HBZ】生产环境下如何解决CPU飙高 与排查CPU飙高问题 与如何解决内存泄漏

【HBZ】生产环境下如何解决CPU飙高 与排查CPU飙高问题 与如何解决内存泄漏

时间:2019-07-22 02:28:24

相关推荐

【HBZ】生产环境下如何解决CPU飙高 与排查CPU飙高问题 与如何解决内存泄漏

生产环境CPU飙高问题原因

0. CPU上运行的是线程, 所以就是说有线程一直在忙碌,一直在运行

线程中有CAS一直获取锁失败,并不断的通过自旋重试,这是CAS的缺点,因此大量线程在自旋重试,会空耗CPU。比如代码中运用了AtmicXXX这些原子类 或 ConcurrentHashMap 或 乐观锁重试这些东西都可能导致CPU飙高

解决方案:使用这些原子类,或者乐观锁时要注意一下,并且自己写乐观锁自旋重试要注意配置重试次数云服务器安装了Redis, 黑客利用6379端口注入挖矿程序,导致占用CPU资源

解决方案:尽量不要让Redis在外网访问,不要暴漏ip,并把端口号 或 ip设置访问权限,所以云服务器尽量买一家的服务端接口被DDOS恶意攻击,当然要做大量的DDOS攻击,要花大量的钱,不是深仇大恨一般不会

解决方案:可以买高仿服务器,但是价格高。或者对接口做限流,图形验证码,ip黑名单等,对接口做限流可以防止服务器崩溃,但依然会把正常的良性请求也给拒绝了代码出现了死循环打印,导致线程无法结束。

解决方案:要合理做一些退出循环的操作, 比如做一些循环次数限制,或者循环时间限制

Windows如何去排查CPU是什么原因飙高

打开任务管理器 ctrl + alt + del看一下cpu百分比最高的对应哪个进程

Linux如何去排查CPU是什么原因飙高

通过命令top -c,找到占比高的进程id,即–>pid

再根据进程pid去找具体哪个线程注意:一定要配置【线程池名称】,否则很难找更推荐使用Arthas(阿尔萨斯)这个工具

1. 下载方式:curl -O /arthas-boot.jar2. 启动: java -jar arthas-boot.jar3. 选择指定进程 启动arthas之后会自动列出所有jvm的java进程,前面有对应序号,输入对应序号, 然后回车 即可进入指定进程4. 输入thread -n 3 回车 表示查看本进程占用CPU最高的3个线程

生产环境如何去排查CPU是什么原因飙高

服务器监控系统:比如阿里云CPU飙高的告警提示运维先知道那台服务器节点CPU飙高,通知开发人员配合该服务器,进程中哪个线程导致cpu飙高这些问题需要运维查,生产环境一般开发人员一定是碰不到的或者通过第三方监控软件的平台查询。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。