基于phathomjs token 不定时无响应问题排查
问题描述
基于phathomjs的token池项目,基本原理是,打开淘宝页,获取匿名cookie,再由cookie中提取有效token,调用方通过该token获取淘宝数据
为方便基他人应用,封装了部分功能为一个http api
功能是完备的,问题是服务运行个一天左右,就无响应了
问题1,phathomjs本身的问题,虽然早期phathomjs 有内存泄露的问题,但当前的版本已修复
问量2,自身代码的问题
时间有限就不啰嗦了,
几个排查点
1 服务是否中断
服务还在运行,进程还在,http api 端口 依然在监听,直觉是泄露,在是哪里泄露,是什么泄露,需要确认和排查。
2 查看网络请求
netstat -ntp
显示http api listen的端口,大量CLOSE_WAIT,这个原因是tcp层面服务端没有向客户端发送fin,就我的服务而言就是没有 调用http.response()
到这一步就已经找到线索,之后往上查http.response()的调用栈即可。
3 怀疑出现了泄露
因此 top
发现进程内存占用500m
重启服务进程 内存占用150m
泄露确主
4 查http.response()的调用栈
这个功能函数是打开某url,然后phathomjs,打开一个page(不显示页面,phathomjs内的page类型),会加载相关页面资源,在获取到某url后(http请求获取jsonp格式的数据)这个url是触发下一步的关键点,获取完成表示页面打开成功,当前页有效,之后获取当前页面的cookie,cookie提取token,token返回。
到这里很多人都已经猜到问题在哪了。
以上只是顺利运行的情况,其实考虑到对方反爬虫,网络不稳定等这种原因,打开page页后,这个页可能永远拿不到触发下一步的url
因此这个调用,在这一步阻塞,不会调用response,响应给客户端,也因此对应的连接一直保持CLOSE_WAIT,因为page占用的资源不能释放(代码内的逻辑是,取出token,调用response前释放 page.close())因此内存占用会增大。
问题找到,处理就简单了,处理方式在外部加了超时控制,超时后,page.close() 并向client response 异常信息。
问题解决。
转载于:https://www.cnblogs.com/zihunqingxin/p/8631567.html
基于phathomjs token 不定时无响应问题排查相关推荐
- Doom流量回放工具导致的测试环境服务接口无响应的排查过程
Doom流量回放工具导致的测试环境服务接口无响应的排查过程 现象描述: a)部分接口(A组接口)无响应 b)部分接口(B组接口)正常响应 c)还有一部分接口(C组接口),场景1无响应,场景2正常响应 ...
- WPF 基于 WER 注册应用崩溃无响应回调和重启方法
本文来告诉大家如何在 Windows 上利用从 Vista 引入的 Windows Error Reporting (WER) 机制来实现,在应用崩溃.无响应等异常的时候收到回调用于处理信息保存 在 ...
- CPU占用较高及CPU占用不高但无响应问题排查小记
CPU占用不高但交易无响应排查 使用top -c 查看CPU使用情况 发现cpu占用不高,继续排查 使用jstack 应用进程号查看日志 发现ThreadA.ThreadB互相等待对方释放锁资源导致了 ...
- python为什么会出现无响应怎么办_python定时检测无响应进程并重启的实例代码
总有一些程序在windows平台表现不稳定,动不动一段时间就无响应,但又不得不用,每次都是发现问题了手动重启,现在写个脚本定时检测进程是否正常,自动重启. 涉及知识点 schedule定时任务调度 o ...
- 路由器无服务器无响应是怎么回事啊,wifi服务器无响应怎么解决(图文)
摘 要 [导读]wifi服务器无响应怎么解决,下面就是路由器之家整理的网络知识百科,来看看吧!大家好,我是191路由器网小编,上述问题将由我为大家讲解.wifi服务器无响应解决的方法是:1.请登录WI ...
- 为什么和平精英无响应_什么和为什么
为什么和平精英无响应 重点 (Top highlight) 什么和为什么 (The What and Why) Amazon has long been striving to fix the iss ...
- mac securecrt程序无响应_如何重置mac上的系统管理控制器smc教程
虽然mac是一款十分高端的个人笔记本电脑,但是mac也会有出现故障的时候,比如风扇高速转动.键盘背光灯行为有些异常异常等等,那极有可能是你的系统管理控制器smc出现了问题,所以今天小编就来科普大家如何 ...
- 路由器连网提示服务器无响应,路由器提示服务器无响应
路由器提示服务器无响应 内容精选 换一换 HiLens Kit有两种组网方式,分为无线和有线两种方式连接路由器,本章介绍有线网络配置方式.不能同时使用无线网络和有线网络连接同一个路由器,无线连接会自动 ...
- protobuf 安装_Beego 安装时 一直无响应(443)怎么办
Beego 是一个使用 Go 的思维来帮助构建并开发 Go 应用程序的开源框架,是由国人开发的,官方文档都是中文的,官网地址如下:beego: simple & powerful Go app ...
最新文章
- 使用uglify不能压缩的一些js语法(持续发现中)
- 网页脚本基本java语法_JSP 基础语法
- 信息系统项目管理师:第7章:项目成本管理-章节重点
- 在vSphere Client中启动虚拟机创建进程以及VMwareTools安装
- 创业思路(1) - 收藏夹分享平台
- HDU-5895 Mathematician QSC
- Hadoop生态Flume(二)安装配置
- Redis 实现接口访问频率限制
- 5.Java 面试题整理(JDBC ,JDO 方面)
- jsp中的四种对象作用域
- 使用cacti监控CISCO交换机
- 迷人的bug--torch.load
- 京东金融创新”ABS云平台” 大数据提升直接融资效率
- mongodb占内存过大情况处理
- win7电脑网站服务器,Win7系统
- 串口 单片机 文件_单片机引脚介绍
- 改ip 银河麒麟_PK体系银河麒麟云桌面和云平台
- 适合计算机的音乐,好听的适合做电脑开机音乐的歌
- C# 编辑器 Editor
- MATLAB解方程组相关方法
热门文章
- 微信搜索谁把你删除了
- EntityFramework用法探索(二)CodeFirst
- MemCached java client 1.5.1 性能测试
- GNU C之__attribute__
- 45 MySQL自增id
- es安装ik后报错无法启动 read write
- Webpack 打包学习
- 常见的浏览器兼容性问题与解决方案——CSS篇
- android stack error message is Fail to start the plugin
- jQuery基础---filter()和find()