8 Q博士

尚未进行身份认证

不忘初心

等级
博文 591
排名 448

定位python内存泄漏问题

记一次Python内存泄漏的排查背景上周使用我的pythonweb框架开发的第二个项目上线了,但是没运行几天机器内存就报警了,8G内存使用了7G,怀疑有内存泄漏,这个项目提供的功能就是一堆机器学习模型,对历史数据进行训练,挑选出最优的5个模型,用作未来数据的预测,所以整个项目由着数据量大,运行时间长的特点,就是把策略的离线工作搬到了线上。定位内存泄漏第一步:确定是否有内存泄漏上...

2019-07-10 22:57:02

利用pyinstaller打包python项目发布到线上

问题抛出点3月份搭建的pythonweb框架,在一个项目中落地后,在部署的时候还是稍显麻烦,虽然用了pipenv的方式管理依赖,但是在线上的时候还得要求线上环境可以连外网,但是一般线上环境会有一些隔离,而且上线前也会有一些python依赖要去安装,这其实还不够极致。所以需要一种能把python项目打成bin文件的方式,所有依赖的包都集成在这个bin文件中,直接上线bin文件就可以了。如果这个能...

2019-05-08 19:32:19

C++ Invalid read

问题描述

2019-03-29 19:09:22

五年的博客之旅

2014.3.22今天无意中翻了下自己之前写的文章,发现自己写下第一篇文章是2014年3月22日,马上就5年整了。回想当时的自己,刚刚毕业半年多,刚刚换了家新公司,从上海去天津,什么都不懂,想用博客的方式记录自己的成长。现在来看,目标达成了。变化五年来,从天津到北京,经历了3家公司,从测试开发到转服务端研发,一步步走的还算扎实稳健。不知不觉也工作快6年了,脱出了稚气,披上了老练。出书之前...

2019-03-15 11:18:59

基于sanic打造python web框架

0x00Why为何做这件事,在去年的一个项目中,算法同学要使用在线模型训练,不得不是用python的tf框架,这样我们不得不是pythonweb框架,当时因为团队里面没人懂python相关的知识,只是简单的用tornado搭建的一个。但是在后期使用过程中,压测发现了tornado在低耗时的接口不够稳定,波动比较大。我们的接口一般20ms,但是经常波动到40ms,并发其实也不大。所以经历了通过...

2019-03-06 17:24:11

go-sql-driver/mysql 串数据的问题

