-
Notifications
You must be signed in to change notification settings - Fork 61
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Kafka Producer metrics 有時會出現 NaN 的統計值 #598
Comments
@chinghongfang 可否將你遇到的狀況再多描述一點? |
現在的版本沒有觀察到 NaN 的 request-latency-avg 了。在 #599 之後,便不容易出現 request-latency-avg NaN 的情況了,當時沒有注意到,沒關掉這個議題,不好意思... 另外,現在的 StrictCostDispatcher 流量震盪不是因為 jmx metric 的數值會出現 NaN,(在跑實驗期間,觀察 jmc 上的 request-latency-avg 都沒有出現 NaN),以下環境以及附上流量結果 Topic partition allocation
各 server 執行軟體
broker 1001, 1002 都維持在較高的水平上,但是 broker 1003 卻有時衝高,變動極大。 |
有機會先排除是不是 監控造成的嗎?例如把監控移到其他節點再跑跑看 |
原因在於使用 StrictCostDispatcher 時,會把 record 都發送到同一台 broker 上。如果 record 都沒有發送到某一台 broker 上(約一分鐘),該 broker 的 record 都不發送到某一台 broker 的原因有點複雜,流程放在最下面。主要原因是
流程
|
感謝分析,這段看起來是重點,就算是評分很差的節點,理論上應該也要塞一些些資料給它?我印象中現在應該是用機率來處理?也就是評分差只是拿到資料的機率變很低,應該不至於都拿不到? |
現在是使用 Smooth Round Robin,這裏,用這個方法,且傳進去的分數是 0 的話,那就不會選到了。或許最低分不要是零,這樣就不會完全選不到。 |
好發現,這是一個關鍵重點!你覺得可以怎麼修正?確保用來做 smooth 的分數不可以為 0 ? 或是從演算法著手避免這種奇怪的運算結果(0分也要有人權) |
@wycccccc 我記得你也有提過這個現象?
我是在想這個演算法設計的時候有考慮過 <= 0 的值嗎?如果 <= 0 會造成該物件永遠不會被選上,就使用上來說“很奇怪“,因為這是一個很特殊的狀況,例如從一致性來看,就不會出現某個分數導致某個物件”永遠都被選上“,簡單來說,我覺得設計上應該要排除 <= 0 這種永遠都不會被選上的狀況,因為我們也不會預期某個物件永遠都被選上,設計上可以直接丟出例外來確保我們不會再遇到這種詭異的結果 |
我對於smooth權重的計算是用 上一次的權重*這次的偏移量,所以永遠不會變爲0。不過我爲了讓偏移量不計算出0,所以用了類似於此的方法。
確實在實務上很奇怪,如果想表達0,應該選擇讓參數趨近於0而不是0。丟出例外加寫個註解告訴以後使用的人我認爲就可以了。 |
+1
先用平移的方式處理吧!然後在 smooth 上增加檢查不合法的初始值 |
@chinghongfang 後來有更新嗎 |
那我之後再開一隻 PR 處理,並在 PR 內附上實驗數據。 |
使用performance tool 打/消費 資料時,producer 紀錄的
producer.node.metrics
其中一個 node ,中的 request-avg-latency 是 NaN。The text was updated successfully, but these errors were encountered: