您现在的位置: 365建站网 > 365文章 > zend opcache引起iis/Apache 不时挂掉 php-cgi.exe - FastCGI 进程意外退出

zend opcache引起iis/Apache 不时挂掉 php-cgi.exe - FastCGI 进程意外退出

文章来源:365jz.com     点击数:974    更新时间:2018-06-24 13:30   参与评论

windows程序日志报错如下: 

无法找到来自源 Zend OPcache 的事件 ID 487 的描述。本地计算机上未安装引发此事件的组件,或者安装已损坏。可以安装或修复本地计算机上的组件。 

6838d631g87c839b61ff3&690.jpg

详细错误xml如下: 
- <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event"> 


- <System> 
  <Provider Name="Zend OPcache" /> 
  <EventID Qualifiers="0">487</EventID> 
  <Level>2</Level> 
  <Task>0</Task> 
  <Keywords>0x80000000000000</Keywords> 
  <TimeCreated SystemTime="2016-03-21T02:10:19.000000000Z" /> 
  <EventRecordID>8122</EventRecordID> 
  <Channel>Application</Channel> 
  <Computer>WIN-3C32USMF062</Computer> 
  <Security /> 
  </System> 
- <EventData> 

  <Data>Unable to reattach to base address</Data> 
  <Data>试图访问无效的地址。</Data> 
  </EventData> 
  </Event> 

解决方法

修改php.ini  

opcache.mmap_base = 0x20000000  

官方给出的答案是 

在 Windows 平台上共享内存段的基地址。 所有的 PHP 进程都将共享内存映射到同样的地址空间。 使用此配置指令避免“无法重新附加到基地址”的错误。

1、可能解决方法一:

系统:windows 2008 r2 

环境:apache 2.4.9 (64)+php 5.5.14 (64) 
运行组件:所有运行组件均以安装,且均为64位版 
症状:opcache 默认配置开启,运行大概10-30分钟,apache 假死崩溃,系统日志可看到以下错误, 


1,无法找到来自源 Zend OPcache 的事件 ID 487 的描述。本地计算机上未安装引发此事件的组件,或者安装已损坏。可以安装或修复本地计算机上的组件。 
如果该事件产生于另一台计算机,则必须在该事件中保存显示信息。 
以下是包含在事件中的信息: 
Unable to reattach to base address 
试图访问无效的地址。 
2,错误应用程序名称: httpd.exe,版本: 2.4.9.0,时间戳: 0x53258cd5 
错误模块名称: php5ts.dll,版本: 5.5.12.0,时间戳: 0x53614545 
异常代码: 0xc0000005 
错误偏移量: 0x000000000001ed3a 
错误进程 ID: 0x46c 
错误应用程序启动时间: 0x01cf8e08bd43da8e 
错误应用程序路径: D:\upupw\Apache2\bin\httpd.exe 
错误模块路径: D:\upupw\Apache2\bin\php5ts.dll 
报告 ID: a356f798-f9fe-11e3-a5ea-902b346c2007 


官方给的解决方案是 
修改php.ini 里opcache 配置 
opcache.mmap_base    默认值为空 


在 Windows 平台上共享内存段的基地址。 所有的 PHP 进程都将共享内存映射到同样的地址空间。 使用此配置指令避免“无法重新附加到基地址”的错误。实验错误,没解决。这个问题,我提交过几次给论坛,火锅也积极解决了,但都没解决. 


无意中从国外1个网站复制了解决方式,opcache.mmap_base = 0x20000000 ,经过在服务器上稳定运行了24+小时。日均pv 1.3W,没有出现假死,算是完美了。这个问题我也准备提交给火锅,默认的配置下是没有这段配置的。 

2、可能解决方法二:

PHP 扩展 OPcache 针对 Moodle 的配置要求

字体大小: 小 中 大

    从 Moodle 2.6 开始,PHP 的扩展 OPcache 就被强烈推荐使用。OPcache 可以提升 Moodle 网站的性能,并降低内存的消耗。PHP 5.5 开始包含了 OPcache 扩展。微软今年已经推出了 Microsoft Drivers 3.2 for PHP for SQL Server,能够支持 PHP 5.6。我终于可以把 PHP 版本升级到 5.6 了,那顺理成章也要配置启用 OPcache 了。

    首先在 php.ini 中要添加扩展的文件名。

[PHP_OPCACHE] 
zend_extension
=php_opcache.dll

    然后根据 Moodle 官网的文档配置 OPcache 的参数项。

[opcache] 
opcache.enable 
= 1 
opcache.memory_consumption 
= 128 
opcache.max_accelerated_files 
= 4000 
opcache.revalidate_freq 
= 60 

; Moodle 要求的设置 
opcache.use_cwd = 1 
opcache.validate_timestamps 
= 1 
opcache.save_comments 
= 1 
opcache.enable_file_override 
= 0 

; 如果 Moodle 中出现某些问题,可尝试用以下配置解决
;
opcache.revalidate_path = 1 ; 可以修复 include 路径的问题 
;
opcache.mmap_base = 0x20000000 ; (仅针对 Windows) 修复 OPcache 出现事件 id 487 的崩溃

; Moodle 2.6 及以上版本的实验用途 
;
opcache.fast_shutdown = 1 ; 使用快速停止续发事件
;
opcache.enable_cli = 1 ; 加速 CLI cron 
;
opcache.load_comments = 0 ; 可减少内存使用,可能与插件及其它应用不兼容

    对于 max_accelerated_files 参数的说明:

    这是 OPcache 哈希表中可存储的脚本文件数量的上限。实际的取值是在质数集合 { 223, 463, 983, 1979, 3907, 7963, 16229, 32531, 65407, 130987 } 中找到的第一个比设置值大的质数。设置值的取值范围是 200 到 100000 之间。Moodle 中建议设置为 4000,实际值就是 7963。Moodle 中核心的 php 文件数量不会超过这个数字,但是如果增加了插件或者做了二次开发,缓存的 php 文件数量大大超过 7963,那就建议把 max_accelerated_files 设置为 8000。


如对本文有疑问,请提交到交流论坛,广大热心网友会为你解答!! 点击进入论坛

发表评论 (974人查看0条评论)
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
昵称:
最新评论
------分隔线----------------------------

快速入口

· 365软件
· 杰创官网
· 建站工具
· 网站大全

其它栏目

· 建站教程
· 365学习

业务咨询

· 技术支持
· 服务时间:9:00-18:00
365建站网二维码

Powered by 365建站网 RSS地图 HTML地图

copyright © 2013-2024 版权所有 鄂ICP备17013400号