问题描述压测过程中,发现数据库中某个字段(json字符串)在解析的过程中提示,json字符串不符合json格式要求,增加日志打印后,发现json打印如下:47^A0^MTCKSGroup177315409841321540984232^D6000^F749279^K52057485773^A1^K188888817731540984137^A1ü4^B{"complete_code":...

2018-12-04 15:07:37

利用 group by 的 Loose Index Scan 优化 sql

参考文章:MySQL优化GROUPBY-松散索引扫描与紧凑索引扫描背景最近压测的时候发现有一条sql语句在查询到几w条数据的时候,查询耗时达到了1s左右,达到了我们线上设置的timeout,需要优化一下。sql作用该sql是为了从订单表(Order)查询哪些店铺、商圈有待指派的订单,where条件中有5个字段来过滤A订单状态,用A=a1来判断是否是新订单。B调度类型,分商圈...

2018-10-18 10:34:02

database/sql query 超时设置

参考文章:Query问题描述接上文,mysql的同步访问问题解决后,继续压测,发现访问mysql的耗时逐渐增大,影响模型整体能力。我设置了readTimeout,没有任何反应,请求耗时还是会超过readTimeout所设置的值。因为:readTimeout只能限制连接数据读取时间,如果程序发生在获取连接前等待时间过长,无法通过这个参数设置,且readTimeout*3才是真正...

2018-09-04 16:02:30

database/sql: rows.Next panic from concurrent map writes

问题描述我们最近用golang重构了以前c++的系统,在最后上线前的压测环节,我负责的模块偶现如下错误:[mysql]2018/09/0223:17:35packets.go:72:readtcpxx:39151->xx:3306:i/otimeout[mysql]2018/09/0223:17:35packets.go:408:busybuffer...

2018-09-03 14:41:38

grpc提供http访问方式

0x00最近系统在从c++迁移到go,之前使用brpc,也需要转移到grpc,但是grpc提供的接口服务原生无法被http访问到,这对我们调试来说也很麻烦,所以需要让grpc跟brpc一样,http也能访问rpc接口0x01grpc-gateway项目:该项目是在grpc外面加一层反向代理,由代理服务器转发json格式,转变成protobuf格式来访问grpc服务,官方解释图如下:...

2018-05-30 11:56:28

C++操作mysql,串DB的问题追查

问题描述kfc项目大联调时发现,原本访问loc_order库的操作,最后操作到了loc库中了,但是是偶尔操作到loc库,这个时候回报错,偶尔操作成功。最后发现一个配置出错,就是loc_order这个库在我们服务器中并不存在,但是我们的客户端应该在这种情况下是能够收到服务器的通知,表示db错误,但是实际上却没有。复现问题我们在本地测试机上复现下这个问题。复现过程如下:然后我把...

2018-05-09 16:38:56

Go语言开发环境搭建

由于准备将项目由c++切到go,这几天学习了go相关的知识。搭建了下开发环境0x00安装go后,验证go安装成功标志$goversiongoversiongo1.10.2darwin/amd64记得设置下GOPATH$echo$GOPATH/Users/doctorq/go0x01go常用命令,go的安装包里面自带了构建工具,我们可...

2018-05-04 16:13:25

TesterHome第四届中国移动互联网测试开发大会 将于北京召开

由TesterHome社区主办的第四届·中国移动互联网测试开发大会(MobileTestingSummitChina,简称MTSC),将于2018年7月13日至14日在北京国际会议中心举办。历经三年积淀,MTSC测试大会已经成为业界享有盛誉的技术盛会,邀请国内外一线技术专家,针对热点前瞻话题,展开从实践入门到企业落地的分享,行业精英齐聚一堂,共同学习交流。Test...

2018-03-16 14:12:29

c++内存泄漏实战

开始开发C++项目也有2个月了,从一开始写代码就绕不开内存泄漏这个点。找了个时间专门搞了个专项活动,从开始的几十个内存泄漏点到现在慢慢了有了点经验,现总结下。检测工具内存泄漏点实践0x010x020x03检测工具我一般会用以下命令启动程序,然后把各个接口触发一遍,让代码覆盖的全一点,然后ctrl+c结束程序,打开leak.log文件查看内存泄漏情况。

2018-01-11 10:31:56

c++项目中引入xgboost静态库

参考文章UsingXGBOOSTinc++c++项目引入xgboost动态库问题背景xgboost项目官方没有提供c_api方式的编译以及引入教程,所以刚开始我们是用直接把项目源码引入到我们的项目中,非常麻烦。刚开始我们以源码的方式导入到项目中,调用源代码的方法中,代码写的非常冗余,而且一些api不能为我们所用。所以总想着如何直接引入xgboost的静态

2018-01-08 16:27:45

Valgrind进行内存泄漏检测

valgrind背景初次涉猎c++编码,被指针折腾的不行,所有为了防止代码写的不好,造成内存泄漏,上线前一定要检测下是否存在内存泄漏,这不用Valgrind试试。环境gcc编译环境搭建完成安装wgetftp://sourceware.org/pub/valgrind/valgrind-3.13.0.tar.bz2tarxvfvalgrind-3.13.0.tar.bz2cdvalg

2017-11-23 12:32:34

Spark成长之路(13)-DataSet与DataFrame

DatasetsandDataFrames前言源码DataFrameDataset创建dataset读取json串RDD转换为Dataset总结DataFrame前言spark1.6中引入了DataSet和DataFrame的概念,然后SparkSQL的API也是基于这两个概念的,到2.2推出的稳定版本的StructuredStreaming也是依靠SparkSQL的AP

2017-08-25 13:45:02

Spark成长之路(12)-Gradient Descent

机器学习理论之一

2017-08-02 11:39:11

Spark成长之路(11)-ngram

ngram简介N-gram代码objectNGramExampleextendsSparkObject{defmain(args:Array[String]):Unit={valwordDataFrame=spark.createDataFrame(Seq((0,Array("Hi","I","heard","about","Spark

2017-07-25 17:24:19

Spark成长之路(10)-CountVectorizer

CountVectorizer简介用文档中单个单词出现的次数组成一个向量。代码objectCountVectorizerExample{defmain(args:Array[String]):Unit={valspark=SparkSession.builder().getOrCreate()valdf=spark.createDataFrame

2017-07-25 16:06:08
CSDN身份
  • 博客专家
奖章
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周上午根据用户上周的博文发布情况由系统自动颁发。