I set up a site on amazon ec2 free tier, which comes with 613MB memory with no swap. I see server uses almost 100% of memory all the time. My site is running wordpress with wp super disk cache turned on. and the site is not busy, about 300ip per day. Can anyone tell this is normal, or something goes wrong? Thanks!

free -m
             total       used       free     shared    buffers     cached
Mem:           596        589          7          0          0         14
-/+ buffers/cache:        574         22
Swap:            0          0          0

ps aux | grep "apache"
apache   10120  0.2  5.1 287908 31732 ?        S    10:41   0:19 /usr/sbin/httpd
apache   10122  0.2  4.9 288448 30504 ?        S    10:41   0:22 /usr/sbin/httpd
apache   10123  0.2  4.8 288380 29676 ?        S    10:41   0:20 /usr/sbin/httpd
apache   10124  0.2  5.1 287616 31708 ?        S    10:41   0:21 /usr/sbin/httpd
apache   10125  0.2  4.6 287428 28704 ?        S    10:41   0:20 /usr/sbin/httpd
apache   10126  0.2  5.2 288376 32372 ?        S    10:41   0:22 /usr/sbin/httpd
apache   10127  0.2  4.6 284028 28164 ?        S    10:41   0:21 /usr/sbin/httpd
apache   10207  0.2  5.3 288452 32396 ?        S    10:49   0:19 /usr/sbin/httpd
apache   10224  0.2  4.3 284520 26496 ?        S    10:50   0:19 /usr/sbin/httpd
apache   10226  0.2  5.1 287872 31640 ?        S    10:50   0:20 /usr/sbin/httpd
apache   10376  0.2  5.0 288340 30856 ?        S    11:03   0:16 /usr/sbin/httpd
apache   10453  0.2  5.2 288416 32384 ?        S    11:10   0:16 /usr/sbin/httpd
apache   10455  0.1  5.2 288124 32252 ?        S    11:10   0:15 /usr/sbin/httpd
apache   10457  0.2  4.8 288380 29676 ?        S    11:10   0:15 /usr/sbin/httpd
apache   10459  0.1  5.2 288636 32224 ?        S    11:10   0:14 /usr/sbin/httpd
apache   12106  0.2  4.8 288384 29536 ?        S    13:07   0:01 /usr/sbin/httpd
apache   12107  0.2  4.8 288380 29480 ?        S    13:07   0:02 /usr/sbin/httpd
apache   12110  0.2  4.8 288380 29496 ?        S    13:07   0:01 /usr/sbin/httpd

It probably wouldn't hurt to create a file system swap.

#!/bin/bash -e

# Set default variable values
: ${SWAP_SIZE_MEGABYTES:=1024}
: ${SWAP_FILE_LOCATION:=/var/swap.space}

if (( $SWAP_SIZE_MEGABYTES <= 0 )); then
    echo 'No swap size provided, exiting.'
    exit 1
elif [ -e "$SWAP_FILE_LOCATION" ]; then
    echo "$SWAP_FILE_LOCATION" already exists,  skipping.  
fi

if ! swapon -s | grep -qF "$SWAP_FILE_LOCATION"; then
    echo Creating "$SWAP_FILE_LOCATION", "$SWAP_SIZE_MEGABYTES"MB.
    dd if=/dev/zero of="$SWAP_FILE_LOCATION" bs=1024 count=$(($SWAP_SIZE_MEGABYTES*1024))
    mkswap "$SWAP_FILE_LOCATION"    
    swapon "$SWAP_FILE_LOCATION"
    echo 'Swap status:'
    swapon -s
else
    echo Swap "$SWAP_FILE_LOCATION" file already on.
fi

echo 'Done.' 

Source


Edit your /etc/apache/apache.conf file and set your MaxClients to 30. Keep an eye on your apache error log to see if you run out of clients and if so increase your MaxClients by 5. After you no longer receive errors add another 5 just to provide a little headroom.

You could also check your /etc/php5/apache/php.ini for the memory_limit setting. For just WordPress you could probably get away with 64MB for that setting. If you are running any graphics manipulation (e.g. thumbnail generators, etc) then you will need to bump that up to possibly 96MB.

If you are also running MySQL on that server you should check to see if you could reduce some of your key index sizes or other memory eating settings.