【问题标题】:(AWS) What happens to a python script without enough CPU?(AWS) 没有足够 CPU 的 python 脚本会发生什么?
【发布时间】:2018-08-13 02:25:38
【问题描述】:

我的小型 AWS EC2 实例运行两个 python 脚本,一个用于接收 JSON 消息作为 web-socket(~2msg/ms) 并写入 csv 文件,另一个用于压缩和上传 csv。经测试,EC2实例记录的数据(~2.4GB/天)比我自己的电脑(~5GB)要稀疏。监控显示 EC2 实例消耗了所有 CPU 积分并以基准功率运行。我的问题是,实例是否会因为写入速度不够快而丢弃消息?

感谢任何可以提供任何见解的人!

【问题讨论】:

  • 通常在 AWS 上,如果您的 CPU 积分用完,您应该更改实例类型。我建议使用 c5.large 来处理这种卷。根据我的经验,T2 实例的用处不大。你能指定数据的来源吗?
  • 数据来自 Coinbase pro/GDAX 的完整订单簿级别渠道,因此我相信每个发送到交易所的订单都应该被记录下来。

标签: python amazon-s3 amazon-ec2


【解决方案1】:

取决于 WebSocket 服务器。

如果您的第一个脚本无法以足够快的速度运行以匹配服务器端的消息生成速度,则 TCP 接收缓冲区将变满,服务器将在发送数据包时变慢。假设消息的产生率接近恒定,未处理的消息将堆积在服务器上,服务器可以通过编码让它们累积或最终丢弃。

即使服务器从未丢弃消息,如果没有足够的计算能力,您的实例也永远无法赶上 - 8/15 它可能正在处理来自 8/10 的消息 - 因此需要升级实例。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-28
    • 1970-01-01
    • 2018-05-30
    • 2013-12-16
    • 1970-01-01
    • 2017-08-25
    • 1970-01-01
    相关资源
    最近更新 更多