AWS EC2隐藏的Pocket Per Second限制

AWS EC2隐藏的Pocket Per Second限制

前言

AWS EC2除了网络带宽的限制,还有一种Pocket Per Second (PPS)限制。可能在你的网络达到带宽限制前先遇到PPS限制,影响作业和服务的稳定。

PPS超限分为2种:

pps_allowance_exceeded

正常通信的数据包超过限制。这种限制的阈值与EC2的规格相关,规格越高,阈值越高。遇到这种问题,通过可以通过scale up,调高EC2的规格得以解决。

linklocal_allowance_exceeded

访问如下3种服务产生的数据包超限。这种限制的阈值固定,与EC2的规格无关。遇到这种问题scale up并不解决问题,而是需要scale out,增加更多的EC2实例来解决。

DNS服务器

EC2 Metadata Service

时间服务器

之所以说他是隐藏的PPS限制,是因为具体阈值多少,AWS并没有公开,所以无法在文档中找到。你可以通过测试来测定这个阈值,如文章[2]所示;或者咨询AWS Support,当然需要签署NDA才会告诉你。

症状

在实际工作中,我们遇到的更多是linklocal_allowance_exceeded。我们在M5系列的机器上运行Flink作业,偶尔会遇到如下错误:

com.amazon.ws.emr.hadoop.fs.shaded.com.amazonaws.SdkClientException: Failed to connect to service endpoint

com.amazon.ws.emr.hadoop.fs.shaded.com.amazonaws.SdkClientException: Unable to load AWS credentials from any provider in the chain: [com.amazon.ws.emr.hadoop.fs.guice.UserGroupMappingAWSSessionCredentialsProvider@6c3af9bf: null, com.amazon.ws.emr.hadoop.fs.HadoopConfigurationAWSCredentialsProvider

java.net.UnknownHostException: {mybucket}.s3.{region}.amazonaws.com

建议

对于metadata service的访问限制,我们通过复用AmazonClient,而不是频繁的创建AmazonClient,来减少对metadata service的访问。以AmazonS3为例,我们创建一个单例实例在整个jvm共享,而不是每个s3文件创建一个新的AmazonS3。因为它访问S3会先访问EC2的metadata service获取相关的credential,这个credential在同一个client内部会缓存,直到快要过期;但如果频繁创建独立的client,必然会增加对EC2 metadata service的访问。

对DNS访问的频率,可以增加jvm DNS缓存的时间,来减少域名解析的频率。可以通过配置networkaddress.cache.ttl加以配置,通常默认为60秒。

Metadata Service

EC2 Metadata Service是一个只能从你的EC2内部访问的rest AWS服务,里面存储在这个EC2对应的元数据,例如机器名、IP地址、安全组、credential等等。

该服务以固定ip 169.254.169.254提供服务,每个EC2只能访问到该实例自己的信息,例如你可以从EC2内部运行如下命令,获取该EC2的IPv4的地址:

curl http://169.254.169.254/latest/meta-data/local-ipv4

通过如下命令可以获取该EC2绑定的IAM role所对应的credential:

curl http://169.254.169.254/latest/meta-data/identity-credentials/ec2/security-credentials/ec2-instance

更多metadata service可以参考[3]

参考

[1] https://aws.amazon.com/cn/blogs/networking-and-content-delivery/amazon-ec2-instance-level-network-performance-metrics-uncover-new-insights/

[2] https://www.bluematador.com/blog/how-many-packets-per-second-in-amazon-ec2

[3] https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html

相关推荐

西德靠吃药两夺世界杯 美职棒揪出13个“药娃”
轻松学会:Windows 7系统下路由器设置全攻略,告别网络烦恼!
荨的意思,荨的解释,荨的拼音,荨的部首,荨的笔顺
为什么叫横店(案例分析:横店发展来历与分析)
重庆啤酒梁平公司乐堡啤酒生产线正式投产
沵的解释
365bet扑克客户端

沵的解释

📅 09-24 👁️ 8155
在线组词
365bet中文版

在线组词

📅 01-26 👁️ 5462
金毛好训练吗怎样训练金毛狗(金毛训练的正确方法你知道吗)
梦幻西游系列角色总数是多少?每个系列角色的特点是什么?