WP博客CPU物理内存占用过高高怎样解决

排查实时tail功能cpu占用过高问题
排查实时tail功能cpu占用过高问题
开发实时log功能时碰到的一些问题
“你的python应用cpu占用快90%了!!!”,良哥朝我眨了眨布满血丝的眼睛“不会吧”,我心想:我这是好的啊
没接触过kafka的同学可以先了解下:([
SSH到远程机器上,运行top命令看一下,果然平常4%不到的cpu占用,现在飙升到90%左右了。
这是一个简单的应用:server端从kafka读消息,通过websocket发送到client端,整个server端代码也就几百行。
那就直接看代码吧。
由于线上环境的kafka没有开放端口,我是在本地搭的kafka环境,所以为了快速开发,就在server端直接写了一个kafka生产者,向kafka提交消息。因此,
猜想1: 难道是不小心把kafka生产者的代码也提交上去了?check最新代码,生产者的代码明显被注释掉了,并没生效。
猜想2:websocket与server端链接太多了?不可能,这个功能目前还没开始公测,而且只有这一个server cpu占比过高。
那还是server和kafka之间出现了问题。
server端会在每个请求到来时创建一个websocket连接,同时创建一个kafka消费者线程,用来监听特定topic的消息。
client端与server端的websocket会在用户刷新页面或者关闭页面时断开连接,这个不会有问题。那问题有可能出在:创建的kafka消费者线程没有正确地退出。
每个python线程会有一个daemon属性,默认为False。python主线程会在所有daemon为False的线程退出后才终止,而daemon为True的线程(也就是后台线程)会在主线程退出时一起退出。
所以无论如何,每次发布时都是重启整个进程,不会有资源回收失败的问题。
那就是在server运行时创建了过多的kafka消费者线程。
验证一下,打开pycharm的并发状态检测开关并启动server,新开一个页面,连续刷新几次,pycharm里就可以看到刚才创建的线程活的好好的!!!
那来看看kafka消费者线程在干什么。
kafka消费者线程负责:
向websocket连接写入消息
祭出debug神器:断点
根据多年打断点的经验,果断滴选择了“获取消息”。
经过一段时间的调试,原来是kafka-python从kafka获取消息时会进入无限while循环,从而阻塞线程。
既然弄明白了问题的来龙去脉,解决起来就容易了。
首先看kaka-python有没有异步api,在官方文档里找了一圈,并没有,最后发现
,利用异常我们可以跳出while循环,从而有机会结束当前线程。大致代码如下:
class ConsumerThread(Threading.thread):
def fetchMsg(self):
for message in self.consumer:
if self.stopThread:
message_value = message.value
socket.pubsub(message_value)
logger.error('consumer timeout')
if not self.stopThread:
self.fetchMsg()
self.consumer.close()
连接kafka的kafka-python竟然没做成事件驱动,反而是阻塞式,这不明显是挖坑让人跳么?
用云栖社区APP,舒服~
【云栖快讯】新手小白必看!编程语言系列讲座火爆进行中,与行业资深专家一起学习Python、C++、JavaScript、Java!从入门到进阶&&
一款端到端一体化实时监控解决方案的PaaS级阿里云产品。通过该产品,用户可以基于海量的数据迅...
面向阿里云ECS实例、HPC和Docker的文件存储服务。
用于实时预测用户对物品偏好,支持企业定制推荐算法,支持A/B Test效果对比
为您提供简单高效、处理能力可弹性伸缩的计算服务,帮助您快速构建更稳定、安全的应用,提升运维效...
订阅广场全新上线四个方法来解决wordpress&cpu占用过高的问题
wordpress建站的朋友都知道,造成wordpress站点占用服务器cup过高的原因是wordpress程序占用的资源较大,因为它没有缓存功能,所以在你访问网站或者登陆后台的时候就消耗了很多资源。如果你再用随机文章、相关文章并带有缩略图的插件,那么占用的资源将会更加大,所以导致服务器cpu占用率飙升。那么可以用下面的四个方法来解决这个问题:
方法一:主题模板问题
如果你的模版是找专业人士定做的,那么请他们优化代码,相信专业的公司是能找到死循环并解决的。如果你的是免费主题,而且你自己对这方面又是一窍不通,那么换个主题吧!
方法二:死循环问题
这种情况很多时候是因为换了域名或者链接的形式,导致大量的链接失效出现404错误循环,可以修改默认404页面解决。或者你的网站代码有冲突、不规范的地方、链接错误等导致的死循环,这就需要检查代码了。
方法三:插件问题
插件过度的确会造成这种情况,所以你要优化你的插件了。尽量把没用的插件都停掉,只选择最有用的插件。相关文章而且带缩略图的插件会占用很大的资源,你还是考虑考虑再用吧!
方法四:缓存与压缩问题
使用缓存插件会降低占用的资源,因为静态页面远比动态页面占用的资源小。推荐使用WP
Super Cache这个插件,功能很强大!
另外使用网页压缩技术有能有效的解决占用资源过大的问题!
查看原文:
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 物理内存占用过高 的文章

 

随机推荐