>>>> I ran into an out of memory problem. The first mention of it in the >>>> kernel log is "mysqld invoked oom-killer". I haven't run into this >>>> before. I do have a swap partition but I don't activate it based on >>>> something I read previously that I later found out was wrong so I >>>> suppose I should activate it. Is fstab the way to do that? I have a >>>> commented line in there for swap. >> >> ... >>> >>> If you're running any other servers that utilize MySQL like Apache or >>> something, check its access logs to see if you had an abnormal number >>> of connections. Bruteforce hacking or some kind of flooding/DOS attack >>> might cause it to use more memory than it ordinarily would. >> >> I don't know why I didn't check the apache2 error log before, but I >> got the following entry 2 seconds before the server became >> unresponsive: >> >> [error] server reached MaxClients setting, consider raising the >> MaxClients setting >> >> I use the default 256 for MaxClients. This confirms the server was >> brought down by too many child processes consuming too much memory. >> Looking back at the access_log, it's clear this condition was caused >> by the single IP which requested one of my pages about 300 times over >> the course of 1 minute. This caused my entire server to lock up for >> hours until I rebooted it. >> >> I hesitate to reduce MaxClients from 256. I think my server should be >> able to handle it since it's the default. So I need to prevent my >> apache2 child processes from consuming so much memory? apache2 was >> restarted about an hour before the lockup so it had a pretty fresh >> start. I do use mod_perl which is a memory hog from what I >> understand. Do I just need more RAM? > > Most people do not think about this correctly. Can your server run > 10000 Apache processes? No, not enough resources. 1000? No, same problem. > 256? I'd say no based on this thread. If you're not going to set it at 10000 > why try to keep it at 256?
This is illuminating, thank you. I wonder why the default is set at 256 though. Do my apache2 processes use an unusual amount of memory at 25M-67M? Even at 25M each, you would need 6.4GB of memory for 256 processes. Is an apache2 restart the only thing that prevents apache2 processes from growing in memory usage indefinitely? - Grant > Next image a grocery store with 256 checkout lanes, but only four > cashiers. Four cashiers trying to run that many lanes is actually slower > than having only four lanes. However 32 lanes could faster than 4. People > can have their groceries setup, baggers aren't getting in the way, etc. The > analogy breaks down a bit, but you get the point. > > There is no performance gain in configuring for concurrency your > hardware and software can not support. > > kashani