我使用 Windows Server 2008 上的 Web 平台安装程序安装了多个 drupal 7 站点。
到目前为止,它们都运行正常,没有任何问题,但最近内部服务器错误 500 开始出现(每隔很多请求就会出现一次),现在它发生在对任何 php 站点的所有请求上。
没有太多细节可讲,从它工作时到现在没有任何变化(好吧,无论如何我都不知道)
日志文件中充斥着如下消息:
[09-Aug-2011 09:08:04] PHP Fatal error: Allowed memory size of 262144 bytes exhausted (tried to allocate 261904 bytes) in Unknown on line 0
[09-Aug-2011 09:08:16] PHP Fatal error: Allowed memory size of 262144 bytes exhausted (tried to allocate 261904 bytes) in Unknown on line 0
[09-Aug-2011 09:08:16] PHP Fatal error: Allowed memory size of 262144 bytes exhausted (tried to allocate 261904 bytes) in Unknown on line 0
[09-Aug-2011 09:08:20] PHP Fatal error: Allowed memory size of 262144 bytes exhausted (tried to allocate 261904 bytes) in Unknown on line 0
[09-Aug-2011 09:08:22] PHP Fatal error: Allowed memory size of 262144 bytes exhausted (tried to allocate 261904 bytes) in Unknown on line 0
[09-Aug-2011 09:08:51] PHP Fatal error: Allowed memory size of 262144 bytes exhausted (tried to allocate 261904 bytes) in Unknown on line 0
[09-Aug-2011 09:09:56] PHP Fatal error: Allowed memory size of 262144 bytes exhausted (tried to allocate 261904 bytes) in Unknown on line 0
[09-Aug-2011 09:09:57] PHP Fatal error: Allowed memory size of 262144 bytes exhausted (tried to allocate 261904 bytes) in Unknown on line 0
[09-Aug-2011 09:12:13] PHP Fatal error: Allowed memory size of 262144 bytes exhausted (tried to allocate 261904 bytes) in Unknown on line 0
[09-Aug-2011 09:15:09] PHP Fatal error: Allowed memory size of 262144 bytes exhausted (tried to allocate 261904 bytes) in Unknown on line 0
[09-Aug-2011 09:15:09] PHP Fatal error: Allowed memory size of 262144 bytes exhausted (tried to allocate 261904 bytes) in Unknown on line 0
[09-Aug-2011 09:21:28] PHP Fatal error: Allowed memory size of 262144 bytes exhausted (tried to allocate 261904 bytes) in Unknown on line 0
[09-Aug-2011 09:21:28] PHP Fatal error: Allowed memory size of 262144 bytes exhausted (tried to allocate 261904 bytes) in Unknown on line 0
我曾尝试增加 php.ini 中的内存限制,如下所示:
memory_limit = 512MB
但这似乎也不能解决问题。
这是在 IIS 中的全局 php 配置中,当我逐个查看站点时,我注意到 PHP 似乎已被禁用。
PHP 未启用。注册新 PHP 版本以通过 FastCGI 启用 PHP
于是我尝试再次注册 php 版本
C:\Program Files\PHP\v5.3\php-cgi.exe
但当我尝试应用更改时,我得到了
执行此操作时出错详细信息:由于对象的当前状态,操作无效
除此之外似乎没有其他信息。我不知道为什么突然间 php 不再适用于网站。
PS:我已经重新启动了 IIS、服务器等...此服务器托管在 amazon S3 上,因此我为服务器提供了更多功能
更新 这似乎是两个不同的问题
- 我使用了 memory_limit=128MB 而不是 memory_limit=128M,
请注意“M”而不是“MB” - 128M 的 memory_limit 不够,必须将其增加到 512M
第一个问题导致每个请求都出现内部服务器错误。
增加到 512MB 似乎暂时解决了问题,但过了一段时间,服务器错误又回来了。请注意,IIS 中的 PHP 管理器仍然显示网站没有可用的 PHP(全局配置确实将其视为可用)
所以问题仍然没有解决
答案1
答案2
全新安装的 Drupal 不会占用太多内存。最繁忙的页面是“/modules”。如果任何其他页面占用更多内存,则意味着网站添加了缓慢/糟糕/错误的代码。这可能是第三方模块或缓慢的 SQL 查询。
尝试这个:
- 转到 PHP 状态页面 (admin/reports/status/php) 并在那里检查内存限制。
- 还可以在 settings.php 文件和 .htaccess 文件中设置内存限制。检查这些文件。
- 安装 devel 模块。启用显示慢速 sql 查询并对其进行分析。一旦发现有问题的模块,只需将其禁用并再次检查内存使用情况和 sql 查询。