正如通常对编码人员所做的那样,我不得不接pipe别人的这个公司的代码,服务器运行在运行ubuntu-saucy-13.10-amd64-server的Amazon Cloud(i2.xlarge)上。 (剩下的那个人)
服务器有700GB固态硬盘和30GB内存,但我的问题是以前的开发人员在编写SQL语句,以及我看到的PHP脚本有很长和不必要的循环糟糕。
我想到看PostgreSQL日志,但是我仍然需要匹配查询到PHP页面(漫长而痛苦的过程)。
有没有一种方法可以告诉哪个PHP页面对资源pipe理器的服务器造成了“最大的损害”,所以我可以先开始replace最差的那个?
任何帮助非常感谢,我一直在这一段时间。
首先要做的事情
显然使用debugging器是一个很好的接触。
更重要的是要设置testing的生产副本,以便您可以在其中进行游戏。 如果在副本上这些问题没有得到遵守,那么问题在于数据库configuration – 内存使用情况,索引,查询caching等。
如果您正在运行PHP-FPM,则可以启用慢日志 。 将request_slowlog_timeout设置为您认为“慢”的秒数,并确保slowlog的值指向您可以写入的某个位置。
如果你有(或可以安装)(XHProf)[ http://pecl.php.net/package/xhprof%5D,那么你可以从它得到丰富的分析信息。 这是一个非常轻量级的分析器,我在非常繁忙的网站上运行它,没有不良影响。
如果你没有运行PHP-FPM,你不能(或者不愿意)安装XHProf, 并且如果你确信数据库查询有问题,那么我的方法就是从PostgreSQL缓慢的日志开始。 如果你可以find最慢的查询,那么赔率是一个快速的grep将find他们属于哪个页面。 这并不理想,但总比没有好。