From: Tejaswi Nadahalli
> I am running my Python origin-server on the same machine. It seems like 
> the Python interpreter caused the OOM killer to kill Varnish. If that's 
> the case, is there anything I can do prevent this from happening?


I've been meaning to write-up a blog entry regarding the OOM killer in Linux 
(what a dumb idea) but in the mean time this should get you started.

The OOM Killer is there because Linux, by default in most distros, allocates 
more memory than available (swap+ram) on the assumption that applications will 
never need it (this is called overcommiting).  Mostly this is true but when 
it's not the oom_kill is called to free-up some memory so the kernel can keep 
its promise.  Usually it does a shit job (as you just noticed) and I hate it so 
much.

One way to solve this is to tweak oom_kill so it doesn't kill varnish 
processes.  It's a bit cumbersome because you need to do that based on the PID, 
which you only learn after the process has started, leaving room for some nifty 
race conditions.  Still, adding these to Varnish's init scripts should do what 
you need - look up online for details.

The other way is to disable memory overcommit.  Add to /etc/sysctl.conf:

# Disables memory overcommit
vm.overcommit_memory = 2
# Tweak to fool VM (read manual for setting above)
vm.overcommit_ratio = 100
# swap only if really needed
vm.swappiness = 10

and sudo /sbin/sysctl -e -p /etc/sysctl.conf

The problem with setting overcommit_memory to 2 is that the VM will not 
allocate more memory than you have available (the actual rule is a function of 
RAM, swap and overcommit_ratio, hence the tweak above).

This could be a problem for Varnish depending on the storage used.  The file 
storage will mmap the file, resulting in a VM size as large as the file.  If 
you don't have enough RAM the kernel will deny memory allocation and varnish 
will fail to start.  At this point you either buy more RAM or tweak your swap 
size to account for greedy processes (ie.: processes that allocate a lot of 
memory but never use it).


TL;DR: buy more memory; get rid of memory hungry scripts in your varnish box


Good luck.


______________________________________________________
    CONFIDENTIALITY NOTICE    
This electronic mail message, including any and/or all attachments, is for the 
sole use of the intended recipient(s), and may contain confidential and/or 
privileged information, pertaining to business conducted under the direction 
and supervision of the sending organization. All electronic mail messages, 
which may have been established as expressed views and/or opinions (stated 
either within the electronic mail message or any of its attachments), are left 
to the sole responsibility of that of the sender, and are not necessarily 
attributed to the sending organization. Unauthorized interception, review, use, 
disclosure or distribution of any such information contained within this 
electronic mail message and/or its attachment(s), is (are) strictly prohibited. 
If you are not the intended recipient, please contact the sender by replying to 
this electronic mail message, along with the destruction all copies of the 
original electronic mail message (along with any attachments).
______________________________________________________

_______________________________________________
varnish-misc mailing list
[email protected]
http://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc

Reply via email to