Здравейте,
Имам виртуална машинка в една наша хостинг компания, която ще ползвам за да ми хоства сайта. Още от самата инсталация всичко си правя сам. 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
Предварително благодаря!