最近,我们的服务器面临内存问题。从几周前开始,我们的服务器加载非常缓慢。访问电子邮件和网站确实花费了太长时间。然后我们要求服务器技术支持为我们重新启动服务器。重启后,一切恢复正常。我们认为是时候升级 RAM 了。最初我们的服务器上只有 2GB RAM,因此我们将其升级为 8GB。
我们以为问题解决了。但是,升级RAM后,内存使用率越来越高。它就像总是达到其最大使用量(例如 7.8 GB 内存中有 456.5 MB 可用)。第二天,服务器完全宕机,我们不得不请求技术支持再次为我们重新启动服务器。每次遇到问题,都得请支持人员帮我们重启服务器。据支持人员介绍,如果他们的 SQL 访问,内存将恢复正常。但如果他们再上一次,内存会再次变高。因此,他们怀疑问题出在 SQL 查询上。
我想问一下,真的是SQL查询出问题吗?或者是硬件问题?如果是SQL,我怎么知道什么样的查询占用了这么大的内存?我该如何检查?我们的服务器正在运行以下详细信息:
OS: Linux 2.6.18
CPU: GenuineIntel, Intel(R)Xeon(R)CPU W3550 @ 3.07GHz
Average Load: 808.18;674.21;587.18
database records: 421,031 with 58 tables
Run Code Online (Sandbox Code Playgroud)
我可以从 PHPMyAdmin 提供的查询统计信息:
select 314 k 11.98 k 66.37%
set option 34 k 1,296.59 7.18%
show fields 19 k 712.00 3.94%
update 16 k 620.61 3.44%
alter table 16 k 610.32 3.38%
change db 15 k 569.08 3.15%
insert 15 k 560.20 3.10%
show …Run Code Online (Sandbox Code Playgroud)