Назад | Перейти на главную страницу

Сервер Apache CentOS очень медленный! Неправильная конфигурация?

У меня проблема с перегрузкой сервера на виртуальном сервере Apache с 8 ГБ ОЗУ 1and1.com. Сервер становится очень медленным, когда он достигает 100+ активных пользователей (согласно аналитике Google) во время выбора. Я провел тесты siege & loadimpact и внес некоторые изменения в конфигурацию файла httpd.conf, но не знаю, достаточно ли этого. Может мне просто нужно больше оперативной памяти типа 16GB или мне что-то не хватает? Я знаю, что могу оптимизировать программирование, но не вижу, как это значительно повысит производительность. Интересный факт: использование памяти Parallels во время этой перегрузки отображает только 10-20%, но сайт такой медленный! Помогите!

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

Это аналитическая статистика очень медленного серверного дня:

Highest sessions per hour: 420 - 700
Total sessions: 4,300 - 37,000
Page views: 25,300 - 361,500
Avg. Session duration: 9min

Данные сервера предоставлены 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 

Я делаю что-то неправильно? Я ценю всю помощь!

Первое, на что вам нужно обратить внимание, - это определить, где находится ваше узкое место.

  • Привязан ли ЦП к системе, или ЦП доступен, но процессы веб-приложения не используют его эффективно (т. Е. Недостаточно рабочих потоков)?
  • В системе не хватает оперативной памяти или выполняется частая подкачка?
  • Вы узкое место в своей базе данных? У вас медленные запросы, нужны индексы или возникают проблемы с блокировкой?
  • Наблюдайте за временем до первого байта для запроса приложения и сравните его с запросом статического ресурса с веб-сервера, который не затрагивает код вашего приложения - это покажет вам, насколько быстро ваше приложение обрабатывает запрос.

Вообще говоря, такого рода проблемы с производительностью будут в приложении, а не в конфигурации веб-сервера.

Как только вы поймете свое узкое место, вы сможете облегчить его с помощью программного обеспечения вашего веб-сервера (точные методы зависят от того, какой код приложения вы используете и как вы подключаете его к своему веб-серверу, но есть много информация о том, как добиться максимальной производительности от FastCGI или mod_passenger), но там вы сможете только так много сделать.

Подводя итог: не начинайте с веб-сервера, начните с отслеживания узкого места и устранения его - если вы обнаружите, что на своем веб-сервере есть что-то, что вы можете сделать, чтобы помочь, попробуйте это, но вряд ли это удастся. исправить проблему с производительностью вашего приложения.