我在问题中特别提到了rails,因为它看起来与应用程序有些相关。在制作中,我们没有指定wait_timeout
参数(不要因此而杀了我,我只是想通了),并且这些日子正在进行一些繁重的操作。我看到我们的生产RDS定期下降10 MB左右。尽管Freeable内存非常高但最终它很快就会降下来。在运行show full processlist;
时,我看到许多处于睡眠状态的查询,其时间字段显示的值高达7到10天。
这是正常的吗?如果服务器进程正在运行,可能会使用相同的连接,但仍然如此高的价值?这些值是否仅在下次部署时(或重新启动服务时)消失?
还有一些方法可以在rails应用程序级别上修复此问题吗?即使mysql全局等待超时值是8小时,这可能是线程在过去7到10天内处于睡眠状态?
2个月前发生了一些非常繁重的查询,因此我们看到大约1 GB的急剧下降。没有数据库重启,可以恢复该内存吗?可以重新启动应用程序(部分)。