Лучший сервер для меня? Nginx/Apache/LightHttpd

Полностью вероятный. Зависит от того, как Вы останавливаете Apache.

Если Вы делаете, ночное ПОНУКАЮТ, чтобы заставить серверы запускать новый журнал затем, у Вас не должно быть проблемы. Любая неуклюжая остановка и перезапуск и Ваше собственное Ваше собственное, хотя!

Однако любой подарок соединений во время ночного ПОНУКАЕТ, будет потерян, и те профессиональные игроки должны будут снова соединиться. Бит жалости, если они посреди большой загрузки!

Если Вы регистрируетесь, байты служили частью запроса, то соединение не зарегистрировано, пока загрузка не завершена, следовательно те соединения, которые были отброшены из-за ПОНУКАНИЯ, будут отсутствовать в журналах.

Вы посмотрели на новые 2.2.12 выпуска?

Одно из изменений должно сделать "переданный по каналу через rotatelogs" более устойчивый так, чтобы можно было задержать вращение к rotatelogs утилите и позволить ему вершина и выследить журналы без потребности работать, ночные ПОНУКАЮТ. Так никакие выделенные соединения и никакие недостающие транзакции журнала, если Ваши подаваемые байты входа.

В документе говорится

Вращение происходит в начале этого интервала. Например, если время вращения будет 3600, то файл журнала будет повернут в начале каждого часа; если время вращения будет 86400, то файл журнала будет поворачиваться каждую ночь в полночь.

Если Вы смотрите внутри rotatelogs, не очевидно, как они делают это, поскольку нет никаких магических чисел вообще, пока Вы не определяете строку:

tLogStart = (now / tRotation) * tRotation;

И это выровняет время начала с запуском текущего часа (для tRotation == 3600) или в предыдущую полночь (для tRotation == 86400). Кто знает то, что это сделает для каких-либо других чисел, например, 16432?

Править: Я забыл говорить, что мы видели проблемы с корректным не поведение очень корректно. А именно, просто отъезд зависания дочерних процессов. Это, кажется, было подтверждено, поскольку v2.2.12 теперь имеет новую директиву конфигурации GracefulShutdownTimeout, который указывает тайм-аут, после которого процесс httpd завершается независимо от любых подаваемых запросов.

HTH

'Avahappy,

2
задан 29 July 2010 в 12:19
2 ответа

Во всех кроме наиболее крайних случаев выбор сервера не важен для производительности.

Решение Вашей проблемы должно вынуть задержку из цикла ответа запроса. IOW: используйте очереди

1
ответ дан 3 December 2019 в 12:18

Это зависело бы от того, в чем других функциях Вы нуждаетесь, таким образом, для простоты я предполагаю, что ничто иное не необходимо кроме обслуживания Сценариев PHP и статических файлов. Я сомневаюсь относительно приложения, которое Вы описываете, будет зависящим от ЦП даже на Atom, таким образом, я предположил бы, что RAM будет Вашей ключевой причиной узких мест.

Если те запросы действительно должны быть параллельными, а не некоторая организация очередей, бывшая прекрасная затем, Вы испытываете необходимость в достаточном количестве RAM, чтобы иметь по крайней мере 100 экземпляров PHP и соответствующих рабочих веб-сервера, действующих сразу. Вы смогли уменьшать этот мой Apache использования с основанным на потоке MPM, если Ваш PHP является абсолютно ориентированной на многопотоковое исполнение компиляцией (libcurl модуль ориентирован на многопотоковое исполнение, необходимо будет проверить любых других, которых Вы используете, но я верю, больше всего ориентированы на многопотоковое исполнение в эти дни), поскольку я полагаю, что это позволит более эффективное совместное использование кодовых страниц apache/mod_php/php. Если ориентированное на многопотоковое исполнение выполнение не возможно затем, Вы могли бы хотеть считать что-то более легким весом, чем Apache затем, можно, по крайней мере, уменьшить ту часть места, таким образом, lighttp или nginx, выполняющий PHP через fCGI (который имеет тенденцию быть большим количеством faf для установки, чем Apache+mod_php как, большинство дистрибутивов в основном сделает apache+mod_php для Вас из поля, сохранят немного тонкой настройки, но могут быть значительно большим количеством RAM, эффективной затем Apache).

При использовании Apache можно уменьшить шанс рабочих с PHP, загруженным, будучи "потраченным впустую", служа статическим файлам (значение, что необходимо допускать больше рабочих, чем запросам на код PHP на самом деле нужно) путем помещения nginx (или lighttp) перед Apache как обратный прокси - низкая RAM событийно-ориентированный сервер, обрабатывающий все статические запросы и просто отправляющий запросы, требующие PHP к Apache.

Насколько сложный Ваше приложение, и насколько заблокированный Вы к PHP? Описание в Вашем вопросе (многие рабочие, большинство которых просто находится, ожидая, что что-то произойдет) предоставляет себя предложению абсолютно управляемого событиями решения, а не процесс/поток базировался один, но это будет означать переезжать от PHP. Существует много основанной на событии веб-архитектуры вокруг в данный момент, часть из которой по-видимому довольно стабильна. Для именования, но один node.js является одним из популярных ароматов дня прямо сейчас. С полностью управляемым событиями расположением каждый параллельный запрос будет использовать очень мало дополнительной RAM каждый. Вы могли технологии смешивания и подгонки - использовать RAM эффективный управляемый событиями веб-сервер для обработки статических файлов и прокси для обоих node.js экземпляры (выполняющий код, который это проведет все его время, ожидая запросов, выполненных к внешнему миру для возврата) и экземпляры Apache (выполняющий остающийся код PHP), хотя это смешивание и подгонка не может быть привлекательно для Вас в зависимости от Вашего уровня технических знаний и уверенности, поскольку это будет более сложно для установки, чем просто apahe+mod_php.

Править

С Вашим новым описанием того, что делает Сценарий PHP, необходимо смочь использовать вихревой модуль php curl_multi_* функции, чтобы сделать асинхронные Запросы HTTP. Это означает, что все Ваши проверки могут быть сделаны одним процессом PHP, означающим, что проблема использования памяти спорна, и переключающиеся веб-серверы будут иметь минимальное значение. См. руководство PHP для ссылки на эти функции и примеры как этот для большего количества подобных учебному руководству примеров, если ссылочный материал не ясно дает понять полный процесс.

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

1
ответ дан 3 December 2019 в 12:18

Теги

Похожие вопросы