I have 4 lambda functions which will be invoked at same time (by SNS), the frequence of SNS's event is 5 minutes.
Each function process the large mount of data and images(~300MB) so I store them on /tmp
folder (500MB limit).
At the beginning of function, I wrote some code to the clean up /tmp
folder, to make sure it's not out of memory (Because I've known that AWS lambda sometimes reuses previous container to improve performance).
I check it manually (create message and publish by SNS to 4 lambda functions), it worked fine.
But when it runs automatically (invoked each 5 minutes) the result is not as my expectation. The first execution is fine, but the next times after, 1 of 4 or even 4 lambda functions throw out the error related to "out of memory": "No space left on device", cannot load lib, ...
Previous, I use nodejs(4.3) it worked fine both case.
But I have to change to python for some reason, the main flow and the mount of created data is the same. But it's failed when run automatically.
I think that the issue came from the cache of previous container (reused container), I checked the /tmp
after clean (ls -alh /tmp
) there's no files but when check the storage (df /tmp
) it show that used is 77%.
Any suggestion to make clean /tmp
folder or work around solution is very appreciate. Thank!
Edited: Code I use to clean /tmp
folder:
from subprocess import call
...
call('rm -rf /tmp/*', shell=True)