不可发布违法信息,一旦发现永久封号,欢迎向我们举报!
百科|常识分享
分享各种百科|日常
手表常识网 > 餐饮行业新闻资讯 > 百科|常识 >  12 个全国芝士汉堡日超级优惠不容错过 linux的TCP连接数量最大不能超过65535个吗,那服务器是如何应对百万千万的并发的?


  • 【莆田鞋厂家分类】
  • 【奢侈大牌包包厂家分类】
  • 【潮牌奢侈服饰鞋子厂家分类】
  • 【名表厂家分类】

厂家货源分类区域

12 个全国芝士汉堡日超级优惠不容错过 linux的TCP连接数量最大不能超过65535个吗,那服务器是如何应对百万千万的并发的?

发布时间:2024-10-27 15:10:00  来源:互联网整理  浏览:   【】【】【

12 个全国芝士汉堡日超级优惠不容错过 linux的TCP连接数量最大不能超过65535个吗,那服务器是如何应对百万千万的并发的? 

12 个全国芝士汉堡日超级优惠不容错过

连锁餐厅总会推出特别的促销活动,来帮助顾客庆祝重大活动,不管是返校季还是诸如劳动节这类重要节日。所以,连锁餐厅为另一个即将来临的庆祝活动——全国芝士汉堡日准备了众多令人兴奋的优惠,这也就不足为奇啦。

这个以三明治为主题的节日在 9 月 18 日,因为实在没有比享用美味的芝士汉堡更好的庆祝办法了,今年好多快餐和堂食连锁餐厅都提供打折或者免费的汉堡来帮您庆祝。

下面是全国芝士汉堡日各个连锁餐厅的所有最优优惠——还有您得做些啥才能用上它们。

1. 麦当劳

在全国芝士汉堡日,麦当劳的双层芝士汉堡(440 卡路里)只要 0.5 美元。依照您在美国的居住地,这款经典汉堡通常得花您几美元(在我所在的新泽西州的当地麦当劳,当下售价是 4.49 美元),所以这个优惠能给顾客带来很大的折扣。该优惠仅通过麦当劳应用程序提供。

2. 汉堡王

要是您是汉堡王皇家特权忠诚度计划的成员,这周您会有一些重大惊喜。这家连锁店在 9 月 18 日,向消费 1 美元及以上的会员免费送火焰烤制芝士汉堡(290 卡路里),以此来庆祝全国芝士汉堡日。这是汉堡王从 9 月 16 日至 9 月 22 日为忠诚度计划参与者提供的整整一周优惠的一部分,因此感兴趣的顾客应在接下来的几天查看汉堡王应用程序以获取其他令人兴奋的优惠。

3. 温迪

如果您喜欢温迪的小培根芝士汉堡(含 370 卡路里),本周是尽情享受这款经典快餐的绝佳时机。从 9 月 18 日到 9 月 22 日,温迪凡有任何消费,再加一美分即可提供小培根芝士汉堡。要享受此优惠,顾客需要在温迪的应用程序中应用数字优惠。

4. 苹果蜂

超值套餐 在 2024 年夏天一直颇为流行,苹果蜂为了纪念全国芝士汉堡日,正在推出一项 特别优惠。9 月 18 日,该连锁店将允许顾客以 8.99 美元的价格将三款经典手工汉堡之一与一份经典薯条搭配。作为优惠的一部分,客人可以选择苹果蜂经典汉堡(1120 卡路里)、经典芝士汉堡(1250 卡路里)或经典培根芝士汉堡(1360 卡路里),该优惠将在店内和线上提供。

5. 红罗宾

红罗宾为庆祝 2024 年全国芝士汉堡日,为客人提供 10 美元的美食芝士汉堡(860 卡路里)和无限量配菜。该优惠仅适用于参与活动地点的堂食客人,所以感兴趣的客人应据此规划自己的行程。

6. 丹尼餐厅

在全国芝士汉堡日这天,丹尼餐厅的顾客购买任何汉堡均可享受 20%的折扣,包括像 Flamin' 5-Pepper Burger(1000 卡路里)这类经典款式,以及像受新电影《 Beetlejuice Beetlejuice 》启发的 Beetlejuicy Burger(1400 - 1790 卡路里)这类限时款。此优惠适用于堂食和在线顾客。

