nginx или lighttpd?

Metal Messiah
На сайте с 01.08.2010
Offline
152
1397

Это не holy war, просто нужен совет.

Делаю серверную часть некоторого API.

PHP скрипт получает GET запросы с различных хостов, их анализирует на корректность и заносит в базу. Планируется в больших количествах, до пары десятков запросов в секунду, точнее оценить пока не могу. Явно больше 1 в секунду. Для выполнения и выдачи результата будет делаться максимум 2 MySQL запроса, но скорость отдачи результата важна.

Вообщем, Apache отпадает сразу, т.к. я уже знаю что это закончится дракой за память либо расходами на VPS с 2-4 Гб ОЗУ.

Что лучше ставить для такой задачи к PHP - nginx или lighttpd?

Интересует мнение профессионалов о производительности и сложности настройки.

С установкой lighttpd дело имел 2 раза на разных ОС, в одном из 2 случаев PHP не стал, разбираться не пришлось т.к. то был сервер для статики, пхп ставил "чтобы было" на будущее, чтобы убедиться что работает и отключить в конфиге.

С nginx дело имел только как с фронтендом к апачу (в предустановленном виде, образ ОС от хостера), насколько сложно к нему прикрутить пхп буду смотреть.

anonymous, думай что говоришь и не забывай подписать отзыв :)
S
На сайте с 23.05.2004
Offline
316
#1

Одинаково по скорости будут. В nginx гораздо гибче конфигурация. Перешел на него где то после двух лет использования lighttpd , в общем не пожалел ни разу.

Единственный минус - нет cgi-bin, надо делать через враппер. А во всем остальном, лайт проигрывает. Поддержка слабая, фактически не развивается. В настройке лайт гораздо легче, но там и настраивать особо нечего.

Это просто подпись.
AK
На сайте с 23.02.2009
Offline
117
#2

nginx + PHP-FPM (не понятно, правда, зачем вам nginx в вашей задаче, сам он с PHP никак не работает)

Mik Foxi
На сайте с 02.03.2011
Offline
1076
#3

Лайти на мой взгляд намного проще и понятнее в настройке и с ним быстрее можно достичь идеального конфига и максимальной производительности.

Stek, лайти развивается. И развивается он по своему направлению как вебсервер, а нгинкс изначально это прокси. "Медленно" лайти развивается потому что добавляется только самое необходимое, чтоб не стать вторым апачем.

Антибот, антиспам, веб файрвол, защита от накрутки поведенческих: https://antibot.cloud/ + партнерка, до 40$ с продажи.
zexis
На сайте с 09.08.2005
Offline
388
#4

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

Я писал демон для одного чата.

Задача требует хорошего знания С и API линукса.

Skom
На сайте с 02.12.2006
Offline
166
#5

Пара десятков запросов в секунду для нормального сервака это вообще ниочём.

К примеру, на одном серваке у меня сейчас 224 mysql запроса в секунду к базе под 40 гиг. LA меньше единицы. Правда, сервак достаточно суровый.

И на чём всё это делать при 20 запросах - тоже без разницы.

Всё зависит от того - как вы эти запросы пишете и организации базы.

Сам уже давно с апача ушёл на лайти, а потом перешёл на nginx ибо в лайти не было необходимого мне функционала.

Cras amet qui numquam amavit quique amavit cras amet
Andreyka
На сайте с 19.02.2005
Offline
822
#6

Мискуль будет проблемным местом

Не стоит плодить сущности без необходимости
Metal Messiah
На сайте с 01.08.2010
Offline
152
#7

Спасибо за советы.

cgi-bin ни к чему, главное чтобы веб сервер вызвал и обработал пхп скрипт.

Для nginx вроде бы PHP-FPM - единственный вариант.

Раз по производительности одинаково, буду использовать lighttpd т.к. имел дело с ним и говорите что в настройке проще.

То что БД прийдется оптимизировать это уже неоспоримый факт.

90% нагрузки будет создаваться скриптом вида

//пишу навскидку, как бы блок-схема

if ($cookie)
{
if (!check_id($cookie)) die(); // без БД, проверка контрольной цифры
UPDATE table1 SET last=time() WHERE id=$cookie LIMIT 1
INSERT INTO table2 (....) VALUES (...)
} else
{
INSERT INTO table1 (...) VALUES (...);
//получить id вставленной записи, с учетом того что между этими выполнениями могли вставить еще что-то в другом запросе
SELECT id FROM table1 WHERE что-то из вставленных параметров LIMIT 1
INSERT INTO table2 (....) VALUES (...)
echo $cookie;
}

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

Я писал демон для одного чата.
Задача требует хорошего знания С и API линукса.

Демон дело хорошее, я думал над этим. Но все таки решил делать на PHP, он не компилируемый и если что можно быстро что-то обновить, не останавливая демон.

zexis
На сайте с 09.08.2005
Offline
388
#8
Metal_Messiah:

Демон дело хорошее, я думал над этим. Но все таки решил делать на PHP, он не компилируемый и если что можно быстро что-то обновить, не останавливая демон.

Демон для обновления не нужно останавливать на долго, максимум пару секунд

Компилируете новый исполняемый файл.

Меняете старый файл на новый.

И даете команды с интервалом пару секунд.

/etc/init.d/namedaemon start

/etc/init.d/namedaemon stop

Откомпилированный код на С работает быстрее кода на PHP примерно в 40 раз.

Хотя если у вас основная нагрузка ложится на mysql то выигрыша от демона на С будет не много.

Максимальный выигрыш в скорости будет, если вы вообще без mysql сделаете и все будете хранить в оперативной памяти.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий