位置: 编程技术 - 正文

php+redis在实际项目中HTTP 500: Internal Server Error故障排除(php redis数据类型)

编辑:rootadmin

推荐整理分享php+redis在实际项目中HTTP 500: Internal Server Error故障排除(php redis数据类型),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:php redis常用命令,php redis常用命令,php redis使用,redisson php,php redis使用,php redis zset,php redis常用命令,php redis incr,内容如对您有帮助,希望把文章链接给更多的朋友!

问题描述用户量快速增长,访问量在短时间内翻倍,由于前期容量规划做得比较好,硬件资源可以支撑,可是软件系统方面出现了大问题:% 的请求都会返回 HTTP : Internal Server Error通过查看日志,发现错误是在 PHP <-> Redis 的连接处理上调试处理

第1次刚开始时并没有找到根本原因,只能尝试各种与错误相关的办法,例如:增加 PHP 连接数,并把超时时间从 ms 增加到 2.5s禁止掉 PHP 设置中的 default_socket_timeout在主机系统中禁止掉 SYN cookies检查 Redis 和 Webservers 的文件描述符数量增加主机系统的 mbuffer调整 TCP backlog 数量……

尝试了很多方法,但全部无效

第2次想在预发布环境中重现这个问题,可惜,还是没成功,应为流量不够大,无法复现

第3次会不会是代码中没有关闭 Redis 连接呢?正常来讲,PHP在执行结束时会自动关闭资源连接,但老版本中会有内存泄漏的问题,保险起见,把代码都修改一遍,手动关闭连接结果还是无效

第4次怀疑目标:phpredis 这个客户端库做 A/B 测试,替换回 predis 这个库,部署到数据中心中 % 的用户量上得益于良好的代码结构,替换工作很快完成可结果依旧是无效,但也有好的一面,可以证明 phpredis 没问题嘛

第5次查看了一下 Redis 的版本,是 v2.6,当时最新版本是 v2.8.9升级 Redis 试一下吧,升完后还是不行没事儿,要保持乐观,这不顺便把 Redis 版本升为最新的了

第6次通过查找大量文档,在官方文档中发现了一个调试好方法 Redis Software Watchdog,打开后执行:

查看 Redis 日志:

发现了问题:每隔几分钟就向硬盘保存一次数据,fork 一个后台存储进行为什么需要大概 ms(通过上面日志的第1条和第2条的时间可以看出来)

到这儿,终于找到问题的根源了,因为 Redis 实例中有大量的数据,导致每次持久化操作 fork 后台进程时非常耗时,并且在他们的业务中经常修改key,又导致了频繁触发持久化,也就经常产生对 Redis 的阻塞

处理办法:使用单独的 slave 来做持久化

这个 slave 不处理真实的流量请求,唯一的作用就是处理持久化,把之前 Redis 实例上的持久化操作转移到这个 slave 上

php+redis在实际项目中HTTP 500: Internal Server Error故障排除(php redis数据类型)

效果非常明显,问题基本解决,但有的时候还是会报错

第7次排查可能阻塞 Redis 的慢查询,发现有地方使用了 keys *

因为 Redis 中的数据越来越多,这个命令自然会产生严重阻塞

可以使用 scan 进行替换

第8次经过前面的调整,问题已经解决,随后的几个月,即使流量在不断增长,也都抗住了

但他们意识到了新的问题:

现在的方式是,来一个请求就创建一个 Redis 连接,执行几个命令,然后再断开连接,在请求量很大时,这个方式产生了严重的性能浪费,一半以上的命令是用来处理连接操作的,这都超过了业务逻辑上的处理,也使 Redis 变慢

解决方法:引入 proxy,他们选择了 twitter 的 twemproxy,只需要在每个 webserver 上安装代理,twemproxy负责与 Redis 实例进行持久连接,这样就大大减少了连接方面的操作

twemproxy还有两个方便的地方:

支持 memcached可以阻止非常耗时或者危险的命令,例如 keys、flushall效果自然很完美,再也不用担心之前的连接错误

第9次通过数据分片来继续优化:

对不同上下文的数据拆分隔离对相同上下文的数据进行一致性哈希分片效果:

减少了每台机器上的请求、负载提升了缓存的可靠性,不担心节点故障

小结原文作者写的非常好,详细的描述了他们在 Redis 应用上的成长历程,是很值得参考的实践经验原文地址

