记录一则phpredis coredump事件
在使用项目工程部署在测试环境(docker)中时发现php连接redis后进程就挂掉了,没有任何报错日志,怀疑是coredump问题。找到相应的coredump文件后,分析得出是redis链接时设置参数问题。
经观察发现线上phpredis版本为2.2.5,docker内版本为2.1.3,项目框架中链接redis使用了参数$r->setOption(Redis::OPT_SERIALIZER, Redis::SERIALIZER_IGBINARY);效果就是会插入一串序列化的数据。
此处的问题是因为写入的数据是不带序列化的(属主机写入),读取时(docker)反序列化,直接就导致php进程coredump了。理解是phpredis高版本下取消了redis::SERIALIZER_IGBINARY这种序列化方式,因此需要注意的是项目框架kohana默认用的序列化方法是SERIALIZER_IGBINARY,而高版本的phpredis是不支持的,要尽量规避phpredis版本搭配问题。
利用watch命令制作简单监控 日常CURL访问带host接口