如何解决 Linux 中的内存问题

如何解决 Linux 中的内存问题

如何获取占用 RAM 的进程的详细信息。来自顶部命令我发现 Mysql 占用了太多内存,我怎么知道为什么 Mysql 占用了太多内存,这与通常的行为相差甚远?

除了“之外,还有其他命令可以获取有关该过程的更多详细信息吗?”附言

答案1

您可能希望SHOW PROCESSLIST在 MySQL 中运行以获取有关当前正在运行的查询的信息。

显示进程列表的 MySQL 文档

答案2

mytop - 用于监控实时 MySQL 服务器性能的命令行实用程序。为了使 mytop 正常运行,您必须具备以下条件:

  • Perl 5.005 或更新版本
  • 获取opt::长整型
  • DBI 和 DBD::mysql
  • CPAN 中的 Term::ReadKey

以上内容我已经针对 Linux 发行版进行了指定。

答案3

这听起来好像 MySQL 在处理未优化的查询时必须创建大型内存临时表。

如果未启用,请通过将以下内容添加到 my.cnf 文件来启用慢查询日志:

log_slow_queries   = /var/log/mysql/mysql-slow.log
long_query_time    = 2
log-queries-not-using-indexes

然后查看 /var/log/mysql/mysql-slow.log 文件。您应该对文件中列出的每个查询运行 EXPLAIN,以了解执行该查询时发生的情况。有了这些知识,您就可以优化查询以获得更好的性能。

相关内容