docker显示没有SQLite数据库的内存版本

我正在检查SQLite操作消耗的内存量(主要是插入)。

我在Docker容器上运行我的程序,并用docker stats <container id>检查内存使用情况。 我观察到一个奇怪的行为,只有内存使用量增长,操作完成后才能恢复正常。

这里是代码片段:

 conn = sqlite3.connect(app.config['DATABASE']) cur = conn.cursor() cur.execute('insert into users (uid, full_name, email, username, job_title) values (?,?,?,?,?)', [user_cn, user_full_name, user_email, user_uname, user_jobtitle]) conn.commit() conn.close() 

它只是一个代码片段(我把大部分代码截掉了),这个过程发生了几千次(每次插入提交,最后closures一次)。

正如我所说,我只观察到stats上内存使用量的增加,我观察到的另一件事是top不显示任何内存活动(保持0.1%)。

在我的研究中,我试着在linux上运行一些虚拟操作:

 for i in {1..100000}; do echo "aaaaaaaaaaaaaaaaaaa" >> woot.data; done 

我观察到相同的行为,所以我想这不是SQLite的问题,但我仍然包括它,因为它的我的用例,也许它的configuration/连接密切相关的东西。

任何意见解决这个奥秘将不胜感激!

编辑:docker的版本是: Docker version 1.5.0, build a8a31ef/1.5.0

这可以取决于你的实际主机和docker版本。

例如:

  • 使用docker 1.11-rc4,会报告内存泄漏( 问题21837 )
  • 在Mac上,docker 1.11.0rc3包含一个不显示统计信息内存限制的问题 ( 问题21848 )