老铁们,大家好,相信还有很多朋友对于Memcache连接超时什么原因和java连接超时解决办法的相关问题不太懂,没关系,今天就由我来为大家分享分享Memcache连接超时什么原因以及java连接超时解决办法的问题,文章篇幅可能偏长,希望可以帮助到大家,下面一起来看看吧!
本文目录
Memcache连接超时什么原因
最近遇到一个工作上的BUG.
大家知道JAVANIO的异步阻塞IO.我们有个客户端用来做缓存的查询和插入操作.突然有一天线上报警,缓存的查询超时了.然后赶紧拉缓存的人解决(大公司的人真是慢,效率太差了).缓存的人直接截了个图和我们说,它们Server每次查询都是10ms以内,根本没有超时发生.不是他们的问题.最后经过定位之后,原因在于Memcache的客户端是NIO模型,只起了一个线程,做多路复用.BUT!!由于当时CPU已经有点高了.(50%实际看起来不高).但是服务器那里因为是用了线程池,已经起了1000多个java线程了..导致CPU调度不过来了..缓存取的速度很快,但是由于只有一个线程,CPU调度到缓存的线程的时候,已经超时了....
然后..解决方式就是加机器..结论:(公司里这帮人能力也真的是挺菜的.)
java怎么避免死锁
1、尽量使用tryLock(longtimeout,TimeUnitunit)的方法(ReentrantLock、ReentrantReadWriteLock),设置超时时间,超时可以退出防止死锁。
2、尽量使用java.util.concurrent(jdk1.5以上)包的并发类代替手写控制并发,比较常用的是ConcurrentHashMap、ConcurrentLinkedQueue、AtomicBoolean等等,实际应用中java.util.concurrent.atomic十分有用,简单方便且效率比使用Lock更高。
3、尽量降低锁的使用粒度,尽量不要几个功能用同一把锁。
4、尽量减少同步的代码块。
百度搜索圈T社区免费行业视频教程
www.aiquanti.com
java程序死循环了怎么办
首先你需要找出是那个进程卡死了
打开控制器,输入命令ps-ef查找到相应的java进程或者使用top查看机器占用cpu比例高的进程然后kill到那个进程就可以了。
在编写程序的时候要特别注意会发生死循环的地方,比如while(true)这些尽量不要使用,或者添加一些控制,比如超时处理等,或者使用多个线程wait,notify来处理。这应该比较简单的处理方法,如果需要进一步还是需要根据业务来使用判断逻辑。而且在后期上线前也需要测试覆盖这些条件的方法,做到没有死循环的存在才是一个合格的程序。
为什么OJ上cpp和java运行时间完全不在一个数量级上,java慢那么多
原因是JAVA需要寄宿在JVM上运行(JAVA虚拟机),然后由JVM负责把指令传达到操作系统底层。所以JAVA程序在性能上要比C\C++程序慢一个节拍。你可以到其它平台试试就知道了,比如openjudge。
好了,关于Memcache连接超时什么原因和java连接超时解决办法的问题到这里结束啦,希望可以解决您的问题哈!