- 博客(36)
- 资源 (24)
- 收藏
- 关注
原创 multiprocessing导致内存不足问题 Cannot allocate memory
我这边遇到的原因是因为本身脚本就占用了很大的内存,而在Linux系统中,默认的多进程启动方式是 fork,每次 fork 调用都会复制父进程的整个内存空间,从而导致整个服务器内存不足而退出。在Linux系统中,默认的多进程启动方式是 fork,这种方式可能会导致内存占用问题。资源消耗:每次 fork 调用都会复制父进程的整个内存空间,如果内存使用较大,可能会导致资源消耗问题。数据竞争:如果父子进程需要共享数据,必须小心处理数据竞争和同步问题。在程序入口处设置启动方式,可以减少内存占用。
2024-11-26 14:04:29
336
原创 upstream prematurely closed connection错误fix
原因:keepalive_timeout是长连接保持的时间,如果没有任何数据传输的话,超过这个时间,服务端会关闭这个连接。那这就对上了,说明在这32秒没有任何数据传输,也正好在这个点,A向B发送了数据,而B关闭了这个连接,于是就出现了上面的现象。并发大的时候报错"upstream prematurely closed connection while reading response header"场景:lua使用 ngx.location.capture 调用 upstream。
2024-11-05 14:10:32
297
原创 ffmpeg使用高斯模糊为视频生成一个模糊背景(竖屏转横屏)
scale=iw/10:-2,对裁剪后的视频缩小未原来的1/10以便高斯模糊(速度快)scale=960:540[ibg],对高斯模糊后的视频进行放大,并保存到vbg变量中。将一张竖屏的封面截图转成背景为高斯模糊竖屏截图居中的横屏16:9的封面。540):540, 已540为原竖屏图片高度,宽度自动按比例缩放。gblur=sigma=5,对缩小后的视频背景进行高斯模糊。(H-h)/2是y的坐标,也就是高度居中叠加。9),从原视频中裁剪出一个竖屏区域作为背景。overlay的参数x,y, 0为x的坐标。
2023-07-11 14:12:56
1217
原创 PHP curl下载文件内存溢出
由PHP触发的,检查了一下相应的内存和网络监控,发现在网络流量比较大的时候就会触发oom,所以联想到了可能是PHP的一个下载服务有问题。2.给curl增加下载限速CURLOPT_MAX_RECV_SPEED_LARGE。最近一段时间系统老是出现 php 触发 oom,查看了一下日志,发现输出内容是。这样会将整个文件留先缓存在内存里面,在未close之前会占用整个内存。1.curl下载文件时直接使用CURLOPT_FILE将流写入到文件。
2023-02-27 11:39:27
584
原创 正向代理访问带端口的url时返回Received HTTP code 403 from proxy after CONNECT
curl: (56) Received HTTP code 403 from proxy after CONNECT” 报错。
2023-02-09 11:45:24
3545
1
原创 mysql按两个值最近的排序方式
因为在mysql中,true为1,false为0,因此对条件求和可以得到匹配的搜索条件数.mix使它们“最接近匹配”业务背景:音乐节拍要找最符合范围的数据,而音乐节拍是有一个数字类型的适用范围值的。length主要计算步长,按步长排序是在mix的基础上做多一层更准确一点的排序。
2022-09-05 18:06:00
269
原创 PHP 取余bug解决方案
PHP语言虽然功能强大,但并不代表其没有缺点,在编写代码的过程中未免会遇到一些让人头痛的问题。下面我们将为大家介绍有关PHP整数取余返回负数的解决办法。当你用PHP 2942769727 % 32 计算的时候 会发现输出的是 -1 正确的值应该是 31,PHP取余出现了负数,问题所在:PHP取余默认为整数的.而且当你定义$i = 2942769727 ;其实就已经溢出了.所以要加上强制类型转换.变成float类型.但是这样还不够.因为%这个取模计算还是针对整数的.所以我们需要一个函数fmod.是针对
2022-05-24 10:35:53
316
原创 php不支持break $r变量的形式解决方案
最近在开发的时候出现“E_COMPILE_ERROR "‘break’ operator with non-constant operand is no longer supported” 这个报错。报错的代码行是 break $r; $r 为纯数字变量。解决方案是:把break $r 变量"r"改成对应的数字即可。if($r == 1) break;if($r == 2) break 2;...
2022-05-19 10:35:57
172
原创 Centos8修改为阿里yum的源
切记不要使用 wget -O /etc/yum.repos.d/CentOS-aliyun.repo http://mirrors.aliyun.com/repo/Centos-8.repo使用这个源在yum make clean之后会提示 Cannot download repomd.xml改为 wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo即可因
2022-03-18 17:58:59
1431
原创 Redis批量删除KEY的方法
Redis 中有删除单个 Key 的指令 DEL,但好像没有批量删除 Key 的指令,不过我们可以借助 Linux 的 xargs 指令来完成这个动作。代码如下:redis-cli keys “*” | xargs redis-cli del//如果redis-cli没有设置成系统变量,需要指定redis-cli的完整路径//如:/opt/redis/redis-cli keys “*” | xargs /opt/redis/redis-cli del如果要指定 Redis 数据库访问密码,使用下
2022-03-07 11:59:26
898
转载 三种常见的限流算法
在开发高并发系统时,有三把利器用来保护系统:缓存、降级和限流。那么何为限流呢?顾名思义,限流就是限制流量,就像你宽带包了1个G的流量,用完了就没了。通过限流,我们可以很好地控制系统的qps,从而达到保护系统的目的。本篇文章将会介绍一下常用的限流算法以及他们各自的特点。1、计数器算法计数器算法是限流算法里最简单也是最容易实现的一种算法。比如我们规定,对于A接口来说,我们1分钟的访问次数不能超过100个。那么我们可以这么做:在一开 始的时候,我们可以设置一个计数器counter,每当一个请求过来的时候,co
2022-03-07 11:41:13
405
原创 mongo导出指定表字段条件为csv
命令为:./mongoexport -h {ip} --port {端口} -d {库名} -c {表名} -o {输出文件路径} --csv -f “{字段名}” -q ‘{筛选条件}’示例:./mongoexport -h 127.0.0.2 --port 27018 -d demo-c failure -o /home/test/20210812.csv --csv -f "plat,addTime,filename" -q '{"addTime":{"$gte":1628697600,"$lt
2022-03-07 11:18:47
538
原创 防止adobe注册校验host设置
127.0.0.1 activate.adobe.com127.0.0.1 activate.adobe.com127.0.0.1 practivate.adobe.com127.0.0.1 ereg.adobe.com127.0.0.1 activate.wip3.adobe.com127.0.0.1 wip3.adobe.com127.0.0.1 3dns-3.adobe.com127.0.0.1 3dns-2.adobe.com127.0.0.1 adobe-dns.adobe.com
2022-03-07 10:51:05
8330
原创 github最新最快有效host地址
github140.82.112.4 github.com140.82.113.3 gist.github.com185.199.108.153 assets-cdn.github.com199.232.68.133 raw.githubusercontent.com199.232.68.133 gist.githubusercontent.com199.232.68.133 cloud.githubusercontent.com151.101.192.133 camo.githubuserc
2022-03-07 10:48:57
10362
原创 lua AES-128-ECB 加密与PHP加密不一致问题
由于aes ecb不需要iv,但是由于aes内置默认方法的问题,不传iv会导致salt被MD5加密,所以iv必须传“”“\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0” 16个0local aes = require "resty.aes" local aes_128_ecb = assert(aes:new(salt, nil, aes.cipher(128, "ecb"), {iv="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"})) loca
2021-11-23 17:41:14
1373
原创 PHP curl内存溢出处理
最近发现php 在执行 curl_exec()的时候报错 Allowed memory size of 134217728 bytes exhausted (tried to allocate 69740619 bytes)主要原因是:CRUL长时间访问HTTPS网站时有内存泄露问题解决办法是:禁用 ssl验证curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
2021-08-20 10:26:07
690
原创 lua 三目运算的坑
lua 中如果要想让a and b or c等价于a ? b : c,前提是b表达式必须为真,也就是说b不能等于false或者nil。例如local a = config['env'] == "dev" and false or true这一句无论如何都会返回 true,所以需要改成local a = config['env'] ~= "dev" and true or false问题解决!...
2021-07-15 12:43:54
164
原创 OpensResty踩坑数组为空转为json时为什么变成了object
调查发现,cjson库中通过设置encode_empty_table_as_object来得到精确的空table的json类型。但经过多次测试发现cjson设置encode_empty_table_as_object是产生的全局的影响的,你自己新写的项目还好,可以按照这种思路去控制json的encode结果。解决方法和简单,一个语句即可 cjson.encode_empty_table_as_object(false) -- 设置空的table解析为[]...
2021-07-12 17:36:24
329
原创 避免token并发问题
Redis可以用删除操作来判断Token是否有效,删除成功代表Token校验通过,采用select+del来校验Token 会存在并发问题
2021-07-12 16:57:59
307
原创 ngx.shared.DICT.incr expecting 3 or 4 arguments, but only seen 5报错解决方案
最近使用了一个lua 自动熔断类,测试的时候发现openresty有一个错误提醒:[error] 13522#13522: *10466335 failed to run log_by_lua*: /htdocs/utils/url_fuse.lua:121: expecting 3 or 4 arguments, but only seen 5stack traceback: [C]: in function 'incr' /htdocs/utils/url_fuse.
2021-07-07 09:49:00
388
原创 redis大key搜索
1、使用自带命令 redis-cli --bigkeys参考:https://redis.io/topics/rediscli$ redis-cli --bigkeysScanning the entire keyspace to find biggest keys as well as#average sizes per key type. You can use -i 0.1 to sleep 0.1 sec per 100 SCAN commands (not usually needed)
2021-06-30 10:00:07
248
原创 mysql判断时间段是否有交叉
经常有这样场景:表中每条记录都有一个有效期(时间段),要求在添加和修改的时候时间段不重叠。其实就是两个集合不交叉,只要新插入的条记录的结束时间大于已存在的记录的开始时间并且新插入记录的最小值小于已存在记录的最大值,那么这两个时间段一定存在交叉。总结起来就一句话:最小值小于最大值并且最大值大于最小值,则一定重叠。所以,解决上述问题很简单,查询表,如果存在这样记录,表示待插入这条记录与表中已有记录在时间段上有重叠;如果不存在这样的记录,表示可以插入。这是插入,修改的需要排除待修改的这记录。...
2021-04-27 16:43:21
878
1
转载 lua
首先来看最最普通的一个 json 解析的例子(被解析的 json 字符串是错误的,缺少一个双引号):-- http://www.kyne.com.au/~mark/software/lua-cjson.php-- version: 2.1 devellocal json = require("cjson")local str = [[ {"key:"value"} ]]local t = json.decode(str)ngx.say(" --> ", type(t))-
2021-04-27 16:36:31
1114
原创 不同模拟器使用不同IP代理方法
方法很简单,首先需要下载一款 芝麻游戏助手的软件(http://youxi.zhimaruanjian.com/)1.注册付费之后登录软件2.选择IP区域3.选择你对应的模拟器,因为这个软件是根据进程名称去识别模拟器的,所以要先选好模拟器4.启动代理服务PS:需要先打开芝麻游戏助手之后,再启动模拟器...
2021-04-27 16:27:18
990
原创 逍遥模拟器端口转发到本地方法
echo 连接adb#5037 是逍遥模拟器默认的adb端口E:\"Program Files"\Microvirt\MEmu\adb.exe connect 127.0.0.1:5037echo 显示adb连接设备E:\"Program Files"\Microvirt\MEmu\adb.exe devicesecho 转发54321端口到本机#127.0.0.1:21503 21503为对应的模拟器设备端口# forward tcp:电脑端口 tpc:模拟器里面的端口E:\"Prog
2021-04-27 16:20:58
1153
2
转载 lua点号与冒号操作符的区别
看下面示例代码:local str = "abcde"print("case 1:", str:sub(1, 2))print("case 2:", str.sub(str, 1, 2))执行结果:case 1: abcase 2: ab冒号操作会带入一个 self 参数,用来代表 自己。而点号操作,只是 内容 的展开。在函数定义时,使用冒号将默认接收一个 self 参数,而使用点号则需要显式传入 self 参数。示例代码:obj = { x = 20 }function obj
2021-04-27 16:10:02
189
原创 lua获取完整请求方案,支持各种content-type
以下代码功能如题-- 获取请求参数-- return tablefunction _M:get_request() local args = nil local request_method = ngx.var.request_method if "GET" == request_method then args = ngx.req.get_uri_args() elseif "POST" == request_method then local headers = ngx.req.g
2021-04-27 15:44:02
1681
原创 开发应急小脚本
1.按条件批量kill mysql指定慢查询SELECT concat('KILL ',id,';') FROM information_schema.processlist where User ='www'2.批量杀掉某个进程名sudo kill -9 `ps -ef |grep php-fpm|awk '{print $2}' ` 3.nginx拒绝某个来路的IPif ($http_x_forwarded_for ~ "36.107.181.162") {return 403;}4
2021-04-15 15:02:25
55
原创 Mysql 优化
1. 尽可能使用中间变量来开启查询缓存// 查询缓存不开启 $r = mysql_query("SELECT username FROM user WHERE signup_date >= CURDATE()"); // 开启查询缓存 $today = date("Y-m-d"); $r = mysql_query("SELECT username FROM user WHERE signup_date >= '$today'"); 2. EXPLAIN 你的 SELECT 查询
2021-04-15 14:07:16
67
原创 PHP红包生成平均算法
const MIN_TOTAL = 2; //最小红包金额 const MAX_TOTAL = 200; //最大红包金额 const MAX_NUM = 50; //最多红包个数 const MIN_EVERY_RED_ENVELOPE = 0.1; //每个红包最小金额 const ENVELOPE_DUE...
2020-06-16 15:05:33
366
原创 PHP 靓号匹配方法
/** * 邀请码规则检查 * @return boolean */ public static function check($code, &$ruleHit=''){ //连续3个相同字符 if(preg_match("/([0-9A-Z])\\1{2,}/u", $code, $match)){ $ruleHit = '有连续3个相同的字符,它是'.$match[1]; ret...
2020-06-16 15:03:44
746
好用的流量录制回放工具
2024-07-04
Creative Sound Blaster® X-Fi™ Surround 5.1 Pro声卡驱动
2021-04-15
PHP 读取安卓apk包信息通用的方法
2021-03-05
PHP5.4 使用的Mongo、Memcache、Redies DLL包
2014-10-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人