2012-03-06 4 views
0

У меня есть 1 ГБ VPS, и Apache замедляется до ползания почти от запуска. Я запустил ApacheBench в файле static.html, и все не отличается. Тем не менее, сайт будет иметь как MySQL, так и PHP и большой объем запросов AJAX, поэтому я хотел бы настроить для этого.Настройка производительности Apache с 1 ГБ с помощью httpd.conf

Когда я перезагружается, журналы ошибок показать это почти сразу:

[ошибка] сервер достиг настройки MaxClients, рассмотреть вопрос о повышении MaxClients установки

ab -n 1000 -c 1000 

шоу:

Document Path:   /static.html 
Document Length:  7 bytes 

Concurrency Level:  1000 
Time taken for tests: 57.784 seconds 
Complete requests:  1000 
Failed requests:  64 
    (Connect: 0, Receive: 0, Length: 64, Exceptions: 0) 
Write errors:   0 
Total transferred:  309816 bytes 
HTML transferred:  6552 bytes 
Requests per second: 17.31 [#/sec] (mean) 
Time per request:  57784.327 [ms] (mean) 
Time per request:  57.784 [ms] (mean, across all concurrent requests) 
Transfer rate:   5.24 [Kbytes/sec] received 

Connection Times (ms) 
       min mean[+/-sd] median max 
Connect:  0 25 13.4  25  48 
Processing: 1070 16183 15379.4 9601 57737 
Waiting:  0 14205 15176.5 9591 42516 
Total:  1070 16208 15385.0 9635 57783 

Percentage of the requests served within a certain time (ms) 
    50% 9635 
    66% 20591 
    75% 20629 
    80% 36357 
    90% 42518 
    95% 42538 
    98% 42556 
    99% 42560 
100% 57783 (longest request) 

Если я запускаю ab в файле php, он иногда заканчивается, большая часть время он не будет, а иногда получает ошибки как

apr_socket_recv: Connection reset by peer (104) 

и

socket: No buffer space available (105) 

httpd.conf пунктов:

Timeout 10 
KeepAlive On 
MaxKeepAliveRequests 100 
KeepAliveTimeout 1 

<IfModule prefork.c> 
StartServers 3 
MinSpareServers 5 
MaxSpareServers 9 
ServerLimit 40 
MaxClients 40 
MaxRequestsPerChild 5000 
</IfModule> 

Top ... (CPU и нагрузки 1мин очень неустойчивыми при испытания):

top - 10:44:51 up 11:50, 3 users, load average: 0.17, 0.42, 0.90 
Tasks: 84 total, 2 running, 82 sleeping, 0 stopped, 0 zombie 
Cpu(s): 2.8%us, 3.1%sy, 0.0%ni, 94.1%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st 
Mem: 1793072k total, 743604k used, 1049468k free,  0k buffers 
Swap:  0k total,  0k used,  0k free,  0k cached 

    PID USER  PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND        
21831 mysql  18 0 506m 71m 6688 S 0.7 4.1 4:03.18 mysqld        
1828 root  15 0 113m 52m 2052 S 0.0 3.0 0:02.85 spamd         
1830 popuser 18 0 113m 51m 956 S 0.0 2.9 0:00.00 spamd         
8012 apache 15 0 327m 35m 17m S 3.7 2.0 0:11.83 httpd         
8041 apache 15 0 320m 28m 15m S 0.0 1.6 0:11.83 httpd         
8022 apache 15 0 321m 27m 14m S 2.3 1.6 0:11.05 httpd         
8033 apache 15 0 320m 27m 14m S 1.7 1.6 0:10.06 httpd 

Есть что-то o Очевидно, что здесь неправильно? или что будет моим следующим шагом в устранении неполадок?

ответ

3

Похоже, у вас недостаточно памяти - 1 ГБ не так много, если вы используете PHP с prefork и MySQL на одном сервере. Ваши MaxClients должны быть 10-20, а не 40.

Несколько недель назад я написал сценарий для настройки Apache httpd, который, вероятно, поможет определить максимальные значения для вашего сервера. Вы можете найти запись в блоге здесь http://surniaulula.com/2012/11/09/check-apache-httpd-mpm-config-limits/, а скрипт также находится в Google Code.

Наслаждайтесь!

js.

+0

Благодарим за предоставленную ссылку, заработанные +1 –