2011-06-03 104 views
2

根据我自己的经验,我绑定了1个套接字并将请求分派给其他线程。允许多个套接字在同一端口上侦听有什么好处?

但着名的web服务器nginx是bind()目标端口上的多个套接字。

这样做的好处是什么?

+0

呃?如果你绑定到不同的IP /接口,你应该只能这样做。你可以做的是在几个进程/线程上接受(),内核会选择一个,可能只会唤醒那一个(避免雷鸣般的牛群问题)。 – ninjalj 2011-06-03 21:37:27

+0

@ninjalj,nginx并非如此,它将多个套接字绑定到相同的IP /接口。 – 2011-06-04 00:08:59

+0

通常不可能同时将多个套接字绑定到相同的IP /端口对。 'bind()'会失败并出错。无论如何,即使可以这样做也毫无益处。 – 2011-06-04 07:48:31

回答

1

翻看nginx源代码,我没有看到这种可能性。从手册页ip(7)

引用当一个进程想要接收 新传入的数据包或连接, 应该使用绑定(2)将套接字绑定到本地 接口地址。只有 一个IP 套接字可以绑定到任何给定的本地(地址,端口)对。

所以,我认为还有其他事情正在进行。你能提一下你如何确定nginx是这样做的吗?

相关问题