Как мне увеличить пропускную способность сети HTTP? - PullRequest
1 голос
/ 24 сентября 2011

Я запускал бенчмарк на CouchDB, когда заметил, что даже при больших объемных вставках параллельная работа нескольких из них почти в два раза быстрее. Я также знаю, что веб-браузеры используют несколько параллельных соединений для ускорения загрузки страницы.

По какой причине несколько соединений быстрее, чем одно? Они идут по одному и тому же проводу или даже на localhost.

Как определить идеальное количество параллельных запросов? Есть ли эмпирическое правило, например, "размер пула потоков = # ядер + 1"?

Ответы [ 2 ]

1 голос
/ 25 сентября 2011

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

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

Возможно, вы захотите взглянуть на RFC 2616 ,HTTP спец.Он расскажет вам об обменах, которые случаются, чтобы установить соединение HTTP.

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

0 голосов
/ 25 сентября 2011

Каждое соединение использует один собственный поток. У каждого потока есть свой квант на потребление ресурсов процессора, сети и других ресурсов. В основном, CPU.

Когда вы запускаете параллельный вызов, поток будет отображать процессорное время и запускать вещи «одновременно».

Это общий обзор вещей. Я предлагаю вам прочитать об асинхронных вызовах и программировании потоков, чтобы лучше это понять.

[] 's,

и прошлое

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...