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

время ожидания производительности apache

У меня есть веб-сервер, на котором я размещаю около 6-7 веб-сайтов. Большинство этих веб-сайтов получают свой контент из MySQL, который размещен на том же сервере. Средняя посещаемость в день - около 500-600 уникальных посетителей, около 150 тыс. Посещений в неделю.

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

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

Сервер работает на Sempron LE 1300; 2,3 ГГц, 512 КБ ОЗУ 2 ГБ ОЗУ 10 Мбит / с / 1 Мбит / с

Сервисы: MySQL, ProFTPD, Apache.

 Private  +   Shared  =  RAM used       Program
----------------------------------------------------
  1.2 MiB +  54.0 KiB =   1.2 MiB       proftpd
  4.1 MiB +  23.0 KiB =   4.1 MiB       munin-node
 20.8 MiB + 120.5 KiB =  20.9 MiB       mysqld
 47.3 MiB +   9.9 MiB =  57.3 MiB       apache2 (22)

top: Mem:   2075356k total,  1826196k used,   249160k free,

Timeout 35
KeepAlive On
MaxKeepAliveRequests 300
KeepAliveTimeout 5
<IfModule mpm_prefork_module>
    StartServers         10
    MinSpareServers      20
    MaxSpareServers      20
    MaxClients           60
    MaxRequestsPerChild 1000
</IfModule>
<IfModule mpm_worker_module>
    StartServers          2
    MaxClients          150
    MinSpareThreads      25
    MaxSpareThreads      75
    ThreadsPerChild      25
    MaxRequestsPerChild   0
</IfModule>

Хотя трудно сказать наверняка, не взглянув на журнал ошибок Apache, я был бы обеспокоен тем, что вы размещаете шесть или семь веб-сайтов при подключении к Интернету с пропускной способностью только 1 Мбит. Я предполагаю, что это либо в очень маленьком офисе, либо в вашем собственном доме. Хотя 1 Мбит может быть достаточным для ваших ожиданий по трафику, звучит довольно правдоподобно, что соединение 1 Мбит является причиной проблем с периодической загрузкой веб-сайта.

Я бы предложил либо передать ваши сайты на аутсорсинг профессиональному веб-хостингу, либо, возможно, приобрести недорогой VPS на базе Xen у такого поставщика, как Linode или Slicehost.

По крайней мере, убедитесь, что ваш DNS размещен на профессиональном и внешнем хостинге.

Если проблема не в вашем Интернете, я бы подумал, что у Apache не хватает памяти. Apache с mod_php занимает довольно много памяти, каждый процесс потребляет до 50 МБ оперативной памяти. Объедините это с настройкой Apache KeepAlive по умолчанию, равной 15 секундам, и у вас может не хватить памяти, в зависимости от того, сколько места под SWAP вы выделили.

Лично я бы выбрал асинхронную управляемую событиями модель lighttpd или nginx fastcgi, которая может обрабатывать гораздо больше соединений при использовании части памяти.

Надеюсь это поможет.

Похоже, что серверов / потоков может не хватить. Вы проверили свой журнал ошибок apache или системный журнал? Если я не совсем ошибаюсь, он должен сказать вам, какой ресурс вам нужно увеличить.

Кроме того, я вижу, что вы даете нам настройки mpm для prefork и worker. Взгляните на ответ на вопрос Как узнать, работает ли apache как предварительная вилка или как рабочий? относительно того, как узнать, какой mpm вы используете.