PHP的中使用非缓冲模式查询数据库的方法 最近在开发一个PHP程序时遇到了下面的错误:PHPFatalerror:Allowedmemorysizeofbytesexhausted错误信息显示允许的最大内存已经耗尽。遇到这样的错误起初让

PHP中使用OpenSSL生成证书及加密解密 依赖于OpenSSL扩展/*加密解密*/functionauthcode($string,$operation='E'){$ssl_public=file_get_contents(DATA_PATH."/conf/cert_public.key");$ssl_private=file_get_contents(DATA_PATH."/conf/cert_pri

PHP严重致命错误处理:php Fatal error: Cannot redeclare class or function 1、错误类型:PHP致命错误Errortype:PHPFatalerrorFatalerror:Cannotredeclare(a)(previouslydeclaredin(b))in(c)online(d)2、错误描述:该错误报告表示你正企图对已经定义过的函数

标签: php redis数据类型

本文链接地址:https://www.jiuchutong.com/biancheng/295407.html 转载请保留说明!

上一篇:php实现给二维数组中所有一维数组添加值的方法(php定义一个二维数组)

下一篇:PHP的中使用非缓冲模式查询数据库的方法(php中的九大缓存技术)

  • 中外合资企业要交什么税
  • 货运代理费属于运费还是其他
  • 营业外收入汇算清缴需要调整吗
  • 其他收益属于什么类
  • 社保本期工资总额是怎么填的
  • 小微企业所得税税率2.5% 10% 25%
  • 公司对公账户给员工发工资税是谁扣
  • 出口的港杂费包括哪些
  • 年前采购
  • 空白增值税报表在哪下载
  • 承兑差额怎么做账
  • 跨区域缴纳社保
  • 折扣折让 红字发票账务处理
  • 进项税额转出后续处理
  • 企业在筹办期间发生的开办费计入管理费用账户
  • 发票已抵扣是什么意思
  • 奖金部分
  • 供应商不给货款怎么办
  • 老会计有多厉害
  • 房产税逾期有滞纳金吗
  • 个税手续费返还计入哪个科目
  • 租赁类专票不含增值税吗
  • 如何开具红字专用发票信息表
  • 增值税专用发票验票
  • 未办预售证,企业取得这笔收入要缴增值税吗?
  • 一般纳税人销售自己使用过的物品
  • 普票的销项可以抵扣吗?
  • 个体工商户出售住房增值税
  • 贷款逾期账务处理流程
  • 土地增值税含房产吗
  • 私车公用报销怎么算
  • 上月的应付账款怎么记账
  • php数组可以使用哪些键名
  • 多提附加税跨年怎么申报
  • 其他业务支出包括的内容
  • 耕地开垦费计入土地成本吗
  • 怎么查上市公司
  • 应用程序无法正常启动0xc000007b
  • typora修改背景颜色
  • 回迁房办产权证的时候需要交多少钱
  • 利用php判断是否为素数
  • php反射机制实现自动依赖注入
  • SqlServer2014安装选择版本
  • 小规模纳税人工资薪金怎么申报
  • 工资总额主要包括
  • 哪些属于费用发票类型
  • 电子税务局增值税抵扣流程
  • 农产品收购发票使用范围
  • 月销售额不超过15万的免征增值税
  • 管理费用借方贷方
  • 缴纳印花税如何写分录
  • 只有销售才能使你成功的名言
  • 总资产法怎么计算公式
  • 发票抵扣联要放入凭证里吗
  • 票据质押如何做账
  • 4s店出售试驾车的增值税是多少
  • 企业购买银行理财产品的会计处理
  • 增值税普通发票怎么开
  • 本年利润的年末余额
  • 广告费支出的税种有哪些
  • 新成立公司季初资产总额是填1
  • 公司变更地址后需要做哪些事情
  • 商业企业批发商是什么
  • 数据库访问机制
  • win7旗舰系统
  • ubuntu文本编辑器怎么打开
  • 苹果Mac系统怎么安装
  • 快速解决儿童鼻塞
  • 一台电脑多个用户组怎么显示在一个屏幕上
  • Mac怎么设置默认视频播放器
  • spoffice是什么意思
  • 如何将windows 10
  • JavaScript中的变量名不区分大小写
  • android实现天气预报
  • unity服务器端
  • javascript详细介绍
  • jQuery Timelinr实现垂直水平时间轴插件(附源码下载)
  • unity 3d游戏开发(第2版)
  • 掌上海关怎么查询
  • 企业可以享受哪些政策优惠
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设