我们有许多c4.large
ecs 实例,每个实例都有一个正在运行的 docker 容器,其中运行着 celery 工作线程。我们时不时地看到工人被系统杀死
WorkerLostError('Worker exited prematurely: signal 9 (SIGKILL).',)
Run Code Online (Sandbox Code Playgroud)
我dmesg
可以看到以下行:
Memory cgroup out of memory: Kill process 27886 (celery) score 112 or sacrifice child
Run Code Online (Sandbox Code Playgroud)
据我了解 OOM 对此负责
但我也可以在以下位置看到这一行dmesg
:
memory: usage 964544kB, limit 1048576kB, failcnt 246284
Run Code Online (Sandbox Code Playgroud)
其中说有 1 GB 的限制,但我不明白这个限制的原因是什么,因为free -m
说
total used free shared buffers cached
Mem: 3768 3461 307 0 140 2211
-/+ buffers/cache: 1108 2659
Swap: 0 0 0
Run Code Online (Sandbox Code Playgroud)
另一个重要的一点是,我们有一个普通的 ec2c4.large
实例,其中我们有 celery 运行相同数量的工作人员(甚至更多),但没有 docker,并且我们从未在该实例上看到此问题。所以我想这可能是一些消耗内存的docker开销,但也许我错过了一些东西?
谢谢
我不确定这是一个错误还是一个功能,但我真的很想了解它是如何工作的。
我有一个非常简单的数据集
In [0]: data
Out[0]:
group value data
0 A 1 1
1 A 2 1
2 B 3 1
3 B 4 1
Run Code Online (Sandbox Code Playgroud)
然后我有一些转变:
In [1]: data.groupby('group').transform('rank')
Out[1]:
value data
0 1.0 1.5
1 2.0 1.5
2 1.0 1.5
3 2.0 1.5
In [2]: data.groupby('group').value.transform('rank')
Out[2]:
0 1
1 1
2 2
3 2
In [3]: data.groupby('group').data.transform('rank')
Out[3]:
0 1.5
1 1.5
2 1.5
3 1.5
In [4]: data.groupby('group').transform('rank').value
Out[4]:
0 1.0
1 2.0
2 1.0
3 2.0 …
Run Code Online (Sandbox Code Playgroud) 我试图找出在Dataproc上运行Apache Flink并将Google Pub / Sub用作源/接收器的正确方法。当我创建Dataproc集群时,将flink初始化操作应用于最新的映像1.4之后,将安装Flink 1.6.4。
问题是flink-connector-gcp-pubsub仅从Flink 1.9.0版开始可用。
所以我的问题是将所有这些结合使用的正确方法是什么?我应该使用最新的Flink构建自己的gce映像吗?已经有一个了吗?
google-cloud-platform google-cloud-pubsub apache-flink google-cloud-dataproc flink-streaming