Apache / PHP / Win内存问题,两个不同的系统+代码。同样的问题

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (279)

我几个月来一直在和这个问题作斗争。我有两个不同的系统,每个系统都有不同的设置和PHP代码,但两者都有完全相同的问题。

我的服务器将抛出500错误,日志将填充内存分配问题,直到重新启动Apache。

系统ONE

操作系统:Windows Server 2008

XAMPP:PHP 7.1.9 / Apache 2.4.27

代码库:一个小型的laravel网站没什么特别的

系统二

操作系统:Windows服务器2016

XAMPP:PHP 7.2.3.0 / Apache 2.4.29

Codebase:一些长时间运行的php进程,大约2分钟。

Apache错误

VirtualFree()失败:[0x000001e7]尝试访问无效地址。VirtualAlloc()失败:[0x00000008]没有足够的存储空间可用于处理此命令。VirtualFree()失败:[0x000001e7]尝试访问无效地址。

PHP错误

[星期一5月21日09:27:42.078308 2018] [php7:错误] [pid 10236:tid 12736] [客户端43.245.8.13:1553] PHP致命错误:内存不足(已分配2097152)(试图分配6626884字节)第141行的C:\ xampp \ htdocs \ * \ vendor \ doctrine \ dbal \ lib \ Doctrine \ DBAL \ Driver \ PDOStatement.php,referer:http//m.facebook.com/

[星期一5月21日09:28:12.703338 2018] [php7:错误] [pid 10236:tid 12736] [客户端122.170.190.70:63513] PHP致命错误:内存不足(分配73400320)(试图分配4096字节)第294行的C:\ xampp \ htdocs \ * \ vendor \ laravel \ framework \ src \ Illuminate \ Database \ Eloquent \ Model.php

[星期一5月21日09:28:14.640812 2018] [php7:错误] [pid 10236:tid 12736] [客户端122.170.190.70:63529] PHP致命错误:内存不足(分配37748736)(试图分配4096字节)第294行的C:\ xampp \ htdocs \ * \ vendor \ laravel \ framework \ src \ Illuminate \ Database \ Eloquent \ Model.php

[星期一5月21日09:28:19.218972 2018] [php7:错误] [pid 10236:tid 12736] [客户端157.49.220.122:64984] PHP致命错误:内存不足(分配20971520)(试图分配4096字节)第161行的C:\ xampp \ htdocs \ * \ vendor \ laravel \ framework \ src \ Illuminate \ Database \ Eloquent \ Concerns \ HasEvents.php,referer:https//www.facebook.com/

[星期一5月21日09:28:27.125182 2018] [php7:错误] [pid 10236:tid 12704] [客户端150.143.104.159:12178] PHP致命错误:内存不足(分配12582912)(试图分配131072字节)第141行的C:\ xampp \ htdocs \ * \ vendor \ doctrine \ dbal \ lib \ Doctrine \ DBAL \ Driver \ PDOStatement.php

[星期一5月21日09:28:27.125182 2018] [php7:错误] [pid 10236:tid 12704] [客户端150.143.104.159:12178] PHP致命错误:内存不足(分配12582912)(试图分配32768字节)第451行的C:\ xampp \ htdocs \ * \ vendor \ laravel \ framework \ src \ Illuminate \ Foundation \ Exceptions \ Handler.php

[星期一5月21日09:28:27.125182 2018] [php7:错误] [pid 10236:tid 12704] [客户端150.143.104.159:12178] PHP致命错误:内存不足(分配12582912)(试图分配20480字节)第0行未知

什么触发了错误

这些错误似乎是随机发生的,但在Apache重新启动后不会立即发生。然而,好像它的占用内存,我在服务器上有6GB的8GB空闲。

到目前为止我尝试过的

各种php.ini内存调整,例如memory_limit=1200M脚本调整 ini_set('memory_limit', -1);

Apache配置调整

ThreadStackSize        56*1024*1024
ThreadsPerChild        150
MaxConnectionsPerChild   0
RLimitMEM 99999999999 99999999999999

但是,重启后我注意到了

AH00118: RLimitMEM not supported on this platform

我已经看到这些错误分散在互联网上,似乎没有人为他们找到解决方案。我在Windows上需要PHP,我开始认为我应该尝试IIS。

是否有关于Apache配置的其他建议或我还能尝试什么?

提问于
用户回答回答于

我遇到了同样的问题。这有什么解决方案吗?

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动