URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID8
Нить номер: 2078
[ Назад ]

Исходное сообщение
"Предельное количество виртуальных сайтов в Apache"

Отправлено MK , 03-Фев-04 23:36 
Пожалуйста подскажите, сколько виртуальных сайтов
может держать Apache 2. У меня он начал сбоить на
500 сайтах - отказывается запускаться.
И как с этим бороться? Зпускать второй экземпляр или
есть какие то настройки?

Содержание

Сообщения в этом обсуждении
"Предельное количество виртуальных сайтов в Apache"
Отправлено solotony , 04-Фев-04 14:25 
Я где-то читал о 50000.

>Пожалуйста подскажите, сколько виртуальных сайтов
>может держать Apache 2. У меня он начал сбоить на
>500 сайтах - отказывается запускаться.

Может просто не может открыть много файлов?
Надо делать общий лог.
Что пишет при отказе?

>И как с этим бороться? Зпускать второй экземпляр или
>есть какие то настройки?


"Предельное количество виртуальных сайтов в Apache"
Отправлено MK , 04-Фев-04 20:43 
Пишет так:
[warn] new file descriptor 1024 is too large; you probably need to rebuild Apache with a larger FD_SETSIZE (currently 1024).

Это ядро не дает открыть или у Apache есть своя настройка? если дело в ядре (Linux 2.4.20), то потянет больше дескрипторов?



"Предельное количество виртуальных сайтов в Apache"
Отправлено solotony , 04-Фев-04 21:07 
Ядро.

просто изменить в текущей сессии - комманда ulimit (от рута)
или патчить апача - разбирайся с rlimit

(я не менял таким образом число файлов, но наверно должно помочь)


"Предельное количество виртуальных сайтов в Apache"
Отправлено MK , 04-Фев-04 21:18 
при старте апача я вставила ulimit -n 3000  и тогда пропала ошибка too many open files (она была до той, которую я описала)

без ulimit он просто вываливался уже при этом количестве файлов...



"Предельное количество виртуальных сайтов в Apache"
Отправлено solotony , 04-Фев-04 21:31 
Да, не прав был, признаю. Это огграниечние ничего
общего к rlimit не имеет.

Стало интересно даже :).

Не пробовала перекомпилировать, как советует лог апача?


"Предельное количество виртуальных сайтов в Apache"
Отправлено MK , 04-Фев-04 23:05 
>Не пробовала перекомпилировать, как советует лог апача?

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


"Предельное количество виртуальных сайтов в Apache"
Отправлено uldus , 05-Фев-04 10:08 
>Не пробовала перекомпилировать, как советует лог апача?

Если для каждого виртуального сервера используется своя пара access/error логов, то дело в этом. При 500 клиентах, апач будет держать только для VirtualHost 1000 открытых файлов. Делай один общий access/error лог.

Или в начало apachectl (не рекомендую, лучше один лог) добавь ulimit -n 3000, до этого поэксперементируй, запусти эту команду в sh и посмотри по ulimit -a изменились ли параметры, в зависимости от ОС может потребоваться пересобрать или тюнить ядро.


"Предельное количество виртуальных сайтов в Apache"
Отправлено maryl , 05-Фев-04 11:50 
>Делай один общий access/error лог.
это неудобно пользователям, каждому нужны свои логи.

>Или в начало apachectl (не рекомендую, лучше один лог) добавь ulimit -n
>3000
у меня в старте апача стоит ulimit -n 3000
до того, как я поставила ulimit - была ошибка too many open files, теперь ее нет - а  есть [warn] new file descriptor 1024 is too large; you probably need to rebuild Apache with a larger FD_SETSIZE (currently 1024).

как будто теперь ядро разрешает - т.е. ошибка для апача не внешняя,- а сам апач не позволяет открыть дескриптор больший 1024. мне непонятно как апач пересобрать с большим кол-во дескрипторов (в логе апач это советует)


"Предельное количество виртуальных сайтов в Apache"
Отправлено uldus , 05-Фев-04 22:10 
> >Делай один общий access/error лог.
>это неудобно пользователям, каждому нужны свои логи.

Дай пользователям доступ к cgi-скрипту который ведерет из одного большого лога только относящуюся к текущему пользователю инфромацию. Или раз день распределяй из этого файла логи по директориям пользователя. В первом случае клиенты смогут в realtime смотреть errorlog, во втором запускать webanalyzer.

>у меня в старте апача стоит ulimit -n 3000
>до того, как я поставила ulimit - была ошибка too many open
>files, теперь ее нет - а  есть [warn] new file
>descriptor 1024 is too large;
>you probably need to rebuild Apache
>with a larger FD_SETSIZE (currently 1024).

Пересобири апач указав -DFD_SETSIZE=3000 при сборке

