我在PHP平台上有一个商店(糟糕的开发),其中存在大量错误查询(没有索引的长查询,按rand()排序,动态计数,...)
我现在无法更改查询,但我必须调整服务器才能保持活跃状态。
我尝试了所有我知道的东西,我有非常大的数据库,我通过更改MySQL引擎进行优化并调整它,但它是第一个项目,一切都在下降。
现状:
1。前端(PHP) - AWS m4.large实例,Amazon Linux(最新),启用了opcache的PHP 7.0(apache模块),在AWS Elasticache上使用外部Memcached启用mod_pagespeed(t2.micro,平均负载为5%)< / p>
2。 SQL - 在AWS c4.xlarge实例上使用TokuDB引擎的Percona DB(平均负载为50%)
我需要降低实例,主要是c4.xlarge,但是如果我切换到c4.large,几个小时后会出现大的过载。
数据库只有300MB的数据,我试过查询缓存,InnoDB,XtraDB,......没有成功,而且流量也很低。 PHP使用MySQLi扩展。
您是否知道任何可能的解决方案,如何在不重构查询的情况下降低负载?
答案 0 :(得分:0)
使用www.mysqlcalculator.com将是一种快速的方法,可以在不到2分钟的时间内检查大约十几种内存消耗因素。 如果您可以将它们发布以允许分析活动和配置请求,那么很乐意看到您的SHOW GLOBAL STATUS和SHOW GLOBAL VARIABLES。在繁忙的时间里,你的GENERAL_LOG 3分钟会很有趣,可以识别麻烦/耗时的SELECT等。