[英]Why use Thread.sleep in flink decrease performance obviously?
我們在比較storm和flink。 我們所做的是開發風暴拓撲邏輯到 flink 應用程序。 在storm topologybolt中有使用Thread.sleep(100),但是在flink app中使用時,flink app性能不好。 這是我們使用 Flink 並行度 80 的測試結果:
使用來自 kafka 的 161073 數據並在下一個任務中計算我們的業務邏輯,並將最后一個 sink 結果保存到文件中。 在 Compute 和 Redis 任務中使用 Thread.sleep(100) 時,大約需要 4 分鍾。 但是如果我們不使用 Thread.sleep(100),它只需要 6 秒。
我認為這主要是由於背壓
背壓會導致上游處理中斷,等待下游算子消費
欲了解更多信息,請參閱
https://nightlies.apache.org/flink/flink-docs-release-1.14/docs/ops/monitoring/back_pressure/
我想知道Thread.sleep(100)
位於哪里? 如果它發生在處理數據的 function 中,那是有道理的。 每次處理記錄時都會調用Thread.sleep(100)
。 由於總共有 161073 條記錄,所以總的休眠時間是 161073 / 80 * 100 / 1000 = 201.3 秒,大約是 4 分鍾。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.