当运行脚本来筛选废弃的网页时,我得到的是“zend_mm_heap corrupted”。请告诉我,如何解决这个问题。

最佳答案

我假设你正在使用Apache W/MODYPHP来回答这个问题。
当apache产生太多实例耗尽所有ram时,我得到了这个错误,然后尝试使用磁盘交换,然后响应会一直减慢,直到它最终崩溃,然后它会segfault。重新启动Apache服务将使一切恢复,直到几分钟或几小时后再次沸腾。
这篇文章对我的处境有帮助:
https://servercheck.in/blog/3-small-tweaks-make-apache-fly
基本上,看看每个Apache进程正在使用多少(可能是服务器上的HTTPD或NGNIX):

ps aux | grep 'apache' | awk '{print $6/1024 " MB";}'

查找每个进程的平均MB使用量,在我的实例中,每个进程的平均MB使用量约为40MB。
接下来找出你有多少可用的内存给你的Apache。我的服务器为apache提供了大约3.8gb的ram。所以我用3800 MB除以40 MB,得到95。所以我把maxclients设置为95。到目前为止,我还没有看到Apache在我的服务器上脱离控制,因为我已经实现了这些更改。当它是150,它曾经崩溃8小时左右,当它在250,它是每半小时下来。
<IfModule mpm_prefork_module>
    StartServers          5
    MinSpareServers       5
    MaxSpareServers      10
    MaxClients           95
    MaxRequestsPerChild 100
</IfModule>

正如其他人所建议的,我曾尝试输出输出缓冲从4K,一直到128K,在错误方面没有太大的改进。如果没有运行的进程,也尝试关闭“超时”参数。在我的网络中,任何事情都不需要花费几秒钟的时间来处理和传递。300的high(imho)默认值被减少到15秒,这也有助于解决任何停滞的实例。
在此之前,我会看到负载接近130左右,系统应该没有反应,但其他一切都很好。您的问题可能是您的apache mod_php设置对您的服务器来说过于激进。
希望这有帮助!

关于php - 为什么运行脚本以屏幕抓取网页的方式显示“zend_mm_heap损坏”?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22762143/

10-16 20:34