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

У меня есть проблема с перегрузкой сервера на конфигурации Apache 8 ГБ RAM Виртуальный сервер 1and1.com. Сервер становится чрезвычайно медленным, после того как он достигает 100 + активные пользователи (согласно аналитике Google) в течение времени выбора. Я сделал осаду и тесты loadimpact и сделал некоторые изменения конфигурации в httpd.conf файл, но я не знаю, достаточно ли это. Возможно, мне просто нужно больше поршня как 16 ГБ, или я пропускаю что-то? Я знаю, что могу оптимизировать программирование, но я не вижу, как оно улучшит производительность решительно. Интересный факт - то, что использование памяти параллелей только отображает 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 

Я делаю что-то не так? Я ценю всю справку!

1
задан 13 December 2014 в 02:28
1 ответ

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

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

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

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

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

.
1
ответ дан 4 December 2019 в 00:14

Теги

Похожие вопросы