Автор Тема: Apache overload  (Прочетена 3745 пъти)

abadon

  • Напреднали
  • *****
  • Публикации: 510
  • Distribution: Debian
  • Window Manager: KDE
    • Профил
    • WWW
Apache overload
« -: Nov 12, 2009, 15:43 »
Здравейте,

Имам виртуална машинка в една наша хостинг компания, която ще ползвам за да ми хоства сайта.  Още от самата инсталация всичко си правя сам. OS-a е Ubuntu Hardy, Kernel 2.6.24-25-virtual, VMware tools-а е последна версия, хост машината е VMware ESX 4 с процесори Intel(R) Xeon(R) CPU E5405  @ 2.00GHz. За виртуалната ми машина са заделени 256МВ RAM, ограничен да ползвам до 450 Mhz процесорно време на един Xeon и имам 100Mbit-а flat канал към интернет . Проблема ми е следния, когато реша да тествам производителността на Apacha и от лаптопа си изпълня ab -c 10 -n 100 http://mysite.com/ или пък ab -c 20 -n 20 http://mysite.com/ в конзолата получавам отговор:
Цитат
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking mysite.com (be patient)...apr_poll: The timeout specified has expired (70007)

А load-а на сървъра ми става малко над 20, CPU-то е на 100% почти през цялото време. top-a показва за паметта следното нещо:
Цитат
Mem 255764k total, 231156k used, 24608k free, 12432k buffers
Swap: 401400k total, 100K used, 401300k free, 110376k cached

И на първите 20-21 реда показва apache2 така гледах top-а около 40 мин и стойностите си остават почти без промяна. Изпълних /etc/init.d/apache2 stop изчаках още 4-5 мин но нищо не се случи затова изпълних killall -9 apache2 и машината се разтовари.

Въпроса ми е на какво се дължи това зависване на апача? Явно нещо фундаментално съм сбъркал, а изчетох толкова много неща за оптимизация.

Ето и какво съм променил от default-ските:
В /etc/apache2/apache2.conf:
Цитат
<IfModule mpm_prefork_module>                                             
    StartServers          5                                               
    MinSpareServers       5                                               
    MaxSpareServers      10                                               
    MaxClients           20                                               
    MaxRequestsPerChild   1024                                           
</IfModule>

Override-а ми е забранен навсякъде. Вместо .htaccess файлове ползвам директиви в /etc/apache2/httpd.conf за конкретната директория където трябва да има .htaccess файл.

В  /etc/php5/apache2/php.ini съм променил:
Цитат
post_max_size = 256M
upload_max_filesize = 200M
max_execution_time = 300    ; Maximum execution time of each script, in seconds
max_input_time = 600 ; Maximum amount of time each script may spend parsing request data
memory_limit = 128M      ; Maximum amount of memory a script may consume (16MB default)

Инсталирал съм и eAccelerator  съгласно указанията тук Конфигурацията ми в /etc/php5/conf.d/eaccelerator.ini е следната:
Цитат
extension="eaccelerator.so"
eaccelerator.shm_size="16"
eaccelerator.cache_dir="/var/cache/eaccelerator"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="0"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="10"
eaccelerator.shm_prune_period="10"
eaccelerator.shm_only="1"
eaccelerator.compress="1"
eaccelerator.compress_level="9"

В /etc/mysql/my.cnf съм променил това:
Цитат
max_allowed_packet      = 128M

Файловата ми система е reiserfs понтирана със следните опции relatime,noatime,notail

Предварително благодаря!
« Последна редакция: Nov 12, 2009, 15:46 от abadon »
Активен

Успешното Boot-ване на Windows завършва с рестарт!!!
You are registered as user #382190 with the Linux Counter
Всеки пост - отговор на въпрос

abadon

  • Напреднали
  • *****
  • Публикации: 510
  • Distribution: Debian
  • Window Manager: KDE
    • Профил
    • WWW
