php高记忆问题

Sha*_*awn 7 php memory

这是我的网络应用程序的堆栈.只需nginx + php-fpm + php5.3 + mysql + memcache.最近我们部署了一些重构代码.其中涉及SQL重构和缓存调整.我们发现在部署之后,服务器负载急剧增长.内存使用率甚至更高.从顶部命令开始,许多php-fpm进程使用的内存比以前多2倍.所以是的,部署的代码有问题.这个问题只发生在生产环境中,在测试和开发中它一切都很好,所以它与流量相关.

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

非常感谢.

sym*_*ean 1

创建一个包含文件来记录程序退出时的内存使用情况,然后使用自动前置进行映射。如果这是 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');
Run Code Online (Sandbox Code Playgroud)