(AWS)如果没有足够的CPU,python脚本会怎样?

时间:2018-08-13 02:25:38

标签: python amazon-s3 amazon-ec2

我的小型AWS EC2实例运行两个python脚本,一个以Web套接字(〜2msg / ms)接收JSON消息并写入csv文件,另一个则压缩并上传csvs。经过测试,EC2实例记录的数据(〜2.4gb /天)比在我自己的计算机上记录的数据(〜5GB)要稀疏。监视显示EC2实例消耗了所有CPU信用,并且以基准电源运行。我的问题是,实例会因为无法足够快地写入消息而丢弃消息吗?

感谢任何能提供任何见解的人!

1 个答案:

答案 0 :(得分:1)

这取决于WebSocket服务器。

如果您的第一个脚本无法以足够快的速度运行以匹配服务器端的消息生成速度,则TCP接收缓冲区将变满,服务器将降低发送数据包的速度。假设邮件的生产率几乎恒定,未处理的邮件将堆积在服务器上,并且可以对服务器进行编码,以使其积累或最终丢弃。

即使服务器在没有足够的计算能力的情况下从不丢弃消息,您的实例也永远不会追赶-在8/15上它可能正在处理8/10的消息-因此需要实例升级。

数据速率在一天中是否有很大变化(例如,晚上20:00左右的高峰时段有更多消息)?如果是这样,则可能在此期间发生了数据丢失。

但是Python真的那么慢吗? 5GB /天小于每秒100KB,甚至一个现代CPU内核的一小部分也可以轻松处理它。也许您应该对脚本进行压力测试并对其进行优化(减少小磁盘写入等)