-
1024这天,我故意写了个死循环~
2018-10-24 16:39:28导致CPU100%的原因很多,而程序中出现死循环就是原因之一。然而,并不是每个人在工作中都有机会踩中这个坑。我就是其中一个没踩过的。人生似乎有些不完整。 所以,我做了一个很重要的决定:在程序中写一个死循环。看...导致CPU100%的原因很多,而程序中出现死循环就是原因之一。然而,并不是每个人在工作中都有机会踩中这个坑。我就是其中一个没踩过的。人生似乎有些不完整。
所以,我做了一个很重要的决定:在程序中写一个死循环。看看会发生什么事情。
当然,不是在生产环境。 我搭建了一个实验环境来做实验。只是这个实验环境不仅可以用于这个死循环实验。以下是这个环境的结构图:
还是老样子,使用Vagrant + Virtualbox + Ansible自动化搭环境。
我们会写一个简单的Spring MVC 应用,然后其中一个接口里会有死循环代码:
以下是我自己尝试找出这个死循环的过程。
一、使用top,查看是哪个进程的问题
我请求一次:
http://192.168.88.10:9898/web/loop
然后,我打开新窗口,又请求一次
这里,我好奇CPU没有到200%。一直在120%和130%之间。P.S. 我一定是某个知识点不牢固,要不,不会有这个疑问。
二、堆空间
因为不涉及JVM堆空间问题,执行 jstat -gcutil 32593 1s 没看出什么问题。32593为Java进程ID,1s指1秒抽样一次。
三、栈
堆没问题,就看看是哪个线程占用得高。
列出java进程的线程,top -H -p <java 进程pid>
将jvm的栈dump下来 jstack -l <其中一个线程PID> >> stack.log,这里我选3596。
在日志中,找到相应的线程,我们需要从栈日志中找到相应的线程,但由于栈日志中使用的16进制,但是top中的PID又是10进制。所以,需要手工将10进制的PID转成16进制。3596的16进制转是0xe0c
四、小结
从这个解决的方式过程中,我们已经可以看出来一种基本的处理CPU 100%的情况了!希望对大家有所帮助!
原文发布时间为:2018-10-24本文作者:翟志军 -
微信小程序报错:小程序重启耗时过久,请确认业务逻辑中是否有复杂运算,或者死循环的解决
2018-06-05 16:48:08在打开新版本的微信开发者工具时,弹出以下错误框:然后你再等会会发现,页面照样加载Ok,但是会出现这么一个情况,就是打开一个.wxml或者.wxss或者.js文件,会出现空白的情况,就是你文件里的代码不见了,未加载...在打开新版本的微信开发者工具时,弹出以下错误框:
然后你再等会会发现,页面照样加载Ok,但是会出现这么一个情况,就是打开一个.wxml或者.wxss或者.js文件,会出现空白的情况,就是你文件里的代码不见了,未加载出来....如下图
这个错误的解决:
(1)首先第一点是你文件里的js代码编写错误,这个是需要自己检查的,如果是确认无误的情况下还是这样,那么请看第二点;
(2)请将配置文件里的一些抽象节点去掉即可,一般是在package.json里的一些组件或者依赖什么的,如果还不行,请看第三点;
(3)如果上述还是无法解决,那说明你的文件过大,工具解析文件的工作量太大,久久解析不能完成,就弹出上述框,这里建议大家在添加小程序项目的时候,只添加client文件夹,不需要添加server文件夹,这样就大大减轻了工具的解析压力。
-
关于制作敌人死亡后爆出不同种类金币的思路
2014-06-11 15:48:43在我们游戏中,经常会出现如下的功能,怪物死亡后,会爆出很多金币,而且种类各不相同。但在开发中是如何实现呢?我提供两种思路。 方法一:循环法 1.假设有金、银、铜三种金币,我们要有一个数组,存放...以下内容只是自己对这次项目中某个功能的总结,由于自己水平有限,用的也是比较简单的算法,如果更好的思路,请私信我,十分感谢。
在我们游戏中,经常会出现如下的功能,怪物死亡后,会爆出很多金币,而且种类各不相同。但在开发中是如何实现呢?我提供两种思路。
方法一:循环法
1.假设有金、银、铜三种金币,我们要有一个数组,存放这三种金币的值,例如金代表50,银代表30,铜代表10。
2.通常我们敌人都会有一个“奖励”的属性,例如敌人大飞龙死亡后,会产生100的“奖励”。
3.设置一个随机的种子数(用于随机生成哪种金币的下标),然后用循环计算敌人奖励数-三种金币的值,如果小于0的话,随机种子及数就减1,
这一步的目的是为了得到我们最多只能用哪几种类型的金币。
4.然后用敌人奖励数-金币值[随机种子数],如果不小于等于0,那么我们就生成一个该随机种子数对应的金币,否则就生成最小值的金币,
该方法生成的金币组合永远都是随机的,比较多变。
方法二:组合法
1.同上。
2.同上。
3.建立一个大数组,将每个敌人奖励所组合的金币类型预先写好(可以同一种敌人多写几种配置)
4.生成金币时,我们就读相对应的组合规则,该方法生成的金币组合比较单一,没有随机性,要求不高的话用这种也是可以的。
-
nginx 出现504 Gateway Time-out的解决方法
2020-01-19 14:36:15nginx访问出现504 Gateway Time-out,一般是由于程序执行时间过长导致响应超时,例如程序需要执行90秒,而nginx最大响应等待时间为30秒,这样就会出现超时。 通常有以下几种情况导致 1.程序在处理大量数据,导致...1.问题分析
nginx访问出现504 Gateway Time-out,一般是由于程序执行时间过长导致响应超时,例如程序需要执行90秒,而nginx最大响应等待时间为30秒,这样就会出现超时。
通常有以下几种情况导致1.程序在处理大量数据,导致等待超时。
2.程序中调用外部请求,而外部请求响应超时。
3.连接数据库失败而没有停止,死循环重新连。出现这种情况,我们可以先优化程序,缩短执行时间。另一方面,可以调大nginx超时限制的参数,使程序可以正常执行。
对于访问超时的设定,nginx与php都有相关的设置,可以逐一进行修改。
2.解决方法nginx配置
nginx.conf中,设置以下几个参数,增加超时时间
fastcgi_connect_timeout
fastcgi连接超时时间,默认60秒fastcgi_send_timeout
nginx 进程向 fastcgi 进程发送请求过程的超时时间,默认值60秒fastcgi_read_timeout
fastcgi 进程向 nginx 进程发送输出过程的超时时间,默认值60秒
php配置php.ini
max_execution_time
php脚本最大执行时间
php-fpmrequest_terminate_timeout
设置单个请求的超时时间
php程序中可加入set_time_limit(seconds)设置最长执行时间例如 set_time_limit(0) 表示不超时。
————————————————
版权声明:本文为CSDN博主「傲雪星枫」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/fdipzone/article/details/79355576 -
Kafka在消费者反序列化时出现问题
2020-12-17 09:39:39Missing exception handling for deserialization of key values,提示缺少对键值反序列的异常处理,并且系统一直重复反序列化该调记录,一直失败,陷入死循环。 上网查询解决办法发现这种现象是当生产者序列化程序... -
一看就会,一写就废——二分法
2020-12-22 19:32:46还是有点挑战性的,可能会出现各种各样的问题,包括死循环、边界定义不清晰等,另外就是,可能传统的二分法我们都能理解,但是换了一下题目就不会用二分法的思想去解答了,以下附上个人比较喜欢的二分法模板: ... -
ACM学习历程3——C与C++输入输出效率的问题
2016-08-22 20:54:32当出现这种错误时,原因无非以下几种:程序中出现了死循环使得程序无法在规定的时间内完成;算法设计的过于复杂,使用了过多的循环使得程序步执行的次数过多;不合理语句的使用,包括输入输出语句等等 -
二分查找模板和二分答案的应用
2020-10-08 01:09:26注意:二分查找写法不谨慎,很容易出现死循环,以下版本注意几个问题: 1. while循环的退出条件是 l < r ,也就是说最终 l 是会等于 r 的,但是 l 这个位置不一定是查找的对象,因为可能根本就不存... -
Matlab实现单纯形法,内涵超详细注释《要不是老师非要我们一条条讲而网上程序又都看不懂我怎么会去自己写...
2020-06-16 16:39:01本程序编写于matlab实现单纯形法,我一开始是拒绝的,不能你让我写...=形式,因为我没在程序里写方程转化逻辑,所以输入时注意点,若是方程无解的话会无限死循环,出现死循环建议检查输入方程。 源代码下载链接如下 ht -
RabbitMQ遇到的坑
2020-09-26 17:24:361、mq的消息体积最好控制在4MB以下,因为rabbitmq服务端的最大帧是128k,虽然消息大小支持mb,是因为底层做了拆包组包的操作,而频繁的拆包,组包导致mq出现性能异常,消费者的tcp连接出现断开的现象。 2、消费者处理... -
典型中断2:有未经处理的异常: 0xC00000FD: Stack Overflow
2016-06-26 00:50:08栈溢出的问题基本上就是递归次数过多,超过了1M的默认栈空间造成的,对代码进行检查后发现,原来是新增的_CS方法的内部实现出现了死循环的递归调用,所以造成一运行就会栈溢出。 对于该类异常的解决方法无外乎以下... -
题目:利用递归求1+2+3...100的和
2015-09-24 21:14:03如一个方法A(),然后在方法A()中再次调用自己,但是利用递归的时候特别需要注意的就是跳出递归的条件,否则的话就会出现死循环的情况,也就是一直在执行的某一个方法。 以下为简单的代码实现: package com.ak -
关于DeadLock(死锁)的总结与Java代码实现
2020-05-18 16:17:59但是,在一些更为 复杂的场景中,你可能会遇到这样的问题,比如t1拿到锁之后,因为一些异常情况没有释放锁 (死循环)。又或者是t1拿到一个数据库锁,释放锁的时候抛出了异常,没释放掉。 一旦出现死锁,业务是可... -
野火stm32开发板mini上的串口对调试干扰比较严重_影响到板子的正常复位
2018-05-26 21:44:00当板子上的串口工作时,会出现keil uvision5 中的调试工作无法正常工作的情况。 使用示波器观察到,不能正常调试程序的时候(汇编级别还是能单步调试的,但是显然程序已经陷入一种死循环),复位的工作也不正常。 ... -
关于telnet协议选项协商时的对话问题
2014-06-04 10:38:25笔者知道在使用“WILL”,“WONT”,“DO”,“DONT”这种选项协商对话的时候,如果没有其他机制,会出现一种死循环,比如 A:IAC WILL 32 B:IAC DO 32 (接下来A以为B是发的请求,而不是应答,所以……) A:... -
单片机与DSP中的PIC单片机复位系统模块
2020-11-14 08:33:31无论是单片机在按预先设定的正常顺序运行程序,还是出现单片机进入不可预知的某一个死循环,都必须认为单片机在执行程序。单片机在执行程序期间,只要在人工复位端MCLR加入一个低电平信号,就会令其复位。 3.... -
六面美团后,我有一个重要的发现...
2020-07-16 16:09:07遇到死循环 CPU 飙升怎么解决? Java 并发包常用工具用法和原理、会配合集合类一起考,对了还会有 volatile、CAS 原理等。 MySQL 也算是必备了,索引存储结构、索引搜索原理、事务的隔离级别和原理,这些真的是逢 -
HardFault_Handler分析
2019-07-11 15:50:48在用Keil对STM32的程序进行仿真时程序有时会跑飞,停止仿真程序会停在HardFault_Handler函数里的死循环while(1)中。这说明STM32出现了硬件错误。 STM32出现硬件错误可能有以下原因: (1)数组越界操作... -
超级有影响力霸气的Java面试题大全文档
2012-07-18 09:47:04Stateful Session Bean 与 Stateless Session Bean ,这两种的 Session Bean都可以将系统逻辑放在 method之中执行,不同的是 Stateful Session Bean 可以记录呼叫者的状态,因此通常来说,一个使用者会有一个相对应... -
C语言-聊天室心得
2019-01-29 23:28:59经过一个学期的学习,C语言的学习已经告一段落,经过几天的埋头苦干,我的聊天室总算出具雏形,实现了老师要求的功能(私聊、群聊、管理员、禁言),但是在功能切换方面还是有些不太流畅,服务器有时会出现死循环等... -
你必须知道的495个C语言问题
2015-10-16 14:14:28中,如果不关心a[]的哪一个分量会被写入,这段代码就没有问题,i也的确会增加1,对吗? 3.11 人们总是说i=i++的行为是未定义的。可我刚刚在一个ANSI编译器上尝试过,其结果正如我所期望的。 3.12 我不想学习那些... -
nginx 504 Gateway Time-out
2019-04-15 14:20:39排查过程: 查看该任务 发现内容是一个数据量20000条信息 每条信息有50个字段 在执行导出为excel的时候 出现了该问题 执行时间大概在10分钟左右就出现...1.程序在处理大量的数据,或者有死循环之类的问题 2.创建数... -
你必须知道的495个C语言问题(高清版)
2010-03-31 16:24:09中,如果不关心a[]的哪一个分量会被写入,这段代码就没有问题,i也的确会增加1,对吗? 38 3.11 人们总是说i=i++的行为是未定义的。可我刚刚在一个ANSI编译器上尝试过,其结果正如我所期望的。 38 3.12 我不... -
《你必须知道的495个C语言问题》
2010-03-20 16:41:18你难免会遇到各种各样的问题,有些可能让你百思不得其解,甚至翻遍图书馆,也找不到问题的答案。 《你必须知道的495个C语言问题》的出版填补了这一空白。许多知识点的阐述都是其他资料中所没有的,弥足珍贵。 涵盖... -
TTL(Time to Live)—生存时间初识
2019-03-06 22:49:39当我们一台能连通网络的计算机上,打开cmd,执行这样一条语句“ping www.baidu.com”时,会出现以下界面。在这个界面中,可以看到主机与百度服务器的网络连通性。其中在往返行程的传送时间后面,有一个TTL值,这是... -
nginx 解决504超时问题
2021-01-15 11:14:10nginx访问出现504 Gateway Time-out,一般是由于程序执行时间过长导致响应超时,例如程序需要执行90秒,而nginx最大响应等待时间为30秒,这样就会出现超时。 通常有以下几种情况导致 程序在处理大量数据,导致等待... -
工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究
2017-02-28 21:22:19(2)针对跨域数据交互问题,指出并分析了跨域缓存交互问题出现的原因,通过在HTML5存储技术的基础上,重写LocalStorage,用移动端本地的Sqlite进行数据维护,实现跨域数据交互。 (3)针对页面自适应问题,本文结合...
-
mybatis参数为map的坑 自动增加‘‘‘‘引号问题
-
视频直播app和网页版怎么开发?
-
vue axios的封装使用
-
2021-03-01
-
介绍c语言中条件编译相关的预编译指令
-
模糊查询—注意事项
-
双一流大学王牌专业的来面试一个外包岗位,面试之后,扼腕叹息!
-
科技背景AI素材分享
-
MySQL 主从复制 Replication 详解(Linux 和 W
-
@RestControllerAdvice异常统一处理类失效原因
-
Galera 高可用 MySQL 集群(PXC v5.7+Hapro)
-
项目经理成长之路
-
VMScreenCast-master.zip
-
第一章网络通信基础.mht
-
VisualStudioAssistX2019pojie.zip
-
PyCharm设置中文(无需汉化包)
-
中央广播电视大学《中级财务会计(二)》期末总复习资料(含答案).pdf
-
比特币超跌反弹行情开启,抄底BitOffer三倍做多ETF基金预期目标50%
-
华为1+X——网络系统建设与运维(中级)
-
PPT大神之路高清教程