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
Timeout 75 KeepAlive On MaxKeepAliveRequests 500 KeepAliveTimeout 3 <IfModule prefork.c> StartServers 8 MinSpareServers 5 MaxSpareServers 20 ServerLimit 220 MaxClients 220 MaxRequestsPerChild 5000 </IfModule>
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!