php高内存问题

标签 php memory

这是我的网络应用程序的堆栈。简单的 nginx + php-fpm + php5.3 + mysql + memcache。最近我们部署了一些重构代码。其中涉及到 SQL 重构和缓存调整。我们发现部署后,服务器负载急剧增长。内存使用量攀升得更快。从顶部命令来看,许多 php-fpm 进程使用的内存是以前的 2 倍。所以是的,部署的代码有问题。该问题仅发生在生产环境中,在测试和开发环境中一切都很好,因此它与流量相关。

我的问题通常是如何找出哪些请求(脚本)或我的代码的哪些部分消耗了太多内存?找出最简单的方法是什么?

非常感谢。

最佳答案

创建一个包含文件来记录程序退出时的内存使用情况,然后使用自动前置映射它。如果这是 apache,那么将其写入 stderr 是安全的,它会出现在 error_log 中 - 不确定这是否适用于 nginx:

<?php
 function logit()
 {
    $line = $_SERVER['REQUEST_URI'] 
       . ' ' . memory_get_peak_usage(true);
    // if stderr works...
    $stderr = fopen('php://stderr', 'w');
    fputs(stderr, date('r') . ' ' . $line);
    fclose($stderr);
    // alternatively
    openlog("php_memory", LOG_PID | LOG_PERROR, LOG_LOCAL0);
    syslog(LOG_INFO, $line); 
    closelog();
 }
 register_shutdown_function('logit');

关于php高内存问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6276986/

相关文章:

php - 使用惰性 php 插件 wordpress 时出错

php - Echo 不显示在 div 内部但在其外部工作

javascript - 根据地址获取经纬度

python - 将文件映射到内存

Java - 在运行时检测内存交换

javascript - 页面加载后PHP可以运行吗?

php - SWF 上传 : Returning errors

c# - 为什么拆箱比装箱快 100 倍

c++ - 在内存池中查找下一个可用 block

C 理解指针数组的问题