I have a problem with server overload on a Apache configuration 8gb of RAM 1and1.com Virtual Server. Server gets extremely slow once it reaches 100+ active users (according to google analytics) during pick time. I've done siege & loadimpact tests and made some configuration changes to the httpd.conf file but I don't know if it's enough. Maybe I just need more ram like 16GB or am I missing something? I know I can optimize programming but I don't see how it will improve performance drastically. Interesting fact is that parallels memory usage only displays 10-20% during this overload, but the website is so slow! Help!
Avg. site file size is 1.5MB (We have lots of pictures)
Avg. load time: 1.8s (during normal days) - 1,600 page views, 270 highest sessions p/h
This are the analytics stats of a very slow server day:
Highest sessions per hour: 420 - 700
Total sessions: 4,300 - 37,000
Page views: 25,300 - 361,500
Avg. Session duration: 9min
Server data provided by 1and1:
Webspace: 200GB
RAM: 8GB
Unlimited Traffic: yes
Operating System: CentOS 6 minimal system (64-bit)
cpu cores: 8
Processors: 4
Processor: AMD Opteron(tm) Processor 6378
Http.conf
Timeout 75
KeepAlive On
MaxKeepAliveRequests 500
KeepAliveTimeout 3
<IfModule prefork.c>
StartServers 8
MinSpareServers 5
MaxSpareServers 20
ServerLimit 220
MaxClients 220
MaxRequestsPerChild 5000
</IfModule>
my.conf
max_allowed_packet = 1G
max_connections = 500
max_user_connections = 500
thread_cache_size = 500
query_cache_type = 1
query_cache_size = 128M
sort_buffer_size = 2M
tmp_table_size = 32M
read_buffer_size = 128k
read_rnd_buffer_size = 256k
join_buffer_size = 128k
table_definition_cache = 400
table_open_cache = 400
key_buffer_size = 500M
max_heap_table_size = 64M
innodb_buffer_pool_size = 500M
innodb_additional_mem_pool_size = 20M
innodb_file_per_table = 1
innodb_flush_log_at_trx_commit = 2
innodb_log_buffer_size = 12M
innodb_log_file_size = 256M
Am I doing something wrong? I appreciate all the help!
Best Answer
The first thing you need to look at is to determine where your bottleneck is.
Generally speaking, these kinds of performance problems are going to be in the application as opposed to the web server configuration.
Once you understand your bottleneck, you may be able to alleviate it with the help of your web server software (exact methods depend on what application code you're running and how you're attaching it to your web server, but there's a lot of info out there on getting the most performance out of FastCGI or
mod_passenger
), but there's only going to be so much that you can do there.In summary: Don't start with the web server, start with tracking down your bottleneck and fixing it - if you find that there's anything you can do in your web server to help, then try that, but it's not likely to be able to fix a performance problem with your application.