7. 沃尔伯格餐厅

沃尔伯格餐厅——这家在美国拥有 80 多家分店的连锁店——在全国芝士汉堡日推出的优惠,其最大的好处在于,它不只适用于一个菜品。9 月 18 日,当顾客从参与活动的沃尔伯格餐厅点餐时,所有汉堡都将享受 50%的折扣。此促销活动将在该连锁店的北美门店和线上同时进行。

8. BurgerFi

尽管 由于财务挑战最近申请了破产,但 BurgerFi 为纪念全国芝士汉堡日,给顾客准备了 特别优惠。9 月 18 日,在 BurgerFi 购买可口可乐自由式饮料的任何人还可以仅以 4 美元的价格获得一份优质芝士汉堡(598 - 962 卡路里)。此优惠仅适用于堂食顾客。

9. Friendly's

9 月 18 日至 20 日,Friendly's 会给它所有的芝士汉堡提供 2 美元的折扣,来庆祝全国芝士汉堡日。

10. Wayback Burgers

虽然好多连锁店都靠打折汉堡来庆祝全国芝士汉堡日,可 Wayback Burgers 却是通过免费提供汉堡来纪念这个节。

9 月 18 号,这家发展迅速的连锁店会给它的经典汉堡(650 卡路里)搞买一送一的活动,这个汉堡有俩牛肉饼、美国奶酪、生菜、西红柿、泡菜、洋葱、番茄酱和芥末。

顾客能亲自下单或者通过 Wayback Rewards 计划(能在线上、餐厅里还有通过应用程序使用)享受促销活动。

11. Whataburger

在全国芝士汉堡日来临之际,Whataburger 给其奖励会员提供赢得一整年免费食物的机会。任何忠诚度计划的参与者,若于 9 月 18 日通过 Whataburger 应用程序或网站订购帕蒂融化汉堡(950 卡路里)、甜辣培根汉堡(1080 卡路里)或者芝士 Whataburger(680 卡路里),都将自动参与“一年 Whataburger”的抽奖活动。

12. The Capital Grille

2024 年,庆祝全国芝士汉堡日的可不只是快餐和休闲餐饮连锁店。从 9 月 9 日至 11 月 1 日,高端牛排连锁店 The Capital Grille 再度推出其和牛与葡萄酒套餐,顾客能够从三种美味的和牛汉堡中任选一种,并搭配 Duckhorn Portfolio 公司的红葡萄酒,起售价为 35 美元。

和牛汉堡默认搭配鸭油海盐薯条。不过,客人可以用薯片和鱼子酱(一种由焦糖洋葱和鱼子酱制成的蘸酱搭配自制薯片)来代替薯条,需额外花费 20 美元。

有可用信息时已涵盖营养信息。


linux的TCP连接数量最大不能超过65535个吗,那服务器是如何应对百万千万的并发的?

首先,问题中描述的65535个连接指的是客户端连接数的限制。

在tcp应用中,server事先在某个固定端口监听,client主动发起连接,经过三次握手后建立tcp连接。那么对单机,其最大并发tcp连接数是多少呢?

如何标识一个TCP连接

在确定最大连接数之前,先来看看系统如何标识一个tcp连接。系统用一个4四元组来唯一标识一个TCP连接:{localip, localport,remoteip,remoteport} = {本地ip,本地port,远程ip,远程port}

client最大tcp连接数

client每次发起tcp连接请求时,除非绑定端口,通常会让系统选取一个空闲的本地端口(local port),该端口是独占的,不能和其他tcp连接共享。tcp端口的数据类型是unsigned short,因此本地端口个数最大只有65536,端口0有特殊含义,不能使用,这样可用端口最多只有65535,所以在全部作为client端的情况下,一个client最大tcp连接数为65535,这些连接可以连到不同的serverip。

server最大tcp连接数

server通常固定在某个本地端口上监听,等待client的连接请求。不考虑地址重用(unix的SO_REUSEADDR选项)的情况下,即使server端有多个ip,本地监听端口也是独占的,因此server端tcp连接4元组中只有remoteip(也就是clientip)和remote port(客户端port)是可变的,因此最大tcp连接为客户端ip数×客户端port数,对IPV4,不考虑ip地址分类等因素,最大tcp连接数约为2的32次方(ip数)×2的16次方(port数),也就是server端单机最大tcp连接数约为2的48次方。

实际的tcp连接数

上面给出的是理论上的单机最大连接数,在实际环境中,受到机器资源、操作系统等的限制,特别是sever端,其最大并发tcp连接数远不能达到理论上限。在unix/linux下限制连接数的主要因素是内存和允许的文件描述符个数(每个tcp连接都要占用一定内存,每个socket就是一个文件描述符),另外1024以下的端口通常为保留端口。

所以,对server端,通过增加内存、修改最大文件描述符个数等参数,单机最大并发TCP连接数超过10万,甚至上百万是没问题的。

这明显是进入了思维的误区,65535是指可用的端口总数,并不代表服务器同时只能接受65535个并发连接。

举个例子:

我们做了一个网站,绑定的是TCP的80端口,结果是所有访问这个网站的用户都是通过服务器的80端口访问,而不是其他端口。可见端口是可以复用的。

image.png

即使Linux服务器只在80端口侦听服务, 也允许有10万、100万个用户连接服务器。Linux系统不会限制连接数至于服务器能不能承受住这么多的连接,取决于服务器的硬件配置、软件架构及优化。

01

我们知道两个进程如果需要进行通讯最基本的一个前提是:能够唯一的标示一个进程。在本地进程通讯中我们可以使用PID来唯一标示一个进程,但PID只在本地唯一,网络中的两个进程PID冲突几率很大。

这时候就需要另辟它径了,IP地址可以唯一标示主机,而TCP层协议和端口号可以唯一标示主机的一个进程,这样可以利用IP地址+协议+端口号唯一标示网络中的一个进程。

能够唯一标示网络中的进程后,它们就可以利用socket进行通信了。socket(套接字)是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用以实现进程在网络中通信。

image.png

socket源自Unix,是一种"打开—读/写—关闭"模式的实现,服务器和客户端各自维护一个"文件",在建立连接打开后,可以向自己文件写入内容供对方读取或者读取对方内容,通讯结束时关闭文件。

02

唯一能够确定一个连接有4个东西:

服务器的IP

服务器的Port

客户端的IP

客户端的Port

服务器的IP和Port可以保持不变,只要客户端的IP和Port彼此不同就可以确定一个连接数。

image.png

一个socket是可以建立多个连接的,一个TCP连接的标记为一个四元组(source_ip, source_port, destination_ip, destination_port),即(源IP,源端口,目的IP,目的端口)四个元素的组合。只要四个元素的组合中有一个元素不一样,那就可以区别不同的连接。

举个例子:

你的主机IP地址是1.1.1.1, 在8080端口监听

当一个来自 2.2.2.2 发来一条连接请求,端口为5555。这条连接的四元组为(1.1.1.1, 8080, 2.2.2.2, 5555)

这时2.2.2.2又发来第二条连接请求,端口为6666。新连接的四元组为(1.1.1.1, 8080, 2.2.2.2, 6666)

那么,你主机的8080端口建立了两条连接;

(2.2.2.2)发来的第三条连接请求,端口为5555(或6666)。第三条连接的请求就无法建立,因为没有办法区分于上面两条连接。

同理,可以在同一个端口号和IP地址上绑定一个TCP socket和一个UDP socket

因为端口号虽然一样,但由于协议不一样,所以端口是完全独立的。

TCP/UDP一般采用五元组来定位一个连接:

source_ip, source_port, destination_ip, destination_port, protocol_type

即(源IP,源端口,目的IP,目的端口,协议号)

综上所述,服务器的并发数并不是由TCP的65535个端口决定的。服务器同时能够承受的并发数是由带宽、硬件、程序设计等多方面因素决定的。

所以也就能理解淘宝、腾讯、头条、百度、新浪、哔哔哔哔等为什么能够承受住每秒种几亿次的并发访问,是因为他们采用的是服务器集群。服务器集群分布在全国各地的大型机房,当访问量小的时候会关闭一些服务器,当访问量大的时候回不断的开启新的服务器。

转载自 https://blog.csdn.net/daocaokafei/article/details/115410761

65535从哪来的,干啥的?

image.png

要解释好这个问题,就要先说清楚65535的含义。在Linux系统中,如果两个机器要通信,那么相互之间需要建立TCP连接,为了让双方互相认识,Linux系统用一个四元组来唯一标识一个TCP连接: {local ip, local port, remote ip, remote port},即本机IP、本机端口、远程IP、远程端口,IP和端口就相当于小区地址和门牌号,只有拿到这些信息,通信的双方才能互相认知。在Linux系统中,表示端口号(port)的变量占16位,这就决定了端口号最多有2的16次方个,即65536个,另外端口0有特殊含义不给使用,这样每个服务器最多就有65535个端口可用。因此,65535代表Linux系统支持的TCP端口号数量,在TCP建立连接时会使用。

TCP怎么建立连接,与端口号是什么关系?

Linux服务器在交互时,一般有两种身份:客户端或者服务器端。典型的交互场景是:

(1)服务器端主动创建监听的socket,并绑定对外服务端口port,然后开始监听

(2)客户端想跟服务器端通信时,就开始连接服务器的端口port

(3)服务端接受客户端的请求,然后再生成新的socket

(4)服务器和客户端在新的socket里进行通信

可以看到,端口port主要用在服务器和客户端的“握手认识”过程,一旦互相认识了,就会生成新的socket进行通信,这时候port就不再需要了,可以给别的socket通信去使用,所以很明显TCP连接的数量可以大于TCP端口号的数量65,535。

考虑一下两个极端场景,即某台Linux服务器只作为客户端或者服务器端

(1)Linux服务器只作为客户端

这时候每发起一个TCP请求,系统就会指定一个空闲的本地端口给你用,而且是独占式的,不会被别的TCP连接抢走,这样最多可以建立65535个连接,每个连接都与不同的服务器进行交互。这种场景,就是题主所描述的样子,但是由于条件过于苛刻,属于小概率事件,所以更多的还是理论上的可能,现实的环境中几乎不会出现。

(2)Linux服务器只作为服务端

这种场景下,服务端就会固定的监听本地端口port,等着客户端来向它发起请求。为了计算简单,我们假设服务器端的IP跟端口是多对一的,这样TCP四元组里面就有remote ip和remote port是可变的,因此最大支持创建TCP个数为2的32次方(IP地址是32位的)乘以2的16次方(port是16位的)等于2的48次方。

现实中单台Linux服务器支持的TCP连接数量

通过前面的分析我们知道,在现实场景中,由于存在端口port复用的情况,服务器可同时支持的TCP连接数跟65535没有一一对应关系,事实上,真正影响TCP连接数量的,是服务器的内存以及允许单一进程同时打开文件的数量,因为每创建一个TCP连接都要创建一个socket句柄,每个socket句柄都占用一部分系统内存,当系统内存被占用殆尽,允许的TCP并发连接数也就到了上限。一般来讲,通过增加服务器内存、修改最大文件描述符个数等,可以做到单台服务器支持10万+的TCP并发。

image.png

当然,在真实的商用场景下,单台服务器都会编入分布式集群,通过负载均衡算法动态的调度不同用户的请求给最空闲的服务器,如果服务器平均内存使用超过80%的警戒线,那么就会及时采用限流或者扩展集群的方式来保证服务,绝对不会出现服务器的内存被耗尽的情况,那样就算事故了。

总之,65535只是Linux系统中可使用端口port数量的上限,端口port数量与TCP连接数量并非完全一一对应的关系,服务器支持的TCP并发连接数量主要跟服务器的内存以及允许单个进程同时打开的文件数量有关系,通过端口复用及调整服务器参数等手段,单台服务器支持的TCP并发连接数是可以高于65535的。

原文链接:https://blog.csdn.net/daocaokafei/article/details/115410761?

责任编辑:
热门阅读排行
© 手表常识网