Перед этим нужнл пересобрать ядро изменив размер fd_set.
В linux это делается изменением значения __FD_SETSIZE в include/linux/posix_types.h:
#define __FD_SETSIZE    1024


"Предельное количество виртуальных сайтов в Apache"
Отправлено solotony , 05-Фев-04 22:22 
>Дай пользователям доступ к cgi-скрипту который
>ведерет из одного большого лога только
>относящуюся к текущему пользователю инфромацию.

По-моему именно это и называется "Убей сервер своими руками" :)
Какой-бы быстрой программа разбора не была, она всяко потратит
изрядно ресурсов, на то, чтоб лог отпарсить.

Просто тем кому НУЖЕН лог - давай его.
Остальных - в общий. 90% пользователей
и не знают что это такое.


"Предельное количество виртуальных сайтов в Apache"
Отправлено uldus , 05-Фев-04 22:49 
>По-моему именно это и называется "Убей сервер своими руками" :)
>Какой-бы быстрой программа разбора не была, она всяко потратит
>изрядно ресурсов, на то, чтоб лог отпарсить.

Целиком лог никто и не парсит, только послдние пару сотен записей в error_log. Клиенту ведь почти всегда нужно посмотреть почему только что запущенный скрипт вернул ошибку. В других случаях может смотреть лог за прошлые дни из архива, которые уже по пользователям рассортированы.


"Предельное количество виртуальных сайтов в Apache"
Отправлено solotony , 05-Фев-04 23:01 
>Целиком лог никто и не парсит, только послдние пару сотен записей в
>error_log. Клиенту ведь почти всегда нужно посмотреть почему только что запущенный
>скрипт вернул ошибку. В других случаях может смотреть лог за прошлые
>дни из архива, которые уже по пользователям рассортированы.

Ну если только хвост парсить - можно.
Хотя для просмотра ошибок гораздо удобнее написать в скрипте:
use CGI::Carp 'fatalsToBrowser';
По крайней мене я только так и отлаживаю. А в логи - это
посмотреть левые ссылки.


"Предельное количество виртуальных сайтов в Apache"
Отправлено maryl , 06-Фев-04 00:44 
касательно файловых дескрипторов и разбиения логов нашлась инфа на http://httpd.apache.org/docs-2.0/vhosts/fd-limits.html там же указана готовая утилита для разбора логов по вирт.хостам.

за участие в решении проблемы всем спасибо! ;)


"Предельное количество виртуальных сайтов в Apache"
Отправлено visitor , 30-Авг-04 15:34 
>
>Перед этим нужнл пересобрать ядро изменив размер fd_set.

для фри 4.10 это подойдет? Я не нашел такой


"Предельное количество виртуальных сайтов в Apache"
Отправлено visitor , 30-Авг-04 15:35 
>
>Перед этим нужнл пересобрать ядро изменив размер fd_set.

для фри 4.10 это подойдет? Я не нашел такой опции в ядре:(


"Предельное количество виртуальных сайтов в Apache"
Отправлено solotony , 05-Фев-04 12:28 
>Если для каждого виртуального сервера используется своя пара access/error логов, то дело
>в этом. При 500 клиентах, апач будет держать только для VirtualHost
>1000 открытых файлов. Делай один общий access/error лог.
  
вот это правильное решение. По крайней мере на многих крупных серверах делают именно так.

>Или в начало apachectl (не рекомендую, лучше один лог) добавь ulimit -n
>3000, до этого поэксперементируй, запусти эту команду в sh и посмотри
>по ulimit -a изменились ли параметры, в зависимости от ОС может
>потребоваться пересобрать или тюнить ядро.

  Это ограничение не имеет ничего общего к лимитам системы, выставляемым через rlimits (комманда ulimit). Это ограничение на вызов ядра select, который не принимает дескриптор с номером более 1023.


"Предельное количество виртуальных сайтов в Apache"
Отправлено maryl , 05-Фев-04 12:45 
2 solotony
>вот это правильное решение. По крайней мере на многих крупных серверах >делают именно так.

а потом,  для каждого пользователя его разбирать придется скриптами? ведь каждому узеру нужен его лог (особенно , если у него perl и т.д.)


"Предельное количество виртуальных сайтов в Apache"
Отправлено Nikolaev_D , 06-Фев-04 23:13 
to MK

а вопрос:
как тебя допустили до руления хостингом в 500 клиентов ?


"Предельное количество виртуальных сайтов в Apache"
Отправлено MK , 07-Фев-04 00:46 
Если тебе есть, что умного сказать по поводу максимального
количества файловых дескрипторов (слово знакомо?), или сервера
Apache 2, то с удовольствием тебя выслушаю (может Sun-овский сервер
прорекламируешь?).

>to MK
>
>а вопрос:
>как тебя допустили до руления хостингом в 500 клиентов ?