php缓存模块apc可能导致php-fpm终止
如果你的网站出现502错误。同时你网站中又使用了apc模块来做缓存处理。那么这篇文章兴许能帮到你。
首先,查看了php-fpm 的进程数。
发现php-fpm的进程数已经到达了php-fpm.conf中设置的最大值。
发现很多php-fpm进程,肯定有问题。
然后,用pstack命令查看这些php-fpm进程都在干啥。
sudo pstack pid
由堆栈信息我们可以肯定php的apc模块申请互斥锁权限时,一直获取不到互斥锁权限,一直等待,导致卡死了。
接下来,我们查下,是什么导致apc模块一直拿不到互斥锁权限。我们使用gdb排查,最终查出互斥锁的权限被进程号11274的进程占用着
那么为啥11274进程一直占用互斥锁权限,不释放呢?最终发现这个进程已经退出了。11274的进程为啥会退出呢?在php-fpm 的日志中找到了答案。
NOTICE: [pool www] child 11274 started
WARNING: [pool www] child 11274 exited on signal 11 (SIGSEGV) after 0.089068 seconds from start
此进程运行过程中遇到了段错误,导致进程异常退出了。
然后发现是php的hsf扩展在启动初始化的时候遇到内存问题,导致段错误。
罪魁祸首:
因为php扩展hsf启动的时候发生内存错误
导致php-fpm进程异常退出。
退出的进程当时拥有apc的互斥锁。
但是退出时,由于是异常退出,没能释放互斥锁。
导致php-fpm其他进程无法获取apc的互斥锁。导致死锁。
所以建议不再使用apc而采用opcache来做缓存。
php缓存模块apc可能导致php-fpm终止的更多相关文章
- 【构建Android缓存模块】(一)吐槽与原理分析
http://my.oschina.net/ryanhoo/blog/93285 摘要:在我翻译的Google官方系列教程中,Bitmap系列由浅入深地介绍了如何正确的解码Bitmap,异步线程操作以 ...
- jQuery 源码分析(十) 数据缓存模块 data详解
jQuery的数据缓存模块以一种安全的方式为DOM元素附加任意类型的数据,避免了在JavaScript对象和DOM元素之间出现循环引用,以及由此而导致的内存泄漏. 数据缓存模块为DOM元素和JavaS ...
- 【Java EE 学习 78 上】【数据采集系统第十天】【Service使用Spring缓存模块】
一.需求分析 调查问卷中或许每一个单击动作都会引发大量的数据库访问,特别是在参与调查的过程中,只是单击“上一页”或者“下一页”的按钮就会引发大量的查询,必须对这种问题进行优化才行.使用缓存策略进行查询 ...
- .NET 缓存模块设计
上一篇谈了我对缓存的概念,框架上的理解和看法,这篇承接上篇讲讲我自己的缓存模块设计实践. 基本的缓存模块设计 最基础的缓存模块一定有一个统一的CacheHelper,如下: public interf ...
- IOS编程 图片缓存模块设计
手机客户端为什么会留存下来?而不是被一味的Wap替代掉?因为手机客户端有Wap无可替代的优势,就是自身较强的计算能力. 手机中不可避免的一环:图片缓存,在软件的整个运行过程中显得尤为重要. 先简单说一 ...
- 使用spring EL表达式+自定义切面封装缓存模块
需求是这样的,业务代码需要使用到缓存功能以减少数据库压力,使用redis来实现,并且需要生成缓存的key由方法的传参拼接而成(貌似也只能这样才能保证同样的select查询可以使用缓存),简单的方式就是 ...
- 一步步实现一个基本的缓存模块·续, 添加Memcached调用实现
jusfr 原创,转载请注明来自博客园. 在之前的实现中,我们初步实现了一个缓存模块:包含一个基于Http请求的缓存实现,一个基于HttpRuntime.Cache进程级的缓存实现,但观察代码,会发现 ...
- 简单的内存缓存模块 - Smache
介绍 [sm]art + c[ache] = smache Smache 是一个方便的内存缓存模块,可以通过一些简单缓存策略避免无限占用更多的内存,同时确保最常用最应该被缓存的对象被缓存. GitHu ...
- mybaits源码分析--缓存模块(六)
一.缓存模块 MyBatis作为一个强大的持久层框架,缓存是其必不可少的功能之一,Mybatis中的缓存分为一级缓存和二级缓存.但本质上是一样的,都是使用Cache接口实现的.缓存位于 org.apa ...
随机推荐
- JSP入门 Listener
实现HttpSessionListener 编写一个OnlineUserListener类 package anni; import java.util.List; import javax.serv ...
- Java公开课-01.类和对象
一,类和对象的含义 1.类:类是具有相同属性(静态特征)和行为(功能 )的一系列事物的集合. eg:以下俩者是不是类 1)汽车 √ 2)小胖桌子上那个红色的杯子 × 2.对象:被精确限定到一个特殊 ...
- HDU1212
大数MOD #include<cstdio> #include<cstdlib> #include<iostream> #include<algorithm& ...
- [解读REST] 1.REST的起源
0. 世界上第一个网站 1990年12月20日,这一天对于现在的互联网来说意义非凡.欧洲核子研究组织(CREN)的科学家Tim Berners-Lee在一台NeXT电脑上启动了世界上的第一个网站(当然 ...
- winPcap编程之环境搭建(一)
之前用winPcap做过一个拦截网络数据包的程序,作为当时的网络编程课程的课程设计,现在重新学习一下. 工具:codeblocks 要用到的一些东西:WinPcap.exe与winPcap一些库文件 ...
- sbt 配置文件
配置文件名:application.conf, VM options: -Dconfig.file=application.conf 配置文件内容规范: openStrategy{ alive { a ...
- JDBC工具类实例
本文以讲解用单利模式实现一个简单的JDBC实用工具类JDBC连接的四个基本步骤:1.加载相应数据库驱动2.建立相应数据库连接3.构建Statement语句,即增删改查SQL语句4.执行Statemen ...
- 前端页面中如何在窗口缩放时让两个div始终在同一行显示
直接贴代码吧 先总结一下吧 有两种方法 一 最外层设置一个大div 给这个大div固定的宽度和高度 给里面两个小div 设置浮动 设置宽高 <!DOCTYPE html> &l ...
- 在Owin Self-Hosing下实现每个请求中共享上下文(数据)
问题 这几天在做公司的外部WebApi网关,由于使用了OAuth2.0,所以不得不使用Owin来部署网关. 而涉及到请求上下文的问题,为了使业务层能获取到请求头的信息,又不与网关耦合,决定把请求信息写 ...
- IOC杂谈(一)初识IOC
初衷 发现学习东西不单只是看,用,还有很重要一点就是记录,不然过个几个月再用到相同的知识时,你会发现你已经丢得差不多了,故此开始在博客园记录的同时也与各位同行分享知识. 正题 关于IOC,在刚工作时就 ...