如何获取占用 RAM 的进程的详细信息。来自顶部命令我发现 Mysql 占用了太多内存,我怎么知道为什么 Mysql 占用了太多内存,这与通常的行为相差甚远?
除了“之外,还有其他命令可以获取有关该过程的更多详细信息吗?”附言“
答案1
您可能希望SHOW PROCESSLIST
在 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,以了解执行该查询时发生的情况。有了这些知识,您就可以优化查询以获得更好的性能。