如何解決Linux中的記憶體問題

如何解決Linux中的記憶體問題

如何取得佔用 RAM 的進程的詳細資訊。從頂部指令我發現 Mysql 佔用了太多的 ram 我怎麼知道為什麼 Mysql 佔用了太多的 ram 遠離正常行為?

除了“之外,還有其他命令可以獲得進程的更多詳細資訊嗎?”附註

答案1

您可能想要SHOW PROCESSLIST在 MySQL 中執行以取得有關目前正在執行的查詢的資訊。

SHOW PROCESSLIST 的 MySQL 文檔

答案2

mytop - 用於監控即時 MySQL 伺服器效能的命令列實用程式。為了讓 mytop 正常運行,您必須具備以下條件:

  • Perl 5.005 或更新版本
  • Getopt::長
  • DBI 和 DBD::mysql
  • 術語::從 CPAN 讀取密鑰

以上,我是針對 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,以了解執行該查詢時發生的情況。有了這些知識,您就可以優化查詢以獲得更好的效能。

相關內容