LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Linux - Server (http://www.linuxquestions.org/questions/linux-server-73/)
-   -   Memory problem (http://www.linuxquestions.org/questions/linux-server-73/memory-problem-883019/)

JackJermey 05-27-2011 07:59 AM

Memory problem
 
Hi All,
I've installed monit on my server I'm getting following messages quite often, about 10-20/day.

monit alert -- Resource limit matched apache

Resource limit matched Service apache

Date: Fri, 27 May 2011 12:15:41 +0100
Action: alert
Host:
Description: total mem amount of 476168kB matches resource limit [total mem amount>358401kB]

Your faithful employee,
Monit


Memory usage
# free -m
total used free shared buffers cached
Mem: 1997 1905 91 0 67 1233
-/+ buffers/cache: 604 1393
Swap: 1027 158 868



# vmstat
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 161920 160672 65104 1202396 4 2 509 82 2 8 8 3 77 12 0

Server Settings
Timeout 30
TraceEnable On
ServerSignature Off
ServerTokens Full
FileETag All
StartServers 10
<IfModule prefork.c>
MinSpareServers 5
MaxSpareServers 15
</IfModule>

MaxClients 150
MaxRequestsPerChild 10000
KeepAlive On
KeepAliveTimeout 2
MaxKeepAliveRequests 100

Any clue what to look for more and how to solve this memory exhaustion issue?

business_kid 05-27-2011 12:40 PM

Is that only 2 Gigs? On a Server? Solve that by adding 8 or 10 gigs.
The bottom line tells you it's using swap. Heaven help you if it got busy.
It should read 1027 0 1027 (i.e. 0 used and all free)
You should have equal swap as ram, or more to cater for business.

JackJermey 05-27-2011 12:52 PM

It's 4 gigs, dedicated server. Total not more than 100k visitors a day, But around 100 of Wordpress blog.
Can add more RAM, provider doesn't allow.
So making Swap file 4gig would help?

Any other recommendations with server settings?

johnsfine 05-27-2011 01:04 PM

Quote:

Originally Posted by JackJermey (Post 4368813)
It's 4 gigs, dedicated server.

Then you need to figure out why the output you posted says it is only a 2GB server.

Also, I don't know anything about monit, so consider this next comment only for what it's worth: Why is the trigger for that message set so low? If apache is the primary service you are running, there should be nothing wrong with its using half a GB of your 2GB of ram, plus it is responsible for some unmonitored portion of the 1.2GB of cache use. That all looks OK even in a 2GB server.

Quote:

Originally Posted by business_kid (Post 4368804)
The bottom line tells you it's using swap. Heaven help you if it got busy.
It should read 1027 0 1027 (i.e. 0 used and all free)
You should have equal swap as ram, or more to cater for business.

I don't think a server using swap is necessarily bad or unexpected. If the swap stats were 0 used and 1027 free, that would be OK. But that should not be viewed as a goal.

However, swap being used at all should be a reason to rethink whether you have enough swap. Forget any rule you may have heard about swap size relative to ram size. All those rules are useless.

You want a significant margin of error on swap size for a server. If none were ever used, 1GB as both the total and the margin of error should be OK. As soon as even a little swap is used, I think that indicates a 2GB margin of error is more appropriate. Next time you adjust swap size, set it at least 2GB bigger than the most you've ever seen used (so if all you ever saw was that one output from free 2048+158 = 2206MB or more as your new swap size).

With a 2GB or more margin for error, you don't need to regularly check it to see if you really needed even more. But if you happen to notice some time in the future that significantly less than 2GB of swap is free, you might increase swap again or rethink whether physical ram is sufficient. It looks to me like your use is actually OK in just 2GB of physical ram. It doesn't matter much that 158MB of swap is used, and increasing swap to 2206MB or more would be wise but isn't even urgent.

Note that a small use of swap is not an indication of memory pressure. If a normal load on your 2GB system used 158MB of swap, a naive understanding of swap use would project double that load to use 2316MB of swap (double the 2000MB+158MB memory load and add no physical ram so all the new load lands in swap). But in reality, if you doubled the memory load, your 158MB swap use would likely remain just 158MB. That whole incremental memory load would likely come out of cache, rather than go into swap. The 158MB isn't the beginning of something bigger. It is likely an ordinary very contained effect independent of any memory pressure. The extra 2GB of swap I recommend is there in case of real memory pressure. But I don't expect real memory pressure. It is pure safety margin.

JackJermey 06-02-2011 11:12 AM

I just checked it and it is 2GB.

And server crashed today. It is becoming pain now.

business_kid 06-03-2011 04:51 AM

See previous posts and add resources. I don't doubt the experience behind Johnsfine's comments, but if you head into swap on load, you slow your box with less efficient memory when it is at it's busiest.

Running out of swap doesn't crash a box, btw. I managed that once, and what happened was that the kernel killed off the offending compile (It was pulling some massive executable together with ld)

JackJermey 06-03-2011 05:14 AM

Quote:

Originally Posted by business_kid (Post 4374866)
See previous posts and add resources. I don't doubt the experience behind Johnsfine's comments, but if you head into swap on load, you slow your box with less efficient memory when it is at it's busiest.

Running out of swap doesn't crash a box, btw. I managed that once, and what happened was that the kernel killed off the offending compile (It was pulling some massive executable together with ld)

Yes I'm already getting a brand new powerful server. I had close look at the logs and found that there are too many connections (http) when server either overloads or crashes.

Also quite often when I get burst of traffic from social media (around lets say 100s of http request in 1-3 secs) it overloads.

Other experts suggest to go for other webservers and not Apache.


All times are GMT -5. The time now is 11:12 PM.