Тема: Про nginx
Хаі. Один чювак сказав, що nginx це однопотоковий сервер, хіба це правда? це ж веб сервер, якщо 1000 користувачів будуть запитувати дані з серверу, то як він вчасно це все віддасть використовуючи один потік? це ж якийсь брід!
Ви не увійшли. Будь ласка, увійдіть або зареєструйтесь.
Ласкаво просимо вас на україномовний форум з програмування, веб-дизайну, SEO та всього пов'язаного з інтернетом та комп'ютерами.
Будемо вдячні, якщо ви поділитись посиланням на Replace.org.ua на інших ресурсах.
Для того щоб створювати теми та надсилати повідомлення вам потрібно Зареєструватись.
Український форум програмістів → Web-сервери → Про nginx
Сторінки 1
Для відправлення відповіді ви повинні увійти або зареєструватися
Хаі. Один чювак сказав, що nginx це однопотоковий сервер, хіба це правда? це ж веб сервер, якщо 1000 користувачів будуть запитувати дані з серверу, то як він вчасно це все віддасть використовуючи один потік? це ж якийсь брід!
Чувак правий nginx однопоточний.
Чувак правий nginx однопоточний.
ну я вже не буду питати як воно там працює, той чювак дописав, що є сокети, котрі не блокуютьс... правда я не розумію, який в них сенс і як вони там працюють.
то як він вчасно це все віддасть використовуючи один потік? це ж якийсь брід!
ну я вже не буду питати як воно там працює
правда я не розумію, який в них сенс і як вони там працюють
Так а нащо було питати? Підтвердити факт його однопоточності?
то як він вчасно це все віддасть використовуючи один потік? це ж якийсь брід!
ну я вже не буду питати як воно там працює
правда я не розумію, який в них сенс і як вони там працюють
Так а нащо було питати? Підтвердити факт його однопоточності?
ну да, насправді я б хотів щоб мені хтось з вас розповів ,як воно працює
Запис в сокет відбівається без участі процесора, мережевою картою чи хз(я не трушний програміст і не знаю як ам реалізовано).
В випадку синхронного сокета блокується виконання всієї програми.
Тобто прийшов запит - сервер створив новий {потік|процес} в якому читаються данні з сокета. На створені потки потрібно додаткова память і процесор(переключення контексту між потоками теж потрібно виконувати, хоча це задача ОС чи творця бібліотеки багатопоточні яку ти використовуєш).
У випадку якщо я клієнт і у мене повільне з’єднання і я дуже повільно надсилаю данні, то в сервера буде висіти цей процес в памяті. Можна відкрити багато таких з’єднань і покласти сервер. Так apache до неї вразливий і вона називається http://en.wikipedia.org/wiki/Slowloris
В неблокуючих сокетів є перевага можна переглядати їх стан, тобто "Агов. У нас прийшли всі данні(сhunk). Ні ? Тоді я прочитаю пізніше" відкласти його і перейти до обробки наступного.
Тобто у нас є масив підключень сonnects
while True:
for сonnect in сonnects:
if сonnect.is_done():
procces(сonnect)
сonnects.remove(сonnect)
else:
pass
Сторінки 1
Для відправлення відповіді ви повинні увійти або зареєструватися