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

windows程序日志报错如下:

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

a95cb9e3834ee7707d8d80711a52f8e1.png

详细错误XML如下:

487

2

0

0x80000000000000

8122

Application

WIN-3C32USMF062

Unable to reattach to base address

试图访问无效的地址。

解决方法

修改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 的配置要求

作者:Starland 日期:2015-07-28 19:47:50

字体大小: 小 中 大

从 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=1opcache.memory_consumption=128opcache.max_accelerated_files=4000opcache.revalidate_freq=60;Moodle 要求的设置opcache.use_cwd=1opcache.validate_timestamps=1opcache.save_comments=1opcache.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。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值