Apache will spawn multiple processes, that is normal.
You can control this in the apache configuration. The settings are dependent on what type of MPM (Multi-Processing Module) you are using.
If you are using Apache MPM worker (http://httpd.apache.org/docs/2.0/mod/worker.html) you can control it with the following settings:
ServerLimit 16 How many processes thats allowed at one time (this has to be greater or equal to MaxClients/ThreadsPerChild)
StartServers 2 How many processes to start when you start up apache
MaxClients 150 How many request you can simultaneously serve
MinSpareThreads 25 Apache will try to keep at least this many threads idle
MaxSpareThreads 75 Apache will try to keep less then this many threads idle
ThreadsPerChild 25 How many threads per process (one thread can server one request at the time)
So if you do not have enough memory to run all those processes try to lower MaxClients and ServerLimit.
If you are using Apache MPM prefork (http://httpd.apache.org/docs/2.0/mod/prefork.html) you can control it with the following settings:
StartServers 20
How many processes to spawn when you start up apache
MinSpareServers 10
Apache will auto adjust to keep atleast this many idle processes running
MaxSpareServers 20
Apache will auto adjust to keep less then this many idle processes
ServerLimit 150
This should be equal to MaxClient for prefork MPM
MaxClients 150
This is the maximum number of processes that apache will spawn
MaxRequestsPerChild 10000
How many request the process will handle before it gets terminated.
MaxRequestsPerChild needs some more explanation, say you have alot of diffrent PHP-scripts running and one or two of these uses alot more memory then the rest. Once one processes has run that particular script the process will stay at that memory usage until it dies. With this option you can set how often you want the processes to restart.
So how do you know what to tune these values too?
First, figure out how much free memory you have when apache is not running.
Secondly, figure out how much memory each httpd process requiers on avarage. (looks like somehwere around 15Mb from your top)
So if you have 150Mb free when apache is not running, you should limit apache to only spawn 150/15 = 10 processes.
So if you run MPM worker this might work:
ServerLimit 10
StartServers 2
MaxClients 150
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
And if you are running MPM prefork this might work better:
StartServers 5
MinSpareServers 2
MaxSpareServers 8
ServerLimit 10
MaxClients 10
MaxRequestsPerChild 1000