Re: Apache overload
« Отговор #1 -: Nov 18, 2009, 12:58 »
Борейки проблема открих нещо много страно. Смених порта на апача от 80 на 8080 и ето какво стана ab -c 10 -n 1000 http://mysite.com:8080/ :
Цитат
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking mysite.com (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests


Server Software: Apache
Server Hostname: mysite.com
Server Port: 8080

Document Path: /
Document Length: 0 bytes

Concurrency Level: 10
Time taken for tests: 14.628 seconds
Complete requests: 1000
Failed requests: 0
Write errors: 0
Non-2xx responses: 1000
Total transferred: 214000 bytes
HTML transferred: 0 bytes
Requests per second: 68.36 [#/sec] (mean)
Time per request: 146.284 [ms] (mean)
Time per request: 14.628 [ms] (mean, across all concurrent requests)
Transfer rate: 14.29 [Kbytes/sec] received

Connection Times (ms)
min mean[+/-sd] median max
Connect: 1 3 37.1 1 624
Processing: 8 142 247.0 34 1616
Waiting: 8 142 247.0 34 1616
Total: 9 145 248.8 34 1617

Percentage of the requests served within a certain time (ms)
50% 34
66% 39
75% 44
80% 55
90% 659
95% 672
98% 696
99% 721
100% 1617 (longest request)

Мисля прилична производителност за такава скромна машинка като моята. Няма зависване на апача няма нищо. Има само товар докато теста тече, после се разтоварва. Обаче като го пусна на 80-ти порт същия тест и получавам
Цитат
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking mysite.com (be patient)
Completed 100 requests
apr_poll: The timeout specified has expired (70007)
Total of 169 requests completed

И полужението е същото апача зависва.
Някой може ли да ми обясни на какво се дължи този проблем. Защо на дефолт порта нямам пройзводителност а на 8080 е в пъти по-голяма.
« Последна редакция: Nov 18, 2009, 13:04 от abadon »
Активен

Успешното Boot-ване на Windows завършва с рестарт!!!
You are registered as user #382190 with the Linux Counter
Всеки пост - отговор на въпрос

dejuren

  • Напреднали
  • *****
  • Публикации: 1025
  • Distribution: Ubuntu, RedHat
  • Window Manager: lxde KDE4
    • Профил
Re: Apache overload
« Отговор #2 -: Dec 17, 2009, 18:46 »
Едва ли е голямо успокоение, но не си единствен (виж пост #10)
http://www.webhostingtalk.com/showthread.php?t=905387

Като заобикаляне на проблема ползвай веб прокси. Също тествай с http://loadimpact.com/ дали има разлика при двата различни порта. Възможно е просто апач бенч да има конфликт със сървъра работещ на 80.
Активен

http://webchat.freenode.net/?channels=ubuntu-bg
The quieter you become, the more you are able to hear.
Две седмици цъкане с мишката спестяват два часа четене на документацията.

abadon

  • Напреднали
  • *****
  • Публикации: 510
  • Distribution: Debian
  • Window Manager: KDE
    • Профил
    • WWW
Re: Apache overload
« Отговор #3 -: Dec 18, 2009, 11:56 »
Това с уеб проксито го тествах няма ефект, даже по-зле става. Проблема с портовете се реши след ъпдейт на апача. Пройзводителността и на 80-ти се управи. Иначе благодаря за бенчмарк сайта много е як  [_]3
Активен

Успешното Boot-ване на Windows завършва с рестарт!!!
You are registered as user #382190 with the Linux Counter
Всеки пост - отговор на въпрос

Подобни теми
Заглавие Започната от Отговора Прегледи Последна публикация
Sound server fatal error: cpu overload aborting
Настройка на програми
MarineForce 2 2574 Последна публикация Jun 11, 2006, 18:46
от MarineForce
Processor overload
Хардуерни и софтуерни проблеми
bolero 3 2828 Последна публикация Jul 20, 2008, 00:19
от bolero
kerneloops 100% processor overload
Настройка на програми
shoshon 7 3118 Последна публикация Jun 06, 2009, 14:04
от shoshon
Скрипт за kill на процеси (overload)
Общ форум
globaluty 12 5282 Последна публикация Feb 01, 2015, 13:25
от 4096bits
ПРЕМЕСТЕНО: Скрипт за kill на процеси (overload)
Настройка на програми
neter 0 1398 Последна публикация Jan 30, 2015, 00:24
от neter