我想找出每个mysql进程的内存开销。 现在,我有800多个MySQL连接,但我不知道系统何时开始交换。 我使用FreeBSD。
每个连接所消耗的内存量是可变的,具体取决于您正在运行的查询,结果集的大小以及月亮的相位。 你会想测量当前的内存使用情况,并且(假设这里有一堆)通过连接的当前平均内存使用量来推断出你可以得到多less连接。
这种方法的问题是内存可能不是你的限制因素 – 查询争用,磁盘IO,或任何可以杀死你开始交换之前。
使用mysqltunner.pl来显示你的报告
-------- Performance Metrics ----------------------------------------------- [--] Total buffers: 168.0M global + 2.8M per thread (10 max threads) [OK] Maximum reached memory usage: 179.0M (18.04% of installed RAM) [OK] Maximum possible memory usage: 195.5M (19.70% of installed RAM)
2.8M是我的每线程内存成本包括连接和195.5M是总成本
您可以很容易地从configurationvariables中确定每个连接到服务器的最大内存成本。
由于mysqld线程的方式,获得每个连接的实际内存使用情况是非常困难的。
另一个用于理解/configurationmysql如何使用内存的好工具是mysqlreport 。