Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
всем обновляться
— Nginx Plus лучше чем haproxy.
— Чем лучше то?
— Чем haproxy.
… многие из которых используют новую архитектуру в разделяемой памяти, специфичную для Plus-версии— а вот это очень печально. Основная проблема внутренней архитектуры nginx, сильно ограничивающая возможности сторонних модулей и вынуждающая использовать страшные хаки для сихронизации между воркерами, получается, решена только в закрытой версии. Это уже не open core-модель, это какой-то half-open core.
вынуждающая использовать страшные хаки для сихронизации между воркерамиУлыбнуло…
exec_tcl "thread::send -async [tsv::get background-worker bg1] [list incr_cntr CU1 users $remote_addr]";
set_by_tcl $c "tsv::get CU1 users";
fastcgi_param X_USER_CNTR $c;
Запись: 0.738 ms/#, 6774784 #, 1354224.44 #/sec
Чтение: 0.482 ms/#, 10387456 #, 2076465.01 #/sec
Если использовать ваш метод, об атомарности использования счётчика можно забыть.Чо это вдруг?!
Это и есть костыль, потому как с shared memory достаточно сделать __sync_fetch_and_add, просто, быстро, атомарно.А после перезагрузки считать его по новой? Вы ваш счетчик точно никуда больше не пишете? (db, gdbm, file etc.).
Изначально шла речь о том, что для синхронизации между воркерами приходится использовать костылиЕще раз спрошу: А почему это вообще должно быть задачей nginx? НЕ надо синхронизировать его воркеры. Точка. Это ассинхронный сервер, и оставте его таким. Положите рядом другой сервис (с привязкой к nginx хоть на shared mem, хоть на scgi), который все что вам нужно синхронно умеет делать. Все.
Я ещё 7 лет назад, когда писал свой первый демон на C для обработки запросов рекламной сети, досконально изучил архитектуру и реализацию nginx и я преклоняюсь перед Сысоевым как программистом, потому как код прекрасен и перфекционист внутри меня ликовал, не часто увидишь такой качественный, вылизанный код.Это тут вообще для чего? Ну я свой первый демон лет 20-ть назад писал… Меряться будем?
Релиз NGINX 1.6 и 1.7. Особенности версионирования