RJ博客

Welcome. I'm finally_y.

Traveling against the wind is more suitable for fly.

Redis内存分析(大key排查)

Redis内存分析(大key排查)
背景 线上Redis遇到一个问题,就是内存无限缓慢增长,2个G的内存几个小时就快被吃完了,因此需要查看Redis实例中数据的内存分布情况。为了不影响线上实例的使用,采用bgsave生成dump.rdb文件,再结合redis-rdb-tools进行静态分析。
2019年02月10日 203 views 1评论

PHP-FPM内存优化

PHP-FPM内存优化
服务器运行一段时间后,发现内存占用不断增长,通过top命名(输入命名后按m键可按进程占用内存大小的排序)查看,发现大部分内存都被 php-fpm 占用,网上查了一下,大概的意思是说,处理每个php请求完成后,php-fpm会回收内存,但不会释放给操作系统,从而导致大量的内存被php-fpm占用。 实测的话如果页面能正常执行完,内存是能释放的,而页面因内存超限而报错的时候,内存是没有释放给操作系统的。
2018年10月01日 181 views 1评论

Redis迁移记录

Redis迁移记录
由于业务需要,要把业务迁移到另一家服务商,其中涉及到: 服务器代码迁移 MySQL迁移 Redis迁移 其中服务器代码和MySQL就不说了,主要说一下Redis的迁移。 目前有3种方案供选择: 1) 第三方工具redis-dump、redis-load实现 2) 通过aof机制导入导出,需要开启aof功能 3) 通过rdb存储机制迁移数据,此方法最为简单,直接dump $key、restore $key即可。
2018年05月10日 174 views 1评论

Linux服务器变肉鸡经历

Linux服务器变肉鸡经历
最近上服务器,发现服务器redis的备份文件路径变了,一开始也没怎么在意,后来发现一些服务老是挂掉。我重启了次服务器,好像恢复正常了。过了一会,一些关键服务又自动挂了,我开始意识到我服务器可能被入侵变成肉鸡了。于是我看了下crontab,发现有个陌生的例行,应该就是它在搞事,于是我把它删掉,重启服务器,惊奇地发现这个例行又出现了。
2018年03月18日 1186 views 3评论

用神经网络深度学习自动生成HTML代码

用神经网络深度学习自动生成HTML代码
用神经网络深度学习,从设计稿自动生成HTML代码。在未来三年内,深度学习将改变前端开发。它将会加快原型设计速度,拉低开发软件的门槛。目前,自动化前端开发的最大阻碍是计算能力。但我们已经可以使用目前的深度学习算法,以及合成训练数据来探索人工智能自动构建前端的方法。在本文中,作者将教神经网络学习基于一张图片和一个设计模板来编写一个 HTML 和 CSS 网站。
2018年02月06日 922 views 1评论

PHP文件锁类防止并发

PHP文件锁类防止并发
对于商品抢购等并发场景下,可能会出现超卖的现象,这时就需要解决并发所带来的这些问题了.在PHP语言中并没有原生的提供并发的解决方案,因此就需要借助其他方式来实现并发控制。 方案一:使用文件锁排它锁 方案二:使用MySQL数据库提供的悲观锁 方案三:使用队列 方案四:使用Redis/Memcached
2018年02月02日 988 views 1评论

python动态页面爬虫 - selenium+PhantomJS

python动态页面爬虫 - selenium+PhantomJS
PhantomJS,这是一个基于webkit的没有界面的浏览器,也就是它可以像浏览器解析网页,功能非常强大。但是据我测试,解析的结果不一定和火狐或者chrome完全一样,但是完全够我们用。 简单介绍一下selenium,这是一个web的自动测试工具,可以模拟人的操作。支持市面上几乎所有的主流浏览器,同时也支持PhantomJS这种无界面浏览器。
2018年01月16日 541 views 1评论

python 输出缓存

python 输出缓存
Linux Shell运行Python脚本,Python脚本while循环里print的内容无法实时写入磁盘log文件,这个其实就是和缓冲有关。 缓冲的目的:是为了减少系统的io调用。只有当符合一定条件(比如缓冲数量)时才调用io。当缓冲区大于0时(等于0时无缓冲,所有的读写操作都直接针对硬盘),Python会将文件内容存放到缓冲区(内存中),从而使程序运行更快,这时,只有使用flush或者 close才会将缓冲区中的数据更新到硬盘中。
2018年01月15日 427 views 1评论

Python:利用pytesser识别简单图形验证码

Python:利用pytesser识别简单图形验证码
Windows按照这篇博客操作基本没问题了,需要注意的是: pytesser是基于tesseract实现的(其实就是通过subprocess模块让tesseract易于调用),所以需要将tesseract.exe所在的路径配置到系统环境变量。如果不配置,则需要把pytesser.py文件的tesseract_exe_name变量的值改为tesseract.exe所在的路径, 否则会报错。
2017年09月12日 910 